CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Feb 3 12:13:33 UTC 2024 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_type.h ixv.c Log Message: Pull up the following, requested by msaitoh in ticket #1792: sys/dev/pci/ixgbe/ix_txrx.c 1.105-1.116 via patch sys/dev/pci/ixgbe/ixgbe.c 1.345-1.346,1.349 via patch sys/dev/pci/ixgbe/ixgbe.h 1.94-1.98 sys/dev/pci/ixgbe/ixgbe_type.h 1.62 sys/dev/pci/ixgbe/ixv.c 1.193,1.195-1.196 - Clear the WTHRESH bit field before writing it. - Optimize ixgbe_txeof(). - Use kmem_zalloc() instead of malloc(,M_ZERO). - Add QPRDC(Queue Packet Receive Drop Count) into iqdrops. - No functional change - Move assignment of TXD. - ixv(4): Remove unused IFF_OACTIVE. - Don't include the Flow Director related members to reduce the size of struct tx_ring. On amd64 and aarch64, the real size is not changed because of the alignment. - The descriptor ring size and the alignment are tested in the attach function, so it's not required to use roundup2(size, DBA_ALIGN). - Use #ifdef LRO more to reduce the size of struct rx_ring. - Change "me" from 32bit to 8bit because the max is 128. This commit doesn't change the real size of ix_queue, tx_ring and rx_ring because of the alignment. - Th RSC (hardware receive side coalescing) feature has been disabled all along, so enclose the code with #ifdef RSC. - Remove unused. - Modify for the readability. - Modify comment. - Fix comment. Whitespace. To generate a diff of this commit: cvs rdiff -u -r1.54.2.14 -r1.54.2.15 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.29 -r1.199.2.30 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.12 -r1.56.2.13 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.41.2.11 -r1.41.2.12 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.125.2.24 -r1.125.2.25 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.14 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.15 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.14 Wed Oct 18 14:05:27 2023 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Sat Feb 3 12:13:32 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.14 2023/10/18 14:05:27 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.15 2024/02/03 12:13:32 martin Exp $ */ /** @@ -64,13 +64,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.14 2023/10/18 14:05:27 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.15 2024/02/03 12:13:32 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" #include "ixgbe.h" +#ifdef RSC /* * HW RSC control: * this feature only works with @@ -84,7 +85,9 @@ __KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v * to enable. */ static bool ixgbe_rsc_enable = FALSE; +#endif +#ifdef IXGBE_FDIR /* * For Flow Director: this is the * number of TX packets we sample @@ -95,6 +98,7 @@ static bool ixgbe_rsc_enable = FALSE; * setting this to 0. */ static int atr_sample_rate = 20; +#endif #define IXGBE_M_ADJ(sc, rxr, mp) \ if (sc->max_frame_size <= (rxr->mbuf_sz - ETHER_ALIGN)) \ @@ -122,8 +126,9 @@ static __inline void ixgbe_rx_input(stru static int ixgbe_dma_malloc(struct ixgbe_softc *, bus_size_t, struct ixgbe_dma_alloc *, int); static void ixgbe_dma_free(struct ixgbe_softc *, struct ixgbe_dma_alloc *); - -static void ixgbe_setup_hw_rsc(struct rx_ring *); +#ifdef RSC +static void ixgbe_setup_hw_rsc(struct rx_ring *); +#endif / * ixgbe_legacy_start_locked - Transmit entry point @@ -406,7 +411,7 @@ ixgbe_drain_all(struct ixgbe_softc *sc) static int ixgbe_xmit(struct tx_ring *txr, struct mbuf *m_head) { - struct ixgbe_softc *sc = txr->sc; + struct ixgbe_softc *sc = txr->sc; struct ixgbe_tx_buf *txbuf; union ixgbe_adv_tx_desc *txd = NULL; struct ifnet *ifp = sc->ifp; @@ -487,8 +492,8 @@ retry: } /* - * Set up the appropriate offload context - * this will consume the first descriptor + * Set up the appropriate offload context if requested, + * this may consume one TX descriptor. */ error = ixgbe_tx_ctx_setup(txr, m_head, &cmd_type_len, &olinfo_status); if (__predict_false(error)) { @@ -625,14 +630,8 @@ ixgbe_allocate_transmit_buffers(struct t goto fail; } - txr->tx_buffers = - (struct ixgbe_tx_buf *) malloc(sizeof(struct ixgbe_tx_buf) * - sc->num_tx_desc, M_DEVBUF, M_NOWAIT | M_ZERO); - if (txr->tx_buffers == NULL) { - aprint_error_de
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Feb 3 12:13:33 UTC 2024 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_type.h ixv.c Log Message: Pull up the following, requested by msaitoh in ticket #1792: sys/dev/pci/ixgbe/ix_txrx.c 1.105-1.116 via patch sys/dev/pci/ixgbe/ixgbe.c 1.345-1.346,1.349 via patch sys/dev/pci/ixgbe/ixgbe.h 1.94-1.98 sys/dev/pci/ixgbe/ixgbe_type.h 1.62 sys/dev/pci/ixgbe/ixv.c 1.193,1.195-1.196 - Clear the WTHRESH bit field before writing it. - Optimize ixgbe_txeof(). - Use kmem_zalloc() instead of malloc(,M_ZERO). - Add QPRDC(Queue Packet Receive Drop Count) into iqdrops. - No functional change - Move assignment of TXD. - ixv(4): Remove unused IFF_OACTIVE. - Don't include the Flow Director related members to reduce the size of struct tx_ring. On amd64 and aarch64, the real size is not changed because of the alignment. - The descriptor ring size and the alignment are tested in the attach function, so it's not required to use roundup2(size, DBA_ALIGN). - Use #ifdef LRO more to reduce the size of struct rx_ring. - Change "me" from 32bit to 8bit because the max is 128. This commit doesn't change the real size of ix_queue, tx_ring and rx_ring because of the alignment. - Th RSC (hardware receive side coalescing) feature has been disabled all along, so enclose the code with #ifdef RSC. - Remove unused. - Modify for the readability. - Modify comment. - Fix comment. Whitespace. To generate a diff of this commit: cvs rdiff -u -r1.54.2.14 -r1.54.2.15 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.29 -r1.199.2.30 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.12 -r1.56.2.13 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.41.2.11 -r1.41.2.12 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.125.2.24 -r1.125.2.25 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Wed Oct 18 14:05:28 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_82599.c ixgbe_api.c ixgbe_bypass.h ixgbe_common.c ixgbe_common.h ixgbe_dcb.c ixgbe_dcb_82598.c ixgbe_type.h ixgbe_x540.c ixgbe_x550.c ixv.c Log Message: Pull up the following, requested by msaitoh in ticket #1753: sys/dev/pci/ixgbe/ix_txrx.c 1.103-1.104 sys/dev/pci/ixgbe/ixgbe.c 1.334-1.338, 1.341-1.344 via patch sys/dev/pci/ixgbe/ixgbe.h 1.90-1.93 sys/dev/pci/ixgbe/ixgbe_82599.c 1.31-1.32 sys/dev/pci/ixgbe/ixgbe_api.c 1.29 sys/dev/pci/ixgbe/ixgbe_bypass.h1.5 sys/dev/pci/ixgbe/ixgbe_common.c1.46-1.47 sys/dev/pci/ixgbe/ixgbe_common.h1.18 sys/dev/pci/ixgbe/ixgbe_dcb.c 1.14-1.15 sys/dev/pci/ixgbe/ixgbe_dcb_82598.c 1.13 sys/dev/pci/ixgbe/ixgbe_type.h 1.59-1.61 sys/dev/pci/ixgbe/ixgbe_x540.c 1.24 sys/dev/pci/ixgbe/ixgbe_x550.c 1.28 sys/dev/pci/ixgbe/ixv.c 1.187-1.192 - ixg(4): Add 82599 LS support once again. - ixg(4): Filter out spurious link up indication more. - ixg(4): Print DEVICE_CAPS register. - ixg(4): Fix a bug that the number of queues is unintentionally limited to a small number or wrong error message may be printed when two devices' number of MSI-X vectors are different. - Modify error message of wrong TX/RX descriptor size. - Enable interrupt after setting IFF_RUNNING. - Fix a bug that changing hw.ix[gv]X.qY.interrupt_rate would change all devices all queues default interrupt rate. - Cleanup the code. To generate a diff of this commit: cvs rdiff -u -r1.54.2.13 -r1.54.2.14 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.28 -r1.199.2.29 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.11 -r1.56.2.12 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.21.4.5 -r1.21.4.6 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.23.2.4 -r1.23.2.5 src/sys/dev/pci/ixgbe/ixgbe_api.c cvs rdiff -u -r1.1.14.3 -r1.1.14.4 src/sys/dev/pci/ixgbe/ixgbe_bypass.h cvs rdiff -u -r1.25.2.8 -r1.25.2.9 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.14.2.2 -r1.14.2.3 src/sys/dev/pci/ixgbe/ixgbe_common.h cvs rdiff -u -r1.9.4.2 -r1.9.4.3 src/sys/dev/pci/ixgbe/ixgbe_dcb.c cvs rdiff -u -r1.7.8.2 -r1.7.8.3 src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c cvs rdiff -u -r1.41.2.10 -r1.41.2.11 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.16.8.4 -r1.16.8.5 src/sys/dev/pci/ixgbe/ixgbe_x540.c cvs rdiff -u -r1.15.2.7 -r1.15.2.8 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.125.2.23 -r1.125.2.24 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Wed Oct 18 14:05:28 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_82599.c ixgbe_api.c ixgbe_bypass.h ixgbe_common.c ixgbe_common.h ixgbe_dcb.c ixgbe_dcb_82598.c ixgbe_type.h ixgbe_x540.c ixgbe_x550.c ixv.c Log Message: Pull up the following, requested by msaitoh in ticket #1753: sys/dev/pci/ixgbe/ix_txrx.c 1.103-1.104 sys/dev/pci/ixgbe/ixgbe.c 1.334-1.338, 1.341-1.344 via patch sys/dev/pci/ixgbe/ixgbe.h 1.90-1.93 sys/dev/pci/ixgbe/ixgbe_82599.c 1.31-1.32 sys/dev/pci/ixgbe/ixgbe_api.c 1.29 sys/dev/pci/ixgbe/ixgbe_bypass.h1.5 sys/dev/pci/ixgbe/ixgbe_common.c1.46-1.47 sys/dev/pci/ixgbe/ixgbe_common.h1.18 sys/dev/pci/ixgbe/ixgbe_dcb.c 1.14-1.15 sys/dev/pci/ixgbe/ixgbe_dcb_82598.c 1.13 sys/dev/pci/ixgbe/ixgbe_type.h 1.59-1.61 sys/dev/pci/ixgbe/ixgbe_x540.c 1.24 sys/dev/pci/ixgbe/ixgbe_x550.c 1.28 sys/dev/pci/ixgbe/ixv.c 1.187-1.192 - ixg(4): Add 82599 LS support once again. - ixg(4): Filter out spurious link up indication more. - ixg(4): Print DEVICE_CAPS register. - ixg(4): Fix a bug that the number of queues is unintentionally limited to a small number or wrong error message may be printed when two devices' number of MSI-X vectors are different. - Modify error message of wrong TX/RX descriptor size. - Enable interrupt after setting IFF_RUNNING. - Fix a bug that changing hw.ix[gv]X.qY.interrupt_rate would change all devices all queues default interrupt rate. - Cleanup the code. To generate a diff of this commit: cvs rdiff -u -r1.54.2.13 -r1.54.2.14 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.28 -r1.199.2.29 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.11 -r1.56.2.12 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.21.4.5 -r1.21.4.6 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.23.2.4 -r1.23.2.5 src/sys/dev/pci/ixgbe/ixgbe_api.c cvs rdiff -u -r1.1.14.3 -r1.1.14.4 src/sys/dev/pci/ixgbe/ixgbe_bypass.h cvs rdiff -u -r1.25.2.8 -r1.25.2.9 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.14.2.2 -r1.14.2.3 src/sys/dev/pci/ixgbe/ixgbe_common.h cvs rdiff -u -r1.9.4.2 -r1.9.4.3 src/sys/dev/pci/ixgbe/ixgbe_dcb.c cvs rdiff -u -r1.7.8.2 -r1.7.8.3 src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c cvs rdiff -u -r1.41.2.10 -r1.41.2.11 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.16.8.4 -r1.16.8.5 src/sys/dev/pci/ixgbe/ixgbe_x540.c cvs rdiff -u -r1.15.2.7 -r1.15.2.8 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.125.2.23 -r1.125.2.24 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.13 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.14 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.13 Fri Oct 13 18:20:30 2023 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Wed Oct 18 14:05:27 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.13 2023/10/13 18:20:30 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.14 2023/10/18 14:05:27 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.13 2023/10/13 18:20:30 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.14 2023/10/18 14:05:27 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -846,7 +846,6 @@ ixgbe_tx_ctx_setup(struct tx_ring *txr, u8 ipproto = 0; char *l3d; - /* First check if TSO is to be used */ if (mp->m_pkthdr.csum_flags & (M_CSUM_TSOv4 | M_CSUM_TSOv6)) { int rv = ixgbe_tso_setup(txr, mp, cmd_type_len, olinfo_status); @@ -1282,9 +1281,9 @@ ixgbe_rsc_count(union ixgbe_adv_rx_desc static void ixgbe_setup_hw_rsc(struct rx_ring *rxr) { - struct ixgbe_softc *sc = rxr->sc; - struct ixgbe_hw *hw = &sc->hw; - u32 rscctrl, rdrxctl; + struct ixgbe_softc *sc = rxr->sc; + struct ixgbe_hw *hw = &sc->hw; + u32 rscctrl, rdrxctl; /* If turning LRO/RSC off we need to disable it */ if ((sc->ifp->if_capenable & IFCAP_LRO) == 0) { @@ -1746,9 +1745,9 @@ ixgbe_rx_input(struct rx_ring *rxr, stru (CSUM_DATA_VALID | CSUM_PSEUDO_HDR)) { /* * Send to the stack if: - ** - LRO not enabled, or - ** - no LRO resources, or - ** - lro enqueue fails + * - LRO not enabled, or +
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Fri Oct 13 18:20:30 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: if_bypass.c if_fdir.c if_sriov.c ix_txrx.c ixgbe.c ixgbe.h ixgbe_api.h ixgbe_bypass.h ixgbe_common.c ixgbe_common.h ixgbe_fdir.h ixgbe_netmap.c ixgbe_netmap.h ixgbe_osdep.c ixgbe_sriov.h ixgbe_type.h ixgbe_x550.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1749): sys/dev/pci/ixgbe/if_bypass.c 1.10 sys/dev/pci/ixgbe/if_fdir.c 1.6 via patch sys/dev/pci/ixgbe/if_sriov.c1.18 via patch sys/dev/pci/ixgbe/ix_txrx.c 1.102 via patch sys/dev/pci/ixgbe/ixgbe.c 1.333,1.339 via patch sys/dev/pci/ixgbe/ixgbe.h 1.89 sys/dev/pci/ixgbe/ixgbe_api.h 1.17 sys/dev/pci/ixgbe/ixgbe_common.h1.17 sys/dev/pci/ixgbe/ixgbe_bypass.h1.4 sys/dev/pci/ixgbe/ixgbe_common.c1.45 sys/dev/pci/ixgbe/ixgbe_fdir.h 1.5 sys/dev/pci/ixgbe/ixgbe_netmap.h1.3 sys/dev/pci/ixgbe/ixgbe_netmap.c1.6 sys/dev/pci/ixgbe/ixgbe_osdep.c 1.9 sys/dev/pci/ixgbe/ixgbe_sriov.h 1.6 sys/dev/pci/ixgbe/ixgbe_type.h 1.58 sys/dev/pci/ixgbe/ixgbe_x550.c 1.27 sys/dev/pci/ixgbe/ixv.c 1.186 via patch ixgbe: Rename some definitions, modify comment. No functional change. Apply changes from FreeBSD's ix-3.3.31 and ixv-1.5.32. - struct adapter *adapter -> struct ixgbe_softc *sc - master -> primary - black -> block ixg(4): Whitespace. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.4.8.3 -r1.4.8.4 src/sys/dev/pci/ixgbe/if_bypass.c cvs rdiff -u -r1.2.8.1 -r1.2.8.2 src/sys/dev/pci/ixgbe/if_fdir.c cvs rdiff -u -r1.6.2.3 -r1.6.2.4 src/sys/dev/pci/ixgbe/if_sriov.c cvs rdiff -u -r1.54.2.12 -r1.54.2.13 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.27 -r1.199.2.28 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.10 -r1.56.2.11 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.15.2.1 -r1.15.2.2 src/sys/dev/pci/ixgbe/ixgbe_api.h cvs rdiff -u -r1.1.14.2 -r1.1.14.3 src/sys/dev/pci/ixgbe/ixgbe_bypass.h cvs rdiff -u -r1.25.2.7 -r1.25.2.8 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.14.2.1 -r1.14.2.2 src/sys/dev/pci/ixgbe/ixgbe_common.h cvs rdiff -u -r1.2.8.2 -r1.2.8.3 src/sys/dev/pci/ixgbe/ixgbe_fdir.h cvs rdiff -u -r1.2.2.2 -r1.2.2.3 src/sys/dev/pci/ixgbe/ixgbe_netmap.c cvs rdiff -u -r1.1.14.1 -r1.1.14.2 src/sys/dev/pci/ixgbe/ixgbe_netmap.h cvs rdiff -u -r1.4.8.4 -r1.4.8.5 src/sys/dev/pci/ixgbe/ixgbe_osdep.c cvs rdiff -u -r1.3.8.2 -r1.3.8.3 src/sys/dev/pci/ixgbe/ixgbe_sriov.h cvs rdiff -u -r1.41.2.9 -r1.41.2.10 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.15.2.6 -r1.15.2.7 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.125.2.22 -r1.125.2.23 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Oct 8 15:13:10 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_82599.c ixgbe_mbx.h ixgbe_type.h ixgbe_vf.c ixgbe_vf.h ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1745): sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.30 sys/dev/pci/ixgbe/ixv.c: revision 1.184 sys/dev/pci/ixgbe/ixv.c: revision 1.185 sys/dev/pci/ixgbe/ixgbe_vf.c: revision 1.32 sys/dev/pci/ixgbe/ixgbe_vf.c: revision 1.33 sys/dev/pci/ixgbe/ixgbe.h: revision 1.87 sys/dev/pci/ixgbe/ixgbe.h: revision 1.88 sys/dev/pci/ixgbe/ixgbe.c: revision 1.330 sys/dev/pci/ixgbe/ixgbe.c: revision 1.331 sys/dev/pci/ixgbe/ixgbe.c: revision 1.332 sys/dev/pci/ixgbe/ixgbe_vf.h: revision 1.18 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.101 sys/dev/pci/ixgbe/ixgbe_type.h: revision 1.57 sys/dev/pci/ixgbe/ixgbe_mbx.h: revision 1.20 sys/dev/pci/ixgbe/ixgbe.c: revision 1.327 sys/dev/pci/ixgbe/ixgbe.c: revision 1.328 sys/dev/pci/ixgbe/ixgbe.c: revision 1.329 ixgbe: Reorder some event counters for readability. ixg(4): Rename some descriptions of event counters. - Rename some descriptions from register name to the meaning. - For the same meaning's counters, add "(soft)" or "(reg)". The former is for a software level counter and the latter is for a statistics counter register based. ixg(4): Count Queue Bytes {Transmit, Receive} counter. ixg(4): Reorder some flow control related event counters for readability. ixg(4): Rename some descriptions of flow control related event conters. Remove obsolete comment. ixgbe: Fix typo in comment. No functional change. ixv(4): Improve error check. ixgbe_vf.c rev. 1.31 changed the behavior of the ixgbe_check_mac_link_vf() function. It was from FreeBSD's ixv-1.5.25 to resolve mailbox collision problem. The change had a problem that error checks have not done at all if the API version >= 1.5. Fix it. From FreeBSD ixv-1.5.27. ixv(4): Add new IXGBE_VF_GET_LINK_STATE message support. PF can control vf's link state by this change. Note that Linux's PF driver can't control the link to force up (i.e. ip link set XXX vf Y state enable). >From FreeBSD ixv-1.5.30. ixg(4): Update FCTRL after writing multicast filter. Same as other OSes. From FreeBSD 395cc55d896654b8f75071e71e856b22aed87da5. To generate a diff of this commit: cvs rdiff -u -r1.54.2.11 -r1.54.2.12 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.26 -r1.199.2.27 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.9 -r1.56.2.10 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.21.4.4 -r1.21.4.5 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.14.2.2 -r1.14.2.3 src/sys/dev/pci/ixgbe/ixgbe_mbx.h cvs rdiff -u -r1.41.2.8 -r1.41.2.9 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.18.2.6 -r1.18.2.7 src/sys/dev/pci/ixgbe/ixgbe_vf.c cvs rdiff -u -r1.13.8.3 -r1.13.8.4 src/sys/dev/pci/ixgbe/ixgbe_vf.h cvs rdiff -u -r1.125.2.21 -r1.125.2.22 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.11 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.12 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.11 Mon Jan 23 14:04:42 2023 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Sun Oct 8 15:13:09 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.11 2023/01/23 14:04:42 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.12 2023/10/08 15:13:09 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.11 2023/01/23 14:04:42 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.12 2023/10/08 15:13:09 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -1341,11 +1341,6 @@ ixgbe_setup_hw_rsc(struct rx_ring *rxr) * exhaustion are unnecessary, if an mbuf cannot be obtained * it just returns, keeping its placeholder, thus it can simply * be recalled to try again. - * - * XXX NetBSD TODO: - *- The ixgbe_rxeof() function always preallocates mbuf cluster, - * so the ixgbe_refresh_mbufs() function can be simplified. - * / static void ixgbe_refresh_mbufs(struct rx_ring *rxr, int limit) Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.26 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.27 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.26 Wed Jun 21 19:20:50 2023 +++ src/sys/dev/pci/ixgbe/ixgbe.c Sun Oct 8 15:13:09 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.26 2023/06/21 19:20:50 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.27 2023/10/08 15:13:09 martin Exp $
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Oct 8 15:13:10 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_82599.c ixgbe_mbx.h ixgbe_type.h ixgbe_vf.c ixgbe_vf.h ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1745): sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.30 sys/dev/pci/ixgbe/ixv.c: revision 1.184 sys/dev/pci/ixgbe/ixv.c: revision 1.185 sys/dev/pci/ixgbe/ixgbe_vf.c: revision 1.32 sys/dev/pci/ixgbe/ixgbe_vf.c: revision 1.33 sys/dev/pci/ixgbe/ixgbe.h: revision 1.87 sys/dev/pci/ixgbe/ixgbe.h: revision 1.88 sys/dev/pci/ixgbe/ixgbe.c: revision 1.330 sys/dev/pci/ixgbe/ixgbe.c: revision 1.331 sys/dev/pci/ixgbe/ixgbe.c: revision 1.332 sys/dev/pci/ixgbe/ixgbe_vf.h: revision 1.18 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.101 sys/dev/pci/ixgbe/ixgbe_type.h: revision 1.57 sys/dev/pci/ixgbe/ixgbe_mbx.h: revision 1.20 sys/dev/pci/ixgbe/ixgbe.c: revision 1.327 sys/dev/pci/ixgbe/ixgbe.c: revision 1.328 sys/dev/pci/ixgbe/ixgbe.c: revision 1.329 ixgbe: Reorder some event counters for readability. ixg(4): Rename some descriptions of event counters. - Rename some descriptions from register name to the meaning. - For the same meaning's counters, add "(soft)" or "(reg)". The former is for a software level counter and the latter is for a statistics counter register based. ixg(4): Count Queue Bytes {Transmit, Receive} counter. ixg(4): Reorder some flow control related event counters for readability. ixg(4): Rename some descriptions of flow control related event conters. Remove obsolete comment. ixgbe: Fix typo in comment. No functional change. ixv(4): Improve error check. ixgbe_vf.c rev. 1.31 changed the behavior of the ixgbe_check_mac_link_vf() function. It was from FreeBSD's ixv-1.5.25 to resolve mailbox collision problem. The change had a problem that error checks have not done at all if the API version >= 1.5. Fix it. From FreeBSD ixv-1.5.27. ixv(4): Add new IXGBE_VF_GET_LINK_STATE message support. PF can control vf's link state by this change. Note that Linux's PF driver can't control the link to force up (i.e. ip link set XXX vf Y state enable). >From FreeBSD ixv-1.5.30. ixg(4): Update FCTRL after writing multicast filter. Same as other OSes. From FreeBSD 395cc55d896654b8f75071e71e856b22aed87da5. To generate a diff of this commit: cvs rdiff -u -r1.54.2.11 -r1.54.2.12 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.26 -r1.199.2.27 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.9 -r1.56.2.10 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.21.4.4 -r1.21.4.5 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.14.2.2 -r1.14.2.3 src/sys/dev/pci/ixgbe/ixgbe_mbx.h cvs rdiff -u -r1.41.2.8 -r1.41.2.9 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.18.2.6 -r1.18.2.7 src/sys/dev/pci/ixgbe/ixgbe_vf.c cvs rdiff -u -r1.13.8.3 -r1.13.8.4 src/sys/dev/pci/ixgbe/ixgbe_vf.h cvs rdiff -u -r1.125.2.21 -r1.125.2.22 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Wed Jun 21 19:20:51 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixgbe_common.c ixgbe_type.h Log Message: Pull up the following revisions, requested by msaitoh in ticket #1647: sys/dev/pci/ixgbe/ixgbe.c 1.325-1.326 via patch sys/dev/pci/ixgbe/ixgbe_common.c1.44 sys/dev/pci/ixgbe/ixgbe_type.h 1.56 - PCI device ID 0x15c8 also uses X557-AT PHY, so create the thermal sensor sysctl for it, too. - Count the number of link down events in the MAC using with LINK_DN_CNT register. To generate a diff of this commit: cvs rdiff -u -r1.199.2.25 -r1.199.2.26 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.25.2.6 -r1.25.2.7 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.41.2.7 -r1.41.2.8 src/sys/dev/pci/ixgbe/ixgbe_type.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.25 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.26 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.25 Mon Jan 23 14:04:42 2023 +++ src/sys/dev/pci/ixgbe/ixgbe.c Wed Jun 21 19:20:50 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.25 2023/01/23 14:04:42 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.26 2023/06/21 19:20:50 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.25 2023/01/23 14:04:42 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.26 2023/06/21 19:20:50 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1635,6 +1635,8 @@ ixgbe_update_stats_counters(struct adapt IXGBE_EVC_REGADD(hw, stats, IXGBE_MLFC, mlfc); IXGBE_EVC_REGADD(hw, stats, IXGBE_MRFC, mrfc); } + if (hw->mac.type == ixgbe_mac_X550EM_a) + IXGBE_EVC_REGADD(hw, stats, IXGBE_LINK_DN_CNT, link_dn_cnt); IXGBE_EVC_REGADD2(hw, stats, IXGBE_RLEC, rlec); /* Hardware workaround, gprc counts missed packets */ @@ -1985,6 +1987,9 @@ ixgbe_add_hw_stats(struct adapter *adapt stats->namebuf, "MAC Local Faults"); evcnt_attach_dynamic(&stats->mrfc, EVCNT_TYPE_MISC, NULL, stats->namebuf, "MAC Remote Faults"); + if (hw->mac.type == ixgbe_mac_X550EM_a) + evcnt_attach_dynamic(&stats->link_dn_cnt, EVCNT_TYPE_MISC, + NULL, stats->namebuf, "Link down event in the MAC"); evcnt_attach_dynamic(&stats->rlec, EVCNT_TYPE_MISC, NULL, stats->namebuf, "Receive Length Errors"); evcnt_attach_dynamic(&stats->lxontxc, EVCNT_TYPE_MISC, NULL, @@ -2153,6 +2158,8 @@ ixgbe_clear_evcnt(struct adapter *adapte IXGBE_EVC_STORE(&stats->mpctotal, 0); IXGBE_EVC_STORE(&stats->mlfc, 0); IXGBE_EVC_STORE(&stats->mrfc, 0); + if (hw->mac.type == ixgbe_mac_X550EM_a) + IXGBE_EVC_STORE(&stats->link_dn_cnt, 0); IXGBE_EVC_STORE(&stats->rlec, 0); IXGBE_EVC_STORE(&stats->lxontxc, 0); IXGBE_EVC_STORE(&stats->lxonrxc, 0); @@ -3471,7 +3478,8 @@ ixgbe_add_device_sysctls(struct adapter } /* for X552/X557-AT devices */ - if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) { + if ((hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) || + (hw->device_id == IXGBE_DEV_ID_X550EM_A_10G_T)) { const struct sysctlnode *phy_node; if (sysctl_createv(log, 0, &rnode, &phy_node, 0, CTLTYPE_NODE, @@ -3767,6 +3775,8 @@ ixgbe_detach(device_t dev, int flags) evcnt_detach(&stats->mpctotal); evcnt_detach(&stats->mlfc); evcnt_detach(&stats->mrfc); + if (hw->mac.type == ixgbe_mac_X550EM_a) + evcnt_detach(&stats->link_dn_cnt); evcnt_detach(&stats->rlec); evcnt_detach(&stats->lxontxc); evcnt_detach(&stats->lxonrxc); @@ -5813,7 +5823,8 @@ ixgbe_sysctl_phy_temp(SYSCTLFN_ARGS) if (ixgbe_fw_recovery_mode_swflag(adapter)) return (EPERM); - if (hw->device_id != IXGBE_DEV_ID_X550EM_X_10G_T) { + if ((hw->device_id != IXGBE_DEV_ID_X550EM_X_10G_T) && + (hw->device_id != IXGBE_DEV_ID_X550EM_A_10G_T)) { device_printf(adapter->dev, "Device has no supported external thermal sensor.\n"); return (ENODEV); @@ -5856,7 +5867,8 @@ ixgbe_sysctl_phy_overtemp_occurred(SYSCT if (ixgbe_fw_recovery_mode_swflag(adapter)) return (EPERM); - if (hw->device_id != IXGBE_DEV_ID_X550EM_X_10G_T) { + if ((hw->device_id != IXGBE_DEV_ID_X550EM_X_10G_T) && + (hw->device_id != IXGBE_DEV_ID_X550EM_A_10G_T)) { device_printf(adapter->dev, "Device has no supported external thermal sensor.\n"); return (ENODEV); Index: src/sys/dev/pci/ixgbe/ixgbe_common.c diff -u src/sys/dev/pci/ixgbe/ixgbe_common.c:1.25.2.6 src/sys/dev/pci/ixgbe/ixgbe_common.c:1.25.2.7 --- src/sys/dev/pci/ixgbe/ixgbe_common.c:1.25.2.6 Mon Jan 23 14:04:42 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_common.c Wed Jun 21 19:20:51 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_common.c,v 1.25.2.6 2023/01/23 14:04:42 martin Exp $ */ +/* $NetBSD: ixgbe_common.c,v 1.25.2.7 2023/06/
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Wed Jun 21 19:20:51 UTC 2023 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixgbe_common.c ixgbe_type.h Log Message: Pull up the following revisions, requested by msaitoh in ticket #1647: sys/dev/pci/ixgbe/ixgbe.c 1.325-1.326 via patch sys/dev/pci/ixgbe/ixgbe_common.c1.44 sys/dev/pci/ixgbe/ixgbe_type.h 1.56 - PCI device ID 0x15c8 also uses X557-AT PHY, so create the thermal sensor sysctl for it, too. - Count the number of link down events in the MAC using with LINK_DN_CNT register. To generate a diff of this commit: cvs rdiff -u -r1.199.2.25 -r1.199.2.26 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.25.2.6 -r1.25.2.7 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.41.2.7 -r1.41.2.8 src/sys/dev/pci/ixgbe/ixgbe_type.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: snj Date: Fri Jun 3 04:00:49 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1460): sys/dev/pci/ixgbe/ixgbe.c: patch Fix previous to re-enable legacy interrupt correctly. It's a part of ixgbe.c rev. 1.273. To generate a diff of this commit: cvs rdiff -u -r1.199.2.23 -r1.199.2.24 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.23 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.24 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.23 Thu Jun 2 10:45:12 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Fri Jun 3 04:00:49 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.23 2022/06/02 10:45:12 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.24 2022/06/03 04:00:49 snj Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.23 2022/06/02 10:45:12 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.24 2022/06/03 04:00:49 snj Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -6542,7 +6542,7 @@ ixgbe_handle_que(void *context) ixgbe_enable_queue(adapter, que->msix); } else { /* INTx or MSI */ - ixgbe_enable_intr(adapter); + ixgbe_enable_queue(adapter, 0); } return;
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: snj Date: Fri Jun 3 04:00:49 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1460): sys/dev/pci/ixgbe/ixgbe.c: patch Fix previous to re-enable legacy interrupt correctly. It's a part of ixgbe.c rev. 1.273. To generate a diff of this commit: cvs rdiff -u -r1.199.2.23 -r1.199.2.24 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Jun 2 10:45:12 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixgbe.h ixgbe_type.h ixgbe_x550.c ixv.c Log Message: Pull up the following revisions, all via patch, requested by msaitoh in ticket #1459: sys/dev/pci/ixgbe/ixgbe.c 1.261,1.265-1.268,1.273,1.275-1.277, 1.312,1.316-1.319 via patch sys/dev/pci/ixgbe/ixgbe.h 1.85 via patch sys/dev/pci/ixgbe/ixgbe_type.h 1.46-1.47 sys/dev/pci/ixgbe/ixgbe_x550.c 1.26 sys/dev/pci/ixgbe/ixv.c 1.182 - Reduce code duplication between ixgbe_msix_admin() and ixgbe_legacy_irq(). - Add missing code which was not in ixgbe_msix_admin() from ixgbe_legacy_irq() and vice versa. - Reorder code. - Disable/enable the OTHER interrupts correctly. - Don't return in the middle of ixgbe_msix_admin() when an flow director reinit failed. NetBSD currently doesn't support flow director, so this is not a real bug. - Print ECC, PHY and temp error log using with ratecheck(). - Correctly re-enable queue interrupt in ixgbe_legacy_irq(). - Correctly enter the recovery mode. - No functional change: - Add some debug printf()s. - Don't use "more" flag for simplify. - Fix typos in comment. - KNF. To generate a diff of this commit: cvs rdiff -u -r1.199.2.22 -r1.199.2.23 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.8 -r1.56.2.9 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.41.2.6 -r1.41.2.7 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.15.2.5 -r1.15.2.6 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.125.2.19 -r1.125.2.20 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.22 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.23 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.22 Tue May 31 14:03:26 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Thu Jun 2 10:45:12 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.22 2022/05/31 14:03:26 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.23 2022/06/02 10:45:12 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.22 2022/05/31 14:03:26 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.23 2022/06/02 10:45:12 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -262,12 +262,11 @@ static int ixgbe_sysctl_wufc(SYSCTLFN_PR /* Support for pluggable optic modules */ static bool ixgbe_sfp_probe(struct adapter *); -/* Legacy (single vector) interrupt handler */ -static int ixgbe_legacy_irq(void *); - -/* The MSI/MSI-X Interrupt handlers */ +/* Interrupt functions */ static int ixgbe_msix_que(void *); -static int ixgbe_msix_link(void *); +static int ixgbe_msix_admin(void *); +static void ixgbe_intr_admin_common(struct adapter *, u32, u32 *); +static int ixgbe_legacy_irq(void *); /* Software interrupts for deferred work */ static void ixgbe_handle_que(void *); @@ -422,6 +421,9 @@ static int (*ixgbe_ring_empty)(struct if #endif #define IXGBE_WORKQUEUE_PRI PRI_SOFTNET +/* Interval between reports of errors */ +static const struct timeval ixgbe_errlog_intrvl = { 60, 0 }; /* 60s */ + / * ixgbe_initialize_rss_mapping / @@ -624,12 +626,11 @@ ixgbe_initialize_receive_units(struct ad * so we do not need to clear the bit, but do it just in case * this code is moved elsewhere. */ - if (adapter->num_queues > 1 && - adapter->hw.fc.requested_mode == ixgbe_fc_none) { + if ((adapter->num_queues > 1) && + (adapter->hw.fc.requested_mode == ixgbe_fc_none)) srrctl |= IXGBE_SRRCTL_DROP_EN; - } else { + else srrctl &= ~IXGBE_SRRCTL_DROP_EN; - } IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(j), srrctl); @@ -847,7 +848,8 @@ ixgbe_attach(device_t parent, device_t d * Initialize the shared code */ if (ixgbe_init_shared_code(hw) != 0) { - aprint_error_dev(dev, "Unable to initialize the shared code\n"); + aprint_error_dev(dev, + "Unable to initialize the shared code\n"); error = ENXIO; goto err_out; } @@ -1153,7 +1155,8 @@ ixgbe_attach(device_t parent, device_t d error = ixgbe_start_hw(hw); switch (error) { case IXGBE_ERR_EEPROM_VERSION: - aprint_error_dev(dev, "This device is a pre-production adapter/" + aprint_error_dev(dev, + "This device is a pre-production adapter/" "LOM. Please be aware there may be issues associated " "with your hardware.\nIf you are experiencing problems " "please contact your Intel or hardware representative " @@ -1439,60 +1442,45 @@ ixgbe_add_media_types(struct adapt
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Jun 2 10:45:12 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixgbe.h ixgbe_type.h ixgbe_x550.c ixv.c Log Message: Pull up the following revisions, all via patch, requested by msaitoh in ticket #1459: sys/dev/pci/ixgbe/ixgbe.c 1.261,1.265-1.268,1.273,1.275-1.277, 1.312,1.316-1.319 via patch sys/dev/pci/ixgbe/ixgbe.h 1.85 via patch sys/dev/pci/ixgbe/ixgbe_type.h 1.46-1.47 sys/dev/pci/ixgbe/ixgbe_x550.c 1.26 sys/dev/pci/ixgbe/ixv.c 1.182 - Reduce code duplication between ixgbe_msix_admin() and ixgbe_legacy_irq(). - Add missing code which was not in ixgbe_msix_admin() from ixgbe_legacy_irq() and vice versa. - Reorder code. - Disable/enable the OTHER interrupts correctly. - Don't return in the middle of ixgbe_msix_admin() when an flow director reinit failed. NetBSD currently doesn't support flow director, so this is not a real bug. - Print ECC, PHY and temp error log using with ratecheck(). - Correctly re-enable queue interrupt in ixgbe_legacy_irq(). - Correctly enter the recovery mode. - No functional change: - Add some debug printf()s. - Don't use "more" flag for simplify. - Fix typos in comment. - KNF. To generate a diff of this commit: cvs rdiff -u -r1.199.2.22 -r1.199.2.23 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.8 -r1.56.2.9 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.41.2.6 -r1.41.2.7 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.15.2.5 -r1.15.2.6 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.125.2.19 -r1.125.2.20 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue May 31 14:03:27 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixgbe.h ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1458): sys/dev/pci/ixgbe/ixv.c: revision 1.181 sys/dev/pci/ixgbe/ixgbe.c: revision 1.315 sys/dev/pci/ixgbe/ixgbe.h: revision 1.86 Fix a bug that the legacy interrupt doesn't work when MSI-X allocation failed. Fixes PR kern/56857. Remove unused adapter->msix_mem. To generate a diff of this commit: cvs rdiff -u -r1.199.2.21 -r1.199.2.22 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.7 -r1.56.2.8 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.125.2.18 -r1.125.2.19 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.21 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.22 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.21 Mon May 30 17:01:06 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Tue May 31 14:03:26 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.21 2022/05/30 17:01:06 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.22 2022/05/31 14:03:26 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.21 2022/05/30 17:01:06 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.22 2022/05/31 14:03:26 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1096,7 +1096,6 @@ ixgbe_attach(device_t parent, device_t d ixgbe_free_queues(adapter); /* Fallback to legacy interrupt */ - adapter->feat_en &= ~IXGBE_FEATURE_MSIX; if (adapter->feat_cap & IXGBE_FEATURE_MSI) adapter->feat_en |= IXGBE_FEATURE_MSI; adapter->num_queues = 1; @@ -5054,7 +5053,7 @@ ixgbe_enable_intr(struct adapter *adapte IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask); /* With MSI-X we use auto clear */ - if (adapter->msix_mem) { + if ((adapter->feat_en & IXGBE_FEATURE_MSIX) != 0) { /* * We use auto clear for RTX_QUEUE only. Don't use other * interrupts (e.g. link interrupt). BTW, we don't use @@ -5086,7 +5085,7 @@ ixgbe_disable_intr_internal(struct adapt /* disable interrupts other than queues */ IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, ~IXGBE_EIMC_RTX_QUEUE); - if (adapter->msix_mem) + if ((adapter->feat_en & IXGBE_FEATURE_MSIX) != 0) IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIAC, 0); for (int i = 0; i < adapter->num_queues; i++, que++) @@ -6743,6 +6742,7 @@ ixgbe_allocate_msix(struct adapter *adap adapter->osdep.nintrs) != 0) { aprint_error_dev(dev, "failed to allocate MSI-X interrupt\n"); + adapter->feat_en &= ~IXGBE_FEATURE_MSIX; return (ENXIO); } @@ -6942,7 +6942,7 @@ ixgbe_configure_interrupts(struct adapte if (msgs < 2) goto msi; - adapter->msix_mem = (void *)1; /* XXX */ + adapter->feat_en |= IXGBE_FEATURE_MSIX; /* Figure out a reasonable auto config value */ queues = (ncpu > (msgs - 1)) ? (msgs - 1) : ncpu; @@ -6996,7 +6996,7 @@ msi: adapter->feat_en &= ~IXGBE_FEATURE_SRIOV; msgs = pci_msi_count(adapter->osdep.pc, adapter->osdep.tag); - adapter->msix_mem = NULL; /* XXX */ + adapter->feat_en &= ~IXGBE_FEATURE_MSIX; if (msgs > 1) msgs = 1; if (msgs != 0) { Index: src/sys/dev/pci/ixgbe/ixgbe.h diff -u src/sys/dev/pci/ixgbe/ixgbe.h:1.56.2.7 src/sys/dev/pci/ixgbe/ixgbe.h:1.56.2.8 --- src/sys/dev/pci/ixgbe/ixgbe.h:1.56.2.7 Sun Jan 30 15:58:28 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.h Tue May 31 14:03:27 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.h,v 1.56.2.7 2022/01/30 15:58:28 martin Exp $ */ +/* $NetBSD: ixgbe.h,v 1.56.2.8 2022/05/31 14:03:27 martin Exp $ */ /** SPDX-License-Identifier: BSD-3-Clause @@ -479,7 +479,6 @@ struct adapter { struct if_percpuq *ipq; /* softint-based input queues */ struct resource *pci_mem; - struct resource *msix_mem; /* NetBSD: Interrupt resources are in osdep */ Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.125.2.18 src/sys/dev/pci/ixgbe/ixv.c:1.125.2.19 --- src/sys/dev/pci/ixgbe/ixv.c:1.125.2.18 Mon May 30 17:01:06 2022 +++ src/sys/dev/pci/ixgbe/ixv.c Tue May 31 14:03:26 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixv.c,v 1.125.2.18 2022/05/30 17:01:06 martin Exp $ */ +/* $NetBSD: ixv.c,v 1.125.2.19 2022/05/31 14:03:26 martin Exp $ */ /** @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 331224 2018-03-19 20:55:05Z erj $*/ #include -__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.125.2.18 2022/05/30 17:01:06 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.125.2.19 2022/05/31 14:03:26 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue May 31 14:03:27 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixgbe.h ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1458): sys/dev/pci/ixgbe/ixv.c: revision 1.181 sys/dev/pci/ixgbe/ixgbe.c: revision 1.315 sys/dev/pci/ixgbe/ixgbe.h: revision 1.86 Fix a bug that the legacy interrupt doesn't work when MSI-X allocation failed. Fixes PR kern/56857. Remove unused adapter->msix_mem. To generate a diff of this commit: cvs rdiff -u -r1.199.2.21 -r1.199.2.22 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.7 -r1.56.2.8 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.125.2.18 -r1.125.2.19 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Mon May 30 17:01:06 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixv.c Log Message: Pull up the following revisions, requested by msaitoh: sys/dev/pci/ixgbe/ixgbe.c 1.270,1.280,1.307-1.311, 1.313-1.314 via patch sys/dev/pci/ixgbe/ix_txrx.c 1.96-1.97 sys/dev/pci/ixgbe/ixv.c 1.158,1.179-1.180 via patch - ixg(4): Print Printed Board Assembly (PBA) number. - ixg(4): Add IFF_RUNNING check in ixgbe_legacy_irq() again. this might fix small race but it's not so dangerous. - Add value check for {tx,rx}_process_limit sysctl to avoid setting wrong value. - Add missing num_tx_desc sysctl. - No functional change: - KNF a bit. - Simplify setting of EIAC register. - Move the definition of eicr_mask variable. - Enclose flow director stuff in ixgbe_intr_admin_common() with IXGBE_FIR which is not defined in NetBSD. - Modify comment for consistency. - Use cached rx_copy_len in ixgbe_rxeof(). To generate a diff of this commit: cvs rdiff -u -r1.54.2.9 -r1.54.2.10 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.20 -r1.199.2.21 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.125.2.17 -r1.125.2.18 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.9 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.10 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.9 Fri May 13 11:18:40 2022 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Mon May 30 17:01:06 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.9 2022/05/13 11:18:40 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.10 2022/05/30 17:01:06 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.9 2022/05/13 11:18:40 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.10 2022/05/30 17:01:06 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -1819,6 +1819,7 @@ ixgbe_rxeof(struct ix_queue *que) u32 staterr = 0; u32 loopcount = 0, numdesc; u32 limit = adapter->rx_process_limit; + u32 rx_copy_len = adapter->rx_copy_len; bool discard_multidesc = rxr->discard_multidesc; bool wraparound = false; unsigned int syncremain; @@ -1929,7 +1930,7 @@ ixgbe_rxeof(struct ix_queue *que) /* Pre-alloc new mbuf. */ if ((rbuf->fmp == NULL) && - eop && (len <= adapter->rx_copy_len)) { + eop && (len <= rx_copy_len)) { /* For short packet. See below. */ sendmp = m_gethdr(M_NOWAIT, MT_DATA); if (__predict_false(sendmp == NULL)) { @@ -2035,7 +2036,7 @@ ixgbe_rxeof(struct ix_queue *que) * packet. */ - if (eop && (len <= adapter->rx_copy_len)) { + if (eop && (len <= rx_copy_len)) { /* * Optimize. This might be a small packet, may * be just a TCP ACK. Copy into a new mbuf, and @@ -2047,7 +2048,7 @@ ixgbe_rxeof(struct ix_queue *que) IXGBE_EVC_ADD(&rxr->rx_copies, 1); rbuf->flags |= IXGBE_RX_COPY; } else { -/* Non short packet */ +/* For long packet */ /* Update new (used in future) mbuf */ newmp->m_pkthdr.len = newmp->m_len Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.20 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.21 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.20 Wed Feb 2 14:25:49 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Mon May 30 17:01:06 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.20 2022/02/02 14:25:49 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.21 2022/05/30 17:01:06 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.20 2022/02/02 14:25:49 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.21 2022/05/30 17:01:06 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -235,8 +235,6 @@ static int ixgbe_set_advertise(struct ad static int ixgbe_get_default_advertise(struct adapter *); /* Sysctl handlers */ -static void ixgbe_set_sysctl_value(struct adapter *, const char *, - const char *, int *, int); static int ixgbe_sysctl_flowcntl(SYSCTLFN_PROTO); static int ixgbe_sysctl_advertise(SYSCTLFN_PROTO); static int ixgbe_sysctl_interrupt_rate_handler(SYSCTLFN_PROTO); @@ -256,6 +254,8 @@ static int ixgbe_sysctl_tdh_handler(SYSC static int ixgbe_sysctl_eee_state(SYSCTLFN_PROTO); static int ixgbe_sysctl_debug(SYSCTLFN_PROTO); static int ixgbe_sysctl_rx_copy_len(SYSCTLFN_PROTO); +static int ixgbe_sysctl_tx_process_limit(SYSCTLFN_PROTO); +static int ixgbe_sysctl_rx_process_limit(SYSCTLFN_PROTO); static int ixgbe_sysctl_wol_enable(SYSCTLFN_PROTO); static int ixgbe
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Mon May 30 17:01:06 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixv.c Log Message: Pull up the following revisions, requested by msaitoh: sys/dev/pci/ixgbe/ixgbe.c 1.270,1.280,1.307-1.311, 1.313-1.314 via patch sys/dev/pci/ixgbe/ix_txrx.c 1.96-1.97 sys/dev/pci/ixgbe/ixv.c 1.158,1.179-1.180 via patch - ixg(4): Print Printed Board Assembly (PBA) number. - ixg(4): Add IFF_RUNNING check in ixgbe_legacy_irq() again. this might fix small race but it's not so dangerous. - Add value check for {tx,rx}_process_limit sysctl to avoid setting wrong value. - Add missing num_tx_desc sysctl. - No functional change: - KNF a bit. - Simplify setting of EIAC register. - Move the definition of eicr_mask variable. - Enclose flow director stuff in ixgbe_intr_admin_common() with IXGBE_FIR which is not defined in NetBSD. - Modify comment for consistency. - Use cached rx_copy_len in ixgbe_rxeof(). To generate a diff of this commit: cvs rdiff -u -r1.54.2.9 -r1.54.2.10 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.20 -r1.199.2.21 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.125.2.17 -r1.125.2.18 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Fri May 13 11:18:40 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c Log Message: Pull up following revision(s) (requested by bouyer in ticket #1445): sys/dev/pci/ixgbe/ix_txrx.c: revision 1.98 bus_dmamem_unmap() before bus_dmamem_free(), otherwise we may give back meomry which is still (and will stay) mapped. Fixes one instance of "panic: HYPERVISOR_mmu_update failed" on Xen. There may be others. To generate a diff of this commit: cvs rdiff -u -r1.54.2.8 -r1.54.2.9 src/sys/dev/pci/ixgbe/ix_txrx.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.8 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.9 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.8 Wed Feb 2 14:25:49 2022 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Fri May 13 11:18:40 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.8 2022/02/02 14:25:49 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.9 2022/05/13 11:18:40 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.8 2022/02/02 14:25:49 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.9 2022/05/13 11:18:40 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -2321,6 +2321,7 @@ ixgbe_dma_free(struct adapter *adapter, bus_dmamap_sync(dma->dma_tag->dt_dmat, dma->dma_map, 0, dma->dma_size, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); ixgbe_dmamap_unload(dma->dma_tag, dma->dma_map); + bus_dmamem_unmap(dma->dma_tag->dt_dmat, dma->dma_vaddr, dma->dma_size); bus_dmamem_free(dma->dma_tag->dt_dmat, &dma->dma_seg, 1); ixgbe_dma_tag_destroy(dma->dma_tag); } /* ixgbe_dma_free */
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Fri May 13 11:18:40 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c Log Message: Pull up following revision(s) (requested by bouyer in ticket #1445): sys/dev/pci/ixgbe/ix_txrx.c: revision 1.98 bus_dmamem_unmap() before bus_dmamem_free(), otherwise we may give back meomry which is still (and will stay) mapped. Fixes one instance of "panic: HYPERVISOR_mmu_update failed" on Xen. There may be others. To generate a diff of this commit: cvs rdiff -u -r1.54.2.8 -r1.54.2.9 src/sys/dev/pci/ixgbe/ix_txrx.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Wed Feb 2 14:25:49 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe_mbx.c ixgbe_netbsd.h ixv.c Log Message: Pull up the following revisions (requested by msaitoh in ticket #1424): sys/dev/pci/ixgbe/ix_txrx.c 1.95 sys/dev/pci/ixgbe/ixgbe.c 1.305 via patch sys/dev/pci/ixgbe/ixgbe_mbx.c 1.19 sys/dev/pci/ixgbe/ixgbe_netbsd.h1.15-1.16 sys/dev/pci/ixgbe/ixv.c 1.178 via patch Use atomic_{load,store}_relaxed() for event counters. To generate a diff of this commit: cvs rdiff -u -r1.54.2.7 -r1.54.2.8 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.19 -r1.199.2.20 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.11.2.3 -r1.11.2.4 src/sys/dev/pci/ixgbe/ixgbe_mbx.c cvs rdiff -u -r1.11.4.2 -r1.11.4.3 src/sys/dev/pci/ixgbe/ixgbe_netbsd.h cvs rdiff -u -r1.125.2.16 -r1.125.2.17 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.7 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.8 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.7 Sat Nov 20 15:16:53 2021 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Wed Feb 2 14:25:49 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.7 2021/11/20 15:16:53 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.8 2022/02/02 14:25:49 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.7 2021/11/20 15:16:53 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.8 2022/02/02 14:25:49 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -247,7 +247,7 @@ ixgbe_mq_start(struct ifnet *ifp, struct if (__predict_false(!pcq_put(txr->txr_interq, m))) { m_freem(m); - txr->pcq_drops.ev_count++; + IXGBE_EVC_ADD(&txr->pcq_drops, 1); return ENOBUFS; } if (IXGBE_TX_TRYLOCK(txr)) { @@ -475,7 +475,7 @@ retry: /* Make certain there are enough descriptors */ if (txr->tx_avail < (map->dm_nsegs + 2)) { txr->txr_no_space = true; - txr->no_desc_avail.ev_count++; + IXGBE_EVC_ADD(&txr->no_desc_avail, 1); ixgbe_dmamap_unload(txr->txtag, txbuf->map); return EAGAIN; } @@ -546,7 +546,7 @@ retry: * Advance the Transmit Descriptor Tail (Tdt), this tells the * hardware that this frame is available to transmit. */ - ++txr->total_packets.ev_count; + IXGBE_EVC_ADD(&txr->total_packets, 1); IXGBE_WRITE_REG(&adapter->hw, txr->tail, i); /* @@ -583,7 +583,7 @@ ixgbe_drain(struct ifnet *ifp, struct tx while ((m = pcq_get(txr->txr_interq)) != NULL) { m_freem(m); - txr->pcq_drops.ev_count++; + IXGBE_EVC_ADD(&txr->pcq_drops, 1); } } @@ -846,7 +846,7 @@ ixgbe_tx_ctx_setup(struct tx_ring *txr, int rv = ixgbe_tso_setup(txr, mp, cmd_type_len, olinfo_status); if (rv != 0) - ++adapter->tso_err.ev_count; + IXGBE_EVC_ADD(&adapter->tso_err, 1); return rv; } @@ -1088,7 +1088,7 @@ ixgbe_tso_setup(struct tx_ring *txr, str *cmd_type_len |= IXGBE_ADVTXD_DCMD_TSE; *olinfo_status |= IXGBE_TXD_POPTS_TXSM << 8; *olinfo_status |= paylen << IXGBE_ADVTXD_PAYLEN_SHIFT; - ++txr->tso_tx.ev_count; + IXGBE_EVC_ADD(&txr->tso_tx, 1); return (0); } /* ixgbe_tso_setup */ @@ -1360,7 +1360,7 @@ ixgbe_refresh_mbufs(struct rx_ring *rxr, if (__predict_false(rxbuf->buf == NULL)) { mp = ixgbe_getcl(); if (mp == NULL) { -rxr->no_mbuf.ev_count++; +IXGBE_EVC_ADD(&rxr->no_mbuf, 1); goto update; } mp->m_pkthdr.len = mp->m_len = rxr->mbuf_sz; @@ -1549,7 +1549,7 @@ ixgbe_setup_receive_ring(struct rx_ring rxbuf->flags = 0; rxbuf->buf = ixgbe_getcl(); if (rxbuf->buf == NULL) { - rxr->no_mbuf.ev_count++; + IXGBE_EVC_ADD(&rxr->no_mbuf, 1); error = ENOBUFS; goto fail; } @@ -1582,11 +1582,11 @@ ixgbe_setup_receive_ring(struct rx_ring rxr->next_to_refresh = adapter->num_rx_desc - 1; /* Fully allocated */ rxr->lro_enabled = FALSE; rxr->discard_multidesc = false; - rxr->rx_copies.ev_count = 0; + IXGBE_EVC_STORE(&rxr->rx_copies, 0); #if 0 /* NetBSD */ - rxr->rx_bytes.ev_count = 0; + IXGBE_EVC_STORE(&rxr->rx_bytes, 0); #if 1 /* Fix inconsistency */ - rxr->rx_packets.ev_count = 0; + IXGBE_EVC_STORE(&rxr->rx_packets, 0); #endif #endif rxr->vtag_strip = FALSE; @@ -1917,7 +1917,7 @@ ixgbe_rxeof(struct ix_queue *que) if (adapter->feat_en & IXGBE_FEATURE_VF) if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); #endif - rxr->rx_discarded.ev_count++; + IXGBE_EVC_ADD(&rxr->rx_discarded, 1); ixgbe_rx_discard(rxr, i); discard_multidesc = false; goto next_desc; @@ -1933,14 +1933,14 @@ ixgbe_rxeof(struct ix_queue *que) /* For short packet. See belo
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Wed Feb 2 14:25:49 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe_mbx.c ixgbe_netbsd.h ixv.c Log Message: Pull up the following revisions (requested by msaitoh in ticket #1424): sys/dev/pci/ixgbe/ix_txrx.c 1.95 sys/dev/pci/ixgbe/ixgbe.c 1.305 via patch sys/dev/pci/ixgbe/ixgbe_mbx.c 1.19 sys/dev/pci/ixgbe/ixgbe_netbsd.h1.15-1.16 sys/dev/pci/ixgbe/ixv.c 1.178 via patch Use atomic_{load,store}_relaxed() for event counters. To generate a diff of this commit: cvs rdiff -u -r1.54.2.7 -r1.54.2.8 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.19 -r1.199.2.20 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.11.2.3 -r1.11.2.4 src/sys/dev/pci/ixgbe/ixgbe_mbx.c cvs rdiff -u -r1.11.4.2 -r1.11.4.3 src/sys/dev/pci/ixgbe/ixgbe_netbsd.h cvs rdiff -u -r1.125.2.16 -r1.125.2.17 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue Feb 1 11:35:46 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up the following revisions, requested by msaitoh in ticket #1420: sys/dev/pci/ixgbe/ixgbe.c 1.264,1.269,1.272, 1.306 via patch Four INTx related fixes: - Fix a bug that the all interrupt sources are enabled when the interface is UP and the INTx line is shared with other devices. - Fix a bug that it might incorrectly enable interrupt when IFF_RUNNING is not set. - Don't process TX/RX if a queue interrupt isn't occurred. - Increment legacy interrupt counter after checking INTx sharing. To generate a diff of this commit: cvs rdiff -u -r1.199.2.18 -r1.199.2.19 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.18 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.19 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.18 Mon Jan 31 17:36:25 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Tue Feb 1 11:35:45 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.18 2022/01/31 17:36:25 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.19 2022/02/01 11:35:45 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.18 2022/01/31 17:36:25 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.19 2022/02/01 11:35:45 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -5115,28 +5115,34 @@ ixgbe_legacy_irq(void *arg) struct ix_queue *que = arg; struct adapter *adapter = que->adapter; struct ixgbe_hw *hw = &adapter->hw; - struct ifnet *ifp = adapter->ifp; struct tx_ring *txr = adapter->tx_rings; bool more = false; u32 eicr, eicr_mask; + u32 eims_orig; - /* Silicon errata #26 on 82598 */ + eims_orig = IXGBE_READ_REG(hw, IXGBE_EIMS); + /* + * Silicon errata #26 on 82598. Disable all interrupts before reading + * EICR. + */ IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_IRQ_CLEAR_MASK); eicr = IXGBE_READ_REG(hw, IXGBE_EICR); - adapter->stats.pf.legint.ev_count++; - ++que->irqs.ev_count; if (eicr == 0) { adapter->stats.pf.intzero.ev_count++; - if ((ifp->if_flags & IFF_UP) != 0) - ixgbe_enable_intr(adapter); + IXGBE_WRITE_REG(hw, IXGBE_EIMS, eims_orig); return 0; } + adapter->stats.pf.legint.ev_count++; + + /* Queue (0) intr */ + if ((eicr & IXGBE_EIMC_RTX_QUEUE) != 0) { + ++que->irqs.ev_count; - if ((ifp->if_flags & IFF_RUNNING) != 0) { /* - * The same as ixgbe_msix_que() about "que->txrx_use_workqueue". + * The same as ixgbe_msix_que() about + * "que->txrx_use_workqueue". */ que->txrx_use_workqueue = adapter->txrx_use_workqueue;
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue Feb 1 11:35:46 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up the following revisions, requested by msaitoh in ticket #1420: sys/dev/pci/ixgbe/ixgbe.c 1.264,1.269,1.272, 1.306 via patch Four INTx related fixes: - Fix a bug that the all interrupt sources are enabled when the interface is UP and the INTx line is shared with other devices. - Fix a bug that it might incorrectly enable interrupt when IFF_RUNNING is not set. - Don't process TX/RX if a queue interrupt isn't occurred. - Increment legacy interrupt counter after checking INTx sharing. To generate a diff of this commit: cvs rdiff -u -r1.199.2.18 -r1.199.2.19 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Mon Jan 31 17:36:25 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: if_sriov.c ixgbe.c ixgbe_82599.c ixgbe_mbx.c ixgbe_mbx.h ixgbe_type.h ixgbe_vf.c ixgbe_x540.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1416): sys/dev/pci/ixgbe/ixgbe_mbx.h: revision 1.19 sys/dev/pci/ixgbe/ixgbe_vf.c: revision 1.31 sys/dev/pci/ixgbe/ixgbe_x540.c: revision 1.23 sys/dev/pci/ixgbe/if_sriov.c: revision 1.17 sys/dev/pci/ixgbe/ixv.c: revision 1.172 sys/dev/pci/ixgbe/ixv.c: revision 1.173 sys/dev/pci/ixgbe/ixgbe.c: revision 1.301 sys/dev/pci/ixgbe/ixgbe_type.h: revision 1.55 sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.29 sys/dev/pci/ixgbe/ixgbe_mbx.c: revision 1.16 sys/dev/pci/ixgbe/ixgbe_mbx.c: revision 1.17 sys/dev/pci/ixgbe/ixgbe_mbx.c: revision 1.18 Add code to support API version 1.5. No functional change. - This change adds almost all code to support API 1.5 except real negotiation and upgrade mailbox functions. - From ix-3.3.18, ix-3.3.22 and ixv-1.5.24. Enable mailbox API 1.5 support. Tested on ESXi with ixgben 1.10.3.0. Don't clear mailbox related counters in ixgbe_upgrade_mbx_params_vf(). Don't clear mailbox related counters in ixgbe_upgrade_mbx_params_pf(). To generate a diff of this commit: cvs rdiff -u -r1.6.2.2 -r1.6.2.3 src/sys/dev/pci/ixgbe/if_sriov.c cvs rdiff -u -r1.199.2.17 -r1.199.2.18 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.21.4.3 -r1.21.4.4 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.11.2.2 -r1.11.2.3 src/sys/dev/pci/ixgbe/ixgbe_mbx.c cvs rdiff -u -r1.14.2.1 -r1.14.2.2 src/sys/dev/pci/ixgbe/ixgbe_mbx.h cvs rdiff -u -r1.41.2.5 -r1.41.2.6 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.18.2.5 -r1.18.2.6 src/sys/dev/pci/ixgbe/ixgbe_vf.c cvs rdiff -u -r1.16.8.3 -r1.16.8.4 src/sys/dev/pci/ixgbe/ixgbe_x540.c cvs rdiff -u -r1.125.2.15 -r1.125.2.16 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/if_sriov.c diff -u src/sys/dev/pci/ixgbe/if_sriov.c:1.6.2.2 src/sys/dev/pci/ixgbe/if_sriov.c:1.6.2.3 --- src/sys/dev/pci/ixgbe/if_sriov.c:1.6.2.2 Sun Jan 30 15:58:28 2022 +++ src/sys/dev/pci/ixgbe/if_sriov.c Mon Jan 31 17:36:25 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_sriov.c,v 1.6.2.2 2022/01/30 15:58:28 martin Exp $ */ +/* $NetBSD: if_sriov.c,v 1.6.2.3 2022/01/31 17:36:25 martin Exp $ */ /** Copyright (c) 2001-2017, Intel Corporation @@ -34,7 +34,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/if_sriov.c 327031 2017-12-20 18:15:06Z erj $*/ #include -__KERNEL_RCSID(0, "$NetBSD: if_sriov.c,v 1.6.2.2 2022/01/30 15:58:28 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_sriov.c,v 1.6.2.3 2022/01/31 17:36:25 martin Exp $"); #include "ixgbe.h" #include "ixgbe_sriov.h" @@ -99,7 +99,7 @@ ixgbe_send_vf_msg(struct ixgbe_hw *hw, s if (vf->flags & IXGBE_VF_CTS) msg |= IXGBE_VT_MSGTYPE_CTS; - hw->mbx.ops.write(hw, &msg, 1, vf->pool); + hw->mbx.ops[vf->pool].write(hw, &msg, 1, vf->pool); } static inline void @@ -594,7 +594,8 @@ ixgbe_process_vf_msg(struct adapter *ada hw = &adapter->hw; - error = hw->mbx.ops.read(hw, msg, IXGBE_VFMAILBOX_SIZE, vf->pool); + error = hw->mbx.ops[vf->pool].read(hw, msg, IXGBE_VFMAILBOX_SIZE, + vf->pool); if (error != 0) return; @@ -654,16 +655,17 @@ ixgbe_handle_mbx(void *context) for (i = 0; i < adapter->num_vfs; i++) { vf = &adapter->vfs[i]; - if (vf->flags & IXGBE_VF_ACTIVE) { - if (hw->mbx.ops.check_for_rst(hw, vf->pool) == 0) -ixgbe_process_vf_reset(adapter, vf); - - if (hw->mbx.ops.check_for_msg(hw, vf->pool) == 0) -ixgbe_process_vf_msg(adapter, vf); - - if (hw->mbx.ops.check_for_ack(hw, vf->pool) == 0) -ixgbe_process_vf_ack(adapter, vf); - } + if ((vf->flags & IXGBE_VF_ACTIVE) == 0) + continue; + + if (hw->mbx.ops[vf->pool].check_for_rst(hw, vf->pool) == 0) + ixgbe_process_vf_reset(adapter, vf); + + if (hw->mbx.ops[vf->pool].check_for_msg(hw, vf->pool) == 0) + ixgbe_process_vf_msg(adapter, vf); + + if (hw->mbx.ops[vf->pool].check_for_ack(hw, vf->pool) == 0) + ixgbe_process_vf_ack(adapter, vf); } IXGBE_CORE_UNLOCK(adapter); } /* ixgbe_handle_mbx */ Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.17 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.18 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.17 Sun Jan 30 15:58:28 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Mon Jan 31 17:36:25 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.17 2022/01/30 15:58:28 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.18 2022/01/31 17:36:25 martin Exp $ */ /** @@ -64,7 +64,7 @@ */
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Mon Jan 31 17:36:25 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: if_sriov.c ixgbe.c ixgbe_82599.c ixgbe_mbx.c ixgbe_mbx.h ixgbe_type.h ixgbe_vf.c ixgbe_x540.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1416): sys/dev/pci/ixgbe/ixgbe_mbx.h: revision 1.19 sys/dev/pci/ixgbe/ixgbe_vf.c: revision 1.31 sys/dev/pci/ixgbe/ixgbe_x540.c: revision 1.23 sys/dev/pci/ixgbe/if_sriov.c: revision 1.17 sys/dev/pci/ixgbe/ixv.c: revision 1.172 sys/dev/pci/ixgbe/ixv.c: revision 1.173 sys/dev/pci/ixgbe/ixgbe.c: revision 1.301 sys/dev/pci/ixgbe/ixgbe_type.h: revision 1.55 sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.29 sys/dev/pci/ixgbe/ixgbe_mbx.c: revision 1.16 sys/dev/pci/ixgbe/ixgbe_mbx.c: revision 1.17 sys/dev/pci/ixgbe/ixgbe_mbx.c: revision 1.18 Add code to support API version 1.5. No functional change. - This change adds almost all code to support API 1.5 except real negotiation and upgrade mailbox functions. - From ix-3.3.18, ix-3.3.22 and ixv-1.5.24. Enable mailbox API 1.5 support. Tested on ESXi with ixgben 1.10.3.0. Don't clear mailbox related counters in ixgbe_upgrade_mbx_params_vf(). Don't clear mailbox related counters in ixgbe_upgrade_mbx_params_pf(). To generate a diff of this commit: cvs rdiff -u -r1.6.2.2 -r1.6.2.3 src/sys/dev/pci/ixgbe/if_sriov.c cvs rdiff -u -r1.199.2.17 -r1.199.2.18 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.21.4.3 -r1.21.4.4 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.11.2.2 -r1.11.2.3 src/sys/dev/pci/ixgbe/ixgbe_mbx.c cvs rdiff -u -r1.14.2.1 -r1.14.2.2 src/sys/dev/pci/ixgbe/ixgbe_mbx.h cvs rdiff -u -r1.41.2.5 -r1.41.2.6 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.18.2.5 -r1.18.2.6 src/sys/dev/pci/ixgbe/ixgbe_vf.c cvs rdiff -u -r1.16.8.3 -r1.16.8.4 src/sys/dev/pci/ixgbe/ixgbe_x540.c cvs rdiff -u -r1.125.2.15 -r1.125.2.16 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Jan 30 15:58:29 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: if_sriov.c ixgbe.c ixgbe.h ixgbe_82598.c ixgbe_82598.h ixgbe_82599.c ixgbe_82599.h ixgbe_api.c ixgbe_api.h ixgbe_bypass.h ixgbe_common.c ixgbe_common.h ixgbe_dcb.c ixgbe_dcb.h ixgbe_dcb_82598.c ixgbe_dcb_82598.h ixgbe_dcb_82599.c ixgbe_dcb_82599.h ixgbe_fdir.h ixgbe_features.h ixgbe_mbx.c ixgbe_mbx.h ixgbe_netmap.c ixgbe_osdep.c ixgbe_osdep.h ixgbe_phy.c ixgbe_phy.h ixgbe_rss.h ixgbe_sriov.h ixgbe_type.h ixgbe_vf.c ixgbe_vf.h ixgbe_x540.c ixgbe_x540.h ixgbe_x550.c ixgbe_x550.h ixv.c Log Message: Pull up the following revisions, requested by msaitoh in ticket #1414: sys/dev/pci/ixgbe/if_sriov.c1.12-1.16 sys/dev/pci/ixgbe/ixgbe.c 1.295-1.297,1.300,1.304 via patch sys/dev/pci/ixgbe/ixgbe.h 1.84 sys/dev/pci/ixgbe/ixgbe_82598.c 1.17-1.18 sys/dev/pci/ixgbe/ixgbe_82598.h 1.9 sys/dev/pci/ixgbe/ixgbe_82599.c 1.24-1.28 sys/dev/pci/ixgbe/ixgbe_82599.h 1.8 sys/dev/pci/ixgbe/ixgbe_api.c 1.26-1.27 sys/dev/pci/ixgbe/ixgbe_api.h 1.16 sys/dev/pci/ixgbe/ixgbe_bypass.h1.3 sys/dev/pci/ixgbe/ixgbe_common.c1.34-1.42 sys/dev/pci/ixgbe/ixgbe_common.h1.15-1.16 sys/dev/pci/ixgbe/ixgbe_dcb.c 1.12-1.13 sys/dev/pci/ixgbe/ixgbe_dcb.h 1.8-1.9 sys/dev/pci/ixgbe/ixgbe_dcb_82598.c 1.10-1.12 sys/dev/pci/ixgbe/ixgbe_dcb_82598.h 1.8 sys/dev/pci/ixgbe/ixgbe_dcb_82599.c 1.10-1.11 sys/dev/pci/ixgbe/ixgbe_dcb_82599.h 1.8 sys/dev/pci/ixgbe/ixgbe_fdir.h 1.4 sys/dev/pci/ixgbe/ixgbe_features.h 1.4 sys/dev/pci/ixgbe/ixgbe_mbx.c 1.13-1.15 sys/dev/pci/ixgbe/ixgbe_mbx.h 1.15-1.18 sys/dev/pci/ixgbe/ixgbe_netmap.c1.5 sys/dev/pci/ixgbe/ixgbe_osdep.c 1.8 sys/dev/pci/ixgbe/ixgbe_osdep.h 1.31 sys/dev/pci/ixgbe/ixgbe_phy.c 1.25-1.29 sys/dev/pci/ixgbe/ixgbe_phy.h 1.13 sys/dev/pci/ixgbe/ixgbe_rss.h 1.6 sys/dev/pci/ixgbe/ixgbe_sriov.h 1.5 sys/dev/pci/ixgbe/ixgbe_type.h 1.51-1.54 sys/dev/pci/ixgbe/ixgbe_vf.c1.28-1.29 sys/dev/pci/ixgbe/ixgbe_vf.h1.15 sys/dev/pci/ixgbe/ixgbe_x540.c 1.20-1.22 sys/dev/pci/ixgbe/ixgbe_x540.h 1.10 sys/dev/pci/ixgbe/ixgbe_x550.c 1.21-1.25 sys/dev/pci/ixgbe/ixgbe_x550.h 1.7 sys/dev/pci/ixgbe/ixv.c 1.170, 1.174-1.175 via patch - Add typecast for type mismatch. - Fix retry count calculation of I2C read/write. - Wait longer for link after fiber MAC setup. - ixv(4): Use adapter->mta for the multicast array memory instead of the on-stack array. - Match X550_PHY_ID correctly on X550. - Print NVM image version on 82598. - Use 64bit for lxon + lxoff. - Don't expose garbage data of hw.ixvN.debug. - Some NetBSD unrelated changes: - Fix infinite recursion on PCIe link down if VMDQ is used. - Move PF mailbox initialization from ixgbe_attach() to ixgbe_init_iov(). - Add IPv6 mask for flow director. - Change error level in ixgbe_fc_autoneg(). - Check host interface return status when writing NVM. - Change DCB credit parameters. - Restore some mailbox related functions. Revert part of ixgbe_mbx.c rev. 1.7 and ixgbe_mbx.h rev. 1.11. No functional change. - Rename IXGBE_VT_MSGTYPE_{ACK,NACK} to IXGBE_VT_MSGTYPE_{SUCCESS,FAILURE}. No functional change. - Remove unused argument. Change argument. - Remove unnecessary return value check. - Remove debug error message. - Remove dead code. - Add some unused macros. - Fix typo in comment. - Rename some functions. - Sort lines, modify comment. - Whitespace fix. To generate a diff of this commit: cvs rdiff -u -r1.6.2.1 -r1.6.2.2 src/sys/dev/pci/ixgbe/if_sriov.c cvs rdiff -u -r1.199.2.16 -r1.199.2.17 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.6 -r1.56.2.7 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.12.8.4 -r1.12.8.5 src/sys/dev/pci/ixgbe/ixgbe_82598.c cvs rdiff -u -r1.8 -r1.8.8.1 src/sys/dev/pci/ixgbe/ixgbe_82598.h cvs rdiff -u -r1.21.4.2 -r1.21.4.3 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.7 -r1.7.8.1 src/sys/dev/pci/ixgbe/ixgbe_82599.h cvs rdiff -u -r1.23.2.2 -r1.23.2.3 src/sys/dev/pci/ixgbe/ixgbe_api.c cvs rdiff -u -r
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Jan 29 16:43:23 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe_vf.h ixv.c Log Message: Pull up the following revisions (all via patch), requested by msaitoh in ticket #1408: sys/dev/pci/ixgbe/ixgbe_vf.h1.16-1.17 sys/dev/pci/ixgbe/ixv.c 1.176-1.177 Make ifconfig -z ixvN clear event counter. To generate a diff of this commit: cvs rdiff -u -r1.13.8.1 -r1.13.8.2 src/sys/dev/pci/ixgbe/ixgbe_vf.h cvs rdiff -u -r1.125.2.13 -r1.125.2.14 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe_vf.h diff -u src/sys/dev/pci/ixgbe/ixgbe_vf.h:1.13.8.1 src/sys/dev/pci/ixgbe/ixgbe_vf.h:1.13.8.2 --- src/sys/dev/pci/ixgbe/ixgbe_vf.h:1.13.8.1 Thu Sep 26 19:07:22 2019 +++ src/sys/dev/pci/ixgbe/ixgbe_vf.h Sat Jan 29 16:43:23 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_vf.h,v 1.13.8.1 2019/09/26 19:07:22 martin Exp $ */ +/* $NetBSD: ixgbe_vf.h,v 1.13.8.2 2022/01/29 16:43:23 martin Exp $ */ /** SPDX-License-Identifier: BSD-3-Clause @@ -101,29 +101,17 @@ struct ixgbevf_hw_stats { struct evcnt l4cs; struct evcnt l4cs_bad; - u64 base_vfgprc; - u64 base_vfgptc; - u64 base_vfgorc; - u64 base_vfgotc; - u64 base_vfmprc; - - u64 last_vfgprc; - u64 last_vfgptc; + u32 last_vfgprc; + u32 last_vfgptc; u64 last_vfgorc; u64 last_vfgotc; - u64 last_vfmprc; + u32 last_vfmprc; struct evcnt vfgprc; struct evcnt vfgptc; struct evcnt vfgorc; struct evcnt vfgotc; struct evcnt vfmprc; - - u64 saved_reset_vfgprc; - u64 saved_reset_vfgptc; - u64 saved_reset_vfgorc; - u64 saved_reset_vfgotc; - u64 saved_reset_vfmprc; }; s32 ixgbe_init_ops_vf(struct ixgbe_hw *hw); Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.125.2.13 src/sys/dev/pci/ixgbe/ixv.c:1.125.2.14 --- src/sys/dev/pci/ixgbe/ixv.c:1.125.2.13 Sat Nov 20 15:16:53 2021 +++ src/sys/dev/pci/ixgbe/ixv.c Sat Jan 29 16:43:23 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixv.c,v 1.125.2.13 2021/11/20 15:16:53 martin Exp $ */ +/* $NetBSD: ixv.c,v 1.125.2.14 2022/01/29 16:43:23 martin Exp $ */ /** @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 331224 2018-03-19 20:55:05Z erj $*/ #include -__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.125.2.13 2021/11/20 15:16:53 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.125.2.14 2022/01/29 16:43:23 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -130,7 +130,6 @@ static int ixv_register_vlan(struct adap static int ixv_unregister_vlan(struct adapter *, u16); static void ixv_add_device_sysctls(struct adapter *); -static void ixv_save_stats(struct adapter *); static void ixv_init_stats(struct adapter *); static void ixv_update_stats(struct adapter *); static void ixv_add_stats_sysctls(struct adapter *); @@ -538,7 +537,6 @@ ixv_attach(device_t parent, device_t dev } /* Do the stats setup */ - ixv_save_stats(adapter); ixv_init_stats(adapter); ixv_add_stats_sysctls(adapter); @@ -2338,34 +2336,11 @@ ixv_configure_ivars(struct adapter *adap / - * ixv_save_stats + * ixv_init_stats * * The VF stats registers never have a truly virgin - * starting point, so this routine tries to make an - * artificial one, marking ground zero on attach as - * it were. - / -static void -ixv_save_stats(struct adapter *adapter) -{ - struct ixgbevf_hw_stats *stats = &adapter->stats.vf; - - if (stats->vfgprc.ev_count || stats->vfgptc.ev_count) { - stats->saved_reset_vfgprc += - stats->vfgprc.ev_count - stats->base_vfgprc; - stats->saved_reset_vfgptc += - stats->vfgptc.ev_count - stats->base_vfgptc; - stats->saved_reset_vfgorc += - stats->vfgorc.ev_count - stats->base_vfgorc; - stats->saved_reset_vfgotc += - stats->vfgotc.ev_count - stats->base_vfgotc; - stats->saved_reset_vfmprc += - stats->vfmprc.ev_count - stats->base_vfmprc; - } -} /* ixv_save_stats */ - -/ - * ixv_init_stats + * starting point, so this routine save initial vaules to + * last_. / static void ixv_init_stats(struct adapter *adapter) @@ -2383,34 +2358,25 @@ ixv_init_stats(struct adapter *adapter) (((u64)(IXGBE_READ_REG(hw, IXGBE_VFGOTC_MSB))) << 32); adapter->stats.vf.last_vfmprc = IXGBE_READ_REG(hw, IXGBE_VFMPRC); - - adapter->stats.vf.base_vfgprc = adapter->stats.vf.last_vfgprc; - adapter->stats.vf.base_vfgorc = adapter->stats.vf.last_vfgorc; - adapter->s
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Jan 29 16:43:23 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe_vf.h ixv.c Log Message: Pull up the following revisions (all via patch), requested by msaitoh in ticket #1408: sys/dev/pci/ixgbe/ixgbe_vf.h1.16-1.17 sys/dev/pci/ixgbe/ixv.c 1.176-1.177 Make ifconfig -z ixvN clear event counter. To generate a diff of this commit: cvs rdiff -u -r1.13.8.1 -r1.13.8.2 src/sys/dev/pci/ixgbe/ixgbe_vf.h cvs rdiff -u -r1.125.2.13 -r1.125.2.14 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Jan 29 16:33:10 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pullup the following revisions, requested by msaitoh: sys/dev/pci/ixgbe/ixgbe.c 1.298, 1.303 via patch Add some missing error counters to ierror. To generate a diff of this commit: cvs rdiff -u -r1.199.2.15 -r1.199.2.16 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Jan 29 16:33:10 UTC 2022 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pullup the following revisions, requested by msaitoh: sys/dev/pci/ixgbe/ixgbe.c 1.298, 1.303 via patch Add some missing error counters to ierror. To generate a diff of this commit: cvs rdiff -u -r1.199.2.15 -r1.199.2.16 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.15 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.16 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.15 Sat Nov 20 15:16:53 2021 +++ src/sys/dev/pci/ixgbe/ixgbe.c Sat Jan 29 16:33:10 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.15 2021/11/20 15:16:53 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.16 2022/01/29 16:33:10 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.15 2021/11/20 15:16:53 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.16 2022/01/29 16:33:10 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1571,13 +1571,19 @@ ixgbe_update_stats_counters(struct adapt struct ixgbe_hw_stats *stats = &adapter->stats.pf; u32 missed_rx = 0, bprc, lxon, lxoff, total; u64 total_missed_rx = 0; - uint64_t crcerrs, rlec; + uint64_t crcerrs, illerrc, rlec, ruc, rfc, roc, rjc; unsigned int queue_counters; int i; - crcerrs = IXGBE_READ_REG(hw, IXGBE_CRCERRS); - stats->crcerrs.ev_count += crcerrs; - stats->illerrc.ev_count += IXGBE_READ_REG(hw, IXGBE_ILLERRC); +#define READ_COPY_SET(hw, stats, regname, evname) \ + do { \ + (evname) = IXGBE_READ_REG((hw), regname); \ + (stats)->evname.ev_count += (evname); \ + } while (/*CONSTCOND*/0) + + READ_COPY_SET(hw, stats, IXGBE_CRCERRS, crcerrs); + READ_COPY_SET(hw, stats, IXGBE_ILLERRC, illerrc); + stats->errbc.ev_count += IXGBE_READ_REG(hw, IXGBE_ERRBC); stats->mspdc.ev_count += IXGBE_READ_REG(hw, IXGBE_MSPDC); if (hw->mac.type >= ixgbe_mac_X550) @@ -1635,8 +1641,7 @@ ixgbe_update_stats_counters(struct adapt stats->mlfc.ev_count += IXGBE_READ_REG(hw, IXGBE_MLFC); stats->mrfc.ev_count += IXGBE_READ_REG(hw, IXGBE_MRFC); } - rlec = IXGBE_READ_REG(hw, IXGBE_RLEC); - stats->rlec.ev_count += rlec; + READ_COPY_SET(hw, stats, IXGBE_RLEC, rlec); /* Hardware workaround, gprc counts missed packets */ stats->gprc.ev_count += IXGBE_READ_REG(hw, IXGBE_GPRC) - missed_rx; @@ -1688,10 +1693,13 @@ ixgbe_update_stats_counters(struct adapt stats->mptc.ev_count += IXGBE_READ_REG(hw, IXGBE_MPTC) - total; stats->ptc64.ev_count += IXGBE_READ_REG(hw, IXGBE_PTC64) - total; - stats->ruc.ev_count += IXGBE_READ_REG(hw, IXGBE_RUC); - stats->rfc.ev_count += IXGBE_READ_REG(hw, IXGBE_RFC); - stats->roc.ev_count += IXGBE_READ_REG(hw, IXGBE_ROC); - stats->rjc.ev_count += IXGBE_READ_REG(hw, IXGBE_RJC); + READ_COPY_SET(hw, stats, IXGBE_RUC, ruc); + READ_COPY_SET(hw, stats, IXGBE_RFC, rfc); + READ_COPY_SET(hw, stats, IXGBE_ROC, roc); + READ_COPY_SET(hw, stats, IXGBE_RJC, rjc); + +#undef READ_COPY_SET + stats->mngprc.ev_count += IXGBE_READ_REG(hw, IXGBE_MNGPRC); stats->mngpdc.ev_count += IXGBE_READ_REG(hw, IXGBE_MNGPDC); stats->mngptc.ev_count += IXGBE_READ_REG(hw, IXGBE_MNGPTC); @@ -1725,7 +1733,19 @@ ixgbe_update_stats_counters(struct adapt /* Rx Errors */ ifp->if_iqdrops += total_missed_rx; - ifp->if_ierrors += crcerrs + rlec; + + /* + * Aggregate following types of errors as RX errors: + * - CRC error count, + * - illegal byte error count, + * - length error count, + * - undersized packets count, + * - fragmented packets count, + * - oversized packets count, + * - jabber count. + */ + ifp->if_ierrors += + crcerrs + illerrc + rlec + ruc + rfc + roc + rjc; } /* ixgbe_update_stats_counters */ /
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Nov 20 15:16:53 UTC 2021 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_type.h ixv.c Log Message: Pull up the following, requested by msaitoh in ticket #1374: sys/dev/pci/ixgbe/ixgbe.h 1.81-1.83 sys/dev/pci/ixgbe/ixgbe.c 1.291-1.292 via patch sys/dev/pci/ixgbe/ixgbe_type.h 1.50 sys/dev/pci/ixgbe/ixv.c 1.167-1.168 via patch sys/dev/pci/ixgbe/ix_txrx.c 1.94 - Fix a bug that a near 64KB TSO segment can't send. - Reduce bus_dmamap_sync() cost. - Use macro. Fix typos in comment. To generate a diff of this commit: cvs rdiff -u -r1.54.2.6 -r1.54.2.7 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.14 -r1.199.2.15 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.5 -r1.56.2.6 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.41.2.3 -r1.41.2.4 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.125.2.12 -r1.125.2.13 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.6 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.7 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.6 Wed Sep 15 16:30:50 2021 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Sat Nov 20 15:16:53 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54.2.6 2021/09/15 16:30:50 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.7 2021/11/20 15:16:53 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.6 2021/09/15 16:30:50 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.54.2.7 2021/11/20 15:16:53 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -1817,9 +1817,11 @@ ixgbe_rxeof(struct ix_queue *que) struct ixgbe_rx_buf *rbuf, *nbuf; int i, nextp, processed = 0; u32 staterr = 0; - u32 loopcount = 0; + u32 loopcount = 0, numdesc; u32 limit = adapter->rx_process_limit; bool discard_multidesc = rxr->discard_multidesc; + bool wraparound = false; + unsigned int syncremain; #ifdef RSS u16 pkt_info; #endif @@ -1836,6 +1838,24 @@ ixgbe_rxeof(struct ix_queue *que) } #endif /* DEV_NETMAP */ + /* Sync the ring. The size is rx_process_limit or the first half */ + if ((rxr->next_to_check + limit) <= rxr->num_desc) { + /* Non-wraparound */ + numdesc = limit; + syncremain = 0; + } else { + /* Wraparound. Sync the first half. */ + numdesc = rxr->num_desc - rxr->next_to_check; + + /* Set the size of the last half */ + syncremain = limit - numdesc; + } + bus_dmamap_sync(rxr->rxdma.dma_tag->dt_dmat, + rxr->rxdma.dma_map, + sizeof(union ixgbe_adv_rx_desc) * rxr->next_to_check, + sizeof(union ixgbe_adv_rx_desc) * numdesc, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + /* * The max number of loop is rx_process_limit. If discard_multidesc is * true, continue processing to not to send broken packet to the upper @@ -1852,9 +1872,22 @@ ixgbe_rxeof(struct ix_queue *que) booleop; booldiscard = false; - /* Sync the ring. */ - ixgbe_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map, - BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + if (wraparound) { + /* Sync the last half. */ + KASSERT(syncremain != 0); + numdesc = syncremain; + wraparound = false; + } else if (__predict_false(loopcount >= limit)) { + KASSERT(discard_multidesc == true); + numdesc = 1; + } else + numdesc = 0; + + if (numdesc != 0) + bus_dmamap_sync(rxr->rxdma.dma_tag->dt_dmat, + rxr->rxdma.dma_map, 0, + sizeof(union ixgbe_adv_rx_desc) * numdesc, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); cur = &rxr->rx_base[i]; staterr = le32toh(cur->wb.upper.status_error); @@ -2118,8 +2151,10 @@ next_desc: BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); /* Advance our pointers to the next descriptor. */ - if (++i == rxr->num_desc) + if (++i == rxr->num_desc) { + wraparound = true; i = 0; + } rxr->next_to_check = i; /* Now send to the stack or do LRO */ Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.14 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.15 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.14 Wed Sep 15 16:30:50 2021 +++ src/sys/dev/pci/ixgbe/ixgbe.c Sat Nov 20 15:16:53 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.14 2021/09/15 16:30:50 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.15 2021/11/20 15:16:53 martin Exp $ */ /** @@ -64,7 +64,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.199.2.14 2021/09/15 16:30:50 martin Exp $"); +__KERNEL_RCSID(
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sat Nov 20 15:16:53 UTC 2021 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_type.h ixv.c Log Message: Pull up the following, requested by msaitoh in ticket #1374: sys/dev/pci/ixgbe/ixgbe.h 1.81-1.83 sys/dev/pci/ixgbe/ixgbe.c 1.291-1.292 via patch sys/dev/pci/ixgbe/ixgbe_type.h 1.50 sys/dev/pci/ixgbe/ixv.c 1.167-1.168 via patch sys/dev/pci/ixgbe/ix_txrx.c 1.94 - Fix a bug that a near 64KB TSO segment can't send. - Reduce bus_dmamap_sync() cost. - Use macro. Fix typos in comment. To generate a diff of this commit: cvs rdiff -u -r1.54.2.6 -r1.54.2.7 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.14 -r1.199.2.15 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.56.2.5 -r1.56.2.6 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.41.2.3 -r1.41.2.4 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.125.2.12 -r1.125.2.13 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue Nov 19 13:17:44 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #453): sys/dev/pci/ixgbe/ixgbe.c: revision 1.216 sys/dev/pci/ixgbe/ixv.c: revision 1.141 Print MAC address. XXX Should we move such type of printf() to ether_ifattach? To generate a diff of this commit: cvs rdiff -u -r1.199.2.6 -r1.199.2.7 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.125.2.6 -r1.125.2.7 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue Nov 19 13:17:44 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #453): sys/dev/pci/ixgbe/ixgbe.c: revision 1.216 sys/dev/pci/ixgbe/ixv.c: revision 1.141 Print MAC address. XXX Should we move such type of printf() to ether_ifattach? To generate a diff of this commit: cvs rdiff -u -r1.199.2.6 -r1.199.2.7 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.125.2.6 -r1.125.2.7 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.6 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.7 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.6 Thu Oct 17 19:09:14 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Tue Nov 19 13:17:44 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.6 2019/10/17 19:09:14 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.7 2019/11/19 13:17:44 martin Exp $ */ /** @@ -1338,6 +1338,8 @@ ixgbe_setup_interface(device_t dev, stru } adapter->ipq = if_percpuq_create(&adapter->osdep.ec.ec_if); ether_ifattach(ifp, adapter->hw.mac.addr); + aprint_normal_dev(dev, "Ethernet address %s\n", + ether_sprintf(adapter->hw.mac.addr)); /* * We use per TX queue softint, so if_deferred_start_init() isn't * used. Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.125.2.6 src/sys/dev/pci/ixgbe/ixv.c:1.125.2.7 --- src/sys/dev/pci/ixgbe/ixv.c:1.125.2.6 Thu Nov 14 15:30:19 2019 +++ src/sys/dev/pci/ixgbe/ixv.c Tue Nov 19 13:17:44 2019 @@ -1,4 +1,4 @@ -/*$NetBSD: ixv.c,v 1.125.2.6 2019/11/14 15:30:19 martin Exp $*/ +/*$NetBSD: ixv.c,v 1.125.2.7 2019/11/19 13:17:44 martin Exp $*/ /** @@ -1610,6 +1610,8 @@ ixv_setup_interface(device_t dev, struct } adapter->ipq = if_percpuq_create(&adapter->osdep.ec.ec_if); ether_ifattach(ifp, adapter->hw.mac.addr); + aprint_normal_dev(dev, "Ethernet address %s\n", + ether_sprintf(adapter->hw.mac.addr)); /* * We use per TX queue softint, so if_deferred_start_init() isn't * used.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Nov 14 15:30:19 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #422): sys/dev/pci/ixgbe/ixv.c: revision 1.140 ixv(4): disable RSS configuration on 82599 and X540 VFs. Those VFs share their RSS configuration with PF and, thus, they cannot be configured independently. From FreeBSD r354349. To generate a diff of this commit: cvs rdiff -u -r1.125.2.5 -r1.125.2.6 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.125.2.5 src/sys/dev/pci/ixgbe/ixv.c:1.125.2.6 --- src/sys/dev/pci/ixgbe/ixv.c:1.125.2.5 Tue Oct 8 17:05:16 2019 +++ src/sys/dev/pci/ixgbe/ixv.c Thu Nov 14 15:30:19 2019 @@ -1,4 +1,4 @@ -/*$NetBSD: ixv.c,v 1.125.2.5 2019/10/08 17:05:16 martin Exp $*/ +/*$NetBSD: ixv.c,v 1.125.2.6 2019/11/14 15:30:19 martin Exp $*/ /** @@ -1920,7 +1920,8 @@ ixv_initialize_receive_units(struct adap adapter->num_rx_desc - 1); } - ixv_initialize_rss_mapping(adapter); + if (adapter->hw.mac.type >= ixgbe_mac_X550_vf) + ixv_initialize_rss_mapping(adapter); } /* ixv_initialize_receive_units */ /
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Nov 14 15:30:19 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #422): sys/dev/pci/ixgbe/ixv.c: revision 1.140 ixv(4): disable RSS configuration on 82599 and X540 VFs. Those VFs share their RSS configuration with PF and, thus, they cannot be configured independently. From FreeBSD r354349. To generate a diff of this commit: cvs rdiff -u -r1.125.2.5 -r1.125.2.6 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Oct 17 19:09:14 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #348): sys/dev/pci/ixgbe/ixgbe.c: revision 1.214 Apply FreeBSD r353599: > ixgbe: Disable EEE for backplane X550EM_X > > From Zach: > Intel documentation indicates that backplane X550EM_X KR devices do not > support Energy Efficient Ethernet. Prior to this patch, X552 devices > (device ID 0x15AB) will crash the system when transitioning EEE state > via sysctl. > > Signed-off-by: Zach Vargas > > PR: 240320 > Submitted by:Zach Vargas > Reviewed by: erj@ > MFC after: 3 days > Differential Revision: https://reviews.freebsd.org/D21673 To generate a diff of this commit: cvs rdiff -u -r1.199.2.5 -r1.199.2.6 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Oct 17 19:09:14 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #348): sys/dev/pci/ixgbe/ixgbe.c: revision 1.214 Apply FreeBSD r353599: > ixgbe: Disable EEE for backplane X550EM_X > > From Zach: > Intel documentation indicates that backplane X550EM_X KR devices do not > support Energy Efficient Ethernet. Prior to this patch, X552 devices > (device ID 0x15AB) will crash the system when transitioning EEE state > via sysctl. > > Signed-off-by: Zach Vargas > > PR: 240320 > Submitted by:Zach Vargas > Reviewed by: erj@ > MFC after: 3 days > Differential Revision: https://reviews.freebsd.org/D21673 To generate a diff of this commit: cvs rdiff -u -r1.199.2.5 -r1.199.2.6 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.5 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.6 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.5 Thu Sep 26 19:07:22 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Thu Oct 17 19:09:14 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.5 2019/09/26 19:07:22 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.6 2019/10/17 19:09:14 martin Exp $ */ /** @@ -5860,7 +5860,7 @@ ixgbe_sysctl_eee_state(SYSCTLFN_ARGS) if ((new_eee < 0) || (new_eee > 1)) return (EINVAL); - retval = adapter->hw.mac.ops.setup_eee(&adapter->hw, new_eee); + retval = ixgbe_setup_eee(&adapter->hw, new_eee); if (retval) { device_printf(dev, "Error in EEE setup: 0x%08X\n", retval); return (EINVAL); @@ -6034,8 +6034,6 @@ ixgbe_init_device_features(struct adapte */ adapter->feat_cap |= IXGBE_FEATURE_SRIOV; adapter->feat_cap |= IXGBE_FEATURE_FDIR; - if (adapter->hw.device_id == IXGBE_DEV_ID_X550EM_X_KR) - adapter->feat_cap |= IXGBE_FEATURE_EEE; break; case ixgbe_mac_X550EM_a: /*
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue Oct 8 17:05:16 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #293): sys/dev/pci/ixgbe/ixv.c: revision 1.139 Set MTU correctly if mtu > 1500. To generate a diff of this commit: cvs rdiff -u -r1.125.2.4 -r1.125.2.5 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.125.2.4 src/sys/dev/pci/ixgbe/ixv.c:1.125.2.5 --- src/sys/dev/pci/ixgbe/ixv.c:1.125.2.4 Thu Sep 26 19:07:22 2019 +++ src/sys/dev/pci/ixgbe/ixv.c Tue Oct 8 17:05:16 2019 @@ -1,4 +1,4 @@ -/*$NetBSD: ixv.c,v 1.125.2.4 2019/09/26 19:07:22 martin Exp $*/ +/*$NetBSD: ixv.c,v 1.125.2.5 2019/10/08 17:05:16 martin Exp $*/ /** @@ -716,6 +716,9 @@ ixv_init_locked(struct adapter *adapter) for (i = 0, que = adapter->queues; i < adapter->num_queues; i++, que++) que->disabled_count = 0; + adapter->max_frame_size = + ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + /* reprogram the RAR[0] in case user changed it. */ hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0, IXGBE_RAH_AV); @@ -748,10 +751,10 @@ ixv_init_locked(struct adapter *adapter) * Determine the correct mbuf pool * for doing jumbo/headersplit */ - if (ifp->if_mtu > ETHERMTU) - adapter->rx_mbuf_sz = MJUMPAGESIZE; - else + if (adapter->max_frame_size <= MCLBYTES) adapter->rx_mbuf_sz = MCLBYTES; + else + adapter->rx_mbuf_sz = MJUMPAGESIZE; /* Prepare receive descriptors and buffers */ if (ixgbe_setup_receive_structures(adapter)) {
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Tue Oct 8 17:05:16 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #293): sys/dev/pci/ixgbe/ixv.c: revision 1.139 Set MTU correctly if mtu > 1500. To generate a diff of this commit: cvs rdiff -u -r1.125.2.4 -r1.125.2.5 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Sep 5 09:11:03 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe_netbsd.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #180): sys/dev/pci/ixgbe/ixv.c: revision 1.130 sys/dev/pci/ixgbe/ixgbe.c: revision 1.207 sys/dev/pci/ixgbe/ixgbe.c: revision 1.208 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.55 sys/dev/pci/ixgbe/ixv.c: revision 1.129 sys/dev/pci/ixgbe/ixgbe_netbsd.c: revision 1.10 printf -> device_printf Set IFM_1000_BX10 correctly. Use aprint_*() in the attach function. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.54.2.1 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.3 -r1.199.2.4 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/dev/pci/ixgbe/ixgbe_netbsd.c cvs rdiff -u -r1.125.2.2 -r1.125.2.3 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Thu Sep 5 09:11:03 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ix_txrx.c ixgbe.c ixgbe_netbsd.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #180): sys/dev/pci/ixgbe/ixv.c: revision 1.130 sys/dev/pci/ixgbe/ixgbe.c: revision 1.207 sys/dev/pci/ixgbe/ixgbe.c: revision 1.208 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.55 sys/dev/pci/ixgbe/ixv.c: revision 1.129 sys/dev/pci/ixgbe/ixgbe_netbsd.c: revision 1.10 printf -> device_printf Set IFM_1000_BX10 correctly. Use aprint_*() in the attach function. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.54.2.1 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.199.2.3 -r1.199.2.4 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/dev/pci/ixgbe/ixgbe_netbsd.c cvs rdiff -u -r1.125.2.2 -r1.125.2.3 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.54 src/sys/dev/pci/ixgbe/ix_txrx.c:1.54.2.1 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.54 Thu Jul 4 08:56:35 2019 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Thu Sep 5 09:11:03 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.54 2019/07/04 08:56:35 msaitoh Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.54.2.1 2019/09/05 09:11:03 martin Exp $ */ /** @@ -1363,7 +1363,9 @@ ixgbe_refresh_mbufs(struct rx_ring *rxr, error = bus_dmamap_load_mbuf(rxr->ptag->dt_dmat, rxbuf->pmap, mp, BUS_DMA_NOWAIT); if (error != 0) { -printf("Refresh mbufs: payload dmamap load failure - %d\n", error); +device_printf(adapter->dev, "Refresh mbufs: " +"payload dmamap load failure - %d\n", +error); m_free(mp); rxbuf->buf = NULL; goto update; Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.3 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.4 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.3 Sun Sep 1 13:08:12 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Thu Sep 5 09:11:03 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.3 2019/09/01 13:08:12 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.4 2019/09/05 09:11:03 martin Exp $ */ /** @@ -1403,7 +1403,6 @@ static void ixgbe_add_media_types(struct adapter *adapter) { struct ixgbe_hw *hw = &adapter->hw; - device_t dev = adapter->dev; u64 layer; layer = adapter->phy_layer; @@ -1469,7 +1468,7 @@ ixgbe_add_media_types(struct adapter *ad ADD(IFM_5000_T | IFM_FDX, 0); } if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_BX) - device_printf(dev, "Media supported: 1000baseBX\n"); + ADD(IFM_1000_BX10 | IFM_FDX, 0); /* XXX no ifmedia_set? */ ADD(IFM_AUTO, 0); @@ -3306,7 +3305,8 @@ ixgbe_sysctl_instance(struct adapter *ad return rnode; err: - printf("%s: sysctl_createv failed, rc = %d\n", __func__, rc); + device_printf(adapter->dev, + "%s: sysctl_createv failed, rc = %d\n", __func__, rc); return NULL; } Index: src/sys/dev/pci/ixgbe/ixgbe_netbsd.c diff -u src/sys/dev/pci/ixgbe/ixgbe_netbsd.c:1.9 src/sys/dev/pci/ixgbe/ixgbe_netbsd.c:1.9.4.1 --- src/sys/dev/pci/ixgbe/ixgbe_netbsd.c:1.9 Thu Dec 6 13:25:02 2018 +++ src/sys/dev/pci/ixgbe/ixgbe_netbsd.c Thu Sep 5 09:11:03 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_netbsd.c,v 1.9 2018/12/06 13:25:02 msaitoh Exp $ */ +/* $NetBSD: ixgbe_netbsd.c,v 1.9.4.1 2019/09/05 09:11:03 martin Exp $ */ /* * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -197,7 +197,8 @@ ixgbe_jcl_reinit(struct adapter *adapter for (i = 0; i < nbuf; i++) { if ((em = ixgbe_newext(eh, dmat, size)) == NULL) { - printf("%s: only %d of %d jumbo buffers allocated\n", + device_printf(adapter->dev, + "%s: only %d of %d jumbo buffers allocated\n", __func__, i, nbuf); break; } Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.125.2.2 src/sys/dev/pci/ixgbe/ixv.c:1.125.2.3 --- src/sys/dev/pci/ixgbe/ixv.c:1.125.2.2 Sun Sep 1 11:12:45 2019 +++ src/sys/dev/pci/ixgbe/ixv.c Thu Sep 5 09:11:03 2019 @@ -1,4 +1,4 @@ -/*$NetBSD: ixv.c,v 1.125.2.2 2019/09/01 11:12:45 martin Exp $*/ +/*$NetBSD: ixv.c,v 1.125.2.3 2019/09/05 09:11:03 martin Exp $*/ /** @@ -516,7 +516,7 @@ ixv_attach(device_t parent, device_t dev error = ixv_allocate_msix(adapter, pa); if (error) { - device_printf(dev, "ixv_allocate_msix() failed!\n"); + aprint_error_dev(dev, "ixv_allocate_msix() failed!\n"); goto err_late; } @@ -2406,7 +2406,8 @@ ixv_sysctl_instance(struct adapter *adap return rnode; err: - printf("%s: sysctl_createv failed, rc = %d\n", __f
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Sep 1 13:08:13 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up following revision(s) (requested by knakahara in ticket #136): sys/dev/pci/ixgbe/ixgbe.c: revision 1.205 sys/dev/pci/ixgbe/ixgbe.c: revision 1.206 fix typo in error handling of ixgbe_allocate_legacy(). ok by msaitoh@n.o pullup-8, pullup-9 - Fix panic when ncpu == 1 && sysctl -w hw.ixg0.txrx_workqueue=1. Reported by nonaka@n.o. ok by msaitoh@n.o and nonaka@n.o pullup-8, pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.199.2.2 -r1.199.2.3 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.2 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.3 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.2 Sun Sep 1 11:12:45 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Sun Sep 1 13:08:12 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.2 2019/09/01 11:12:45 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.3 2019/09/01 13:08:12 martin Exp $ */ /** @@ -6467,7 +6467,9 @@ ixgbe_allocate_legacy(struct adapter *ad int counts[PCI_INTR_TYPE_SIZE]; pci_intr_type_t intr_type, max_type; char intrbuf[PCI_INTRSTR_LEN]; + char wqname[MAXCOMLEN]; const char *intrstr = NULL; + int defertx_error = 0, error; /* We allocate a single interrupt resource */ max_type = PCI_INTR_TYPE_MSI; @@ -6529,15 +6531,27 @@ alloc_retry: * Try allocating a fast interrupt and the associated deferred * processing contexts. */ - if (!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX)) + if (!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX)) { txr->txr_si = softint_establish(SOFTINT_NET | IXGBE_SOFTINFT_FLAGS, ixgbe_deferred_mq_start, txr); + + snprintf(wqname, sizeof(wqname), "%sdeferTx", device_xname(dev)); + defertx_error = workqueue_create(&adapter->txr_wq, wqname, + ixgbe_deferred_mq_start_work, adapter, IXGBE_WORKQUEUE_PRI, + IPL_NET, IXGBE_WORKQUEUE_FLAGS); + adapter->txr_wq_enqueued = percpu_alloc(sizeof(u_int)); + } que->que_si = softint_establish(SOFTINT_NET | IXGBE_SOFTINFT_FLAGS, ixgbe_handle_que, que); + snprintf(wqname, sizeof(wqname), "%sTxRx", device_xname(dev)); + error = workqueue_create(&adapter->que_wq, wqname, + ixgbe_handle_que_work, adapter, IXGBE_WORKQUEUE_PRI, IPL_NET, + IXGBE_WORKQUEUE_FLAGS); if ((!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX) - & (txr->txr_si == NULL)) || (que->que_si == NULL)) { + && ((txr->txr_si == NULL) || defertx_error != 0)) + || (que->que_si == NULL) || error != 0) { aprint_error_dev(dev, "could not establish software interrupts\n");
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Sep 1 13:08:13 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c Log Message: Pull up following revision(s) (requested by knakahara in ticket #136): sys/dev/pci/ixgbe/ixgbe.c: revision 1.205 sys/dev/pci/ixgbe/ixgbe.c: revision 1.206 fix typo in error handling of ixgbe_allocate_legacy(). ok by msaitoh@n.o pullup-8, pullup-9 - Fix panic when ncpu == 1 && sysctl -w hw.ixg0.txrx_workqueue=1. Reported by nonaka@n.o. ok by msaitoh@n.o and nonaka@n.o pullup-8, pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.199.2.2 -r1.199.2.3 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Sep 1 11:12:45 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #134): sys/dev/pci/ixgbe/ixgbe.c: revision 1.202 sys/dev/pci/ixgbe/ixgbe.c: revision 1.203 sys/dev/pci/ixgbe/ixgbe.c: revision 1.204 sys/dev/pci/ixgbe/ixv.c: revision 1.128 Simplify ix{gbe,v}_[un]register_vlan() API suggested by knakahara. The API was the same as FreeBSD's pre-iflib's. They use iflib now and it's not required for us to keep the old API. X550EM supports QSFP, so check ixgbe_media_type_fiber_qsfp too. An interrupt might not arrive when a module is inserted. When an link status change interrupt occurred and the driver still regard SFP as unplugged, link becomes up and the real media type is unknown. e.g: % ifconfig -m ixg0 (snip) media: Ethernet autoselect (autoselect rxpause,txpause) status: active supported Ethernet media: media none media autoselect (snip) To resolve this problem, when an link status change interrupt occurred and the driver still regard SFP as unplugged, issue the module softint before issuing LSC interrupt. To generate a diff of this commit: cvs rdiff -u -r1.199.2.1 -r1.199.2.2 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.125.2.1 -r1.125.2.2 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.1 src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.2 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.199.2.1 Sun Sep 1 11:07:05 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Sun Sep 1 11:12:45 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.199.2.1 2019/09/01 11:07:05 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.199.2.2 2019/09/01 11:12:45 martin Exp $ */ /** @@ -222,8 +222,8 @@ static void ixgbe_eitr_write(struct adap static void ixgbe_setup_vlan_hw_tagging(struct adapter *); static void ixgbe_setup_vlan_hw_support(struct adapter *); static int ixgbe_vlan_cb(struct ethercom *, uint16_t, bool); -static int ixgbe_register_vlan(void *, struct ifnet *, u16); -static int ixgbe_unregister_vlan(void *, struct ifnet *, u16); +static int ixgbe_register_vlan(struct adapter *, u16); +static int ixgbe_unregister_vlan(struct adapter *, u16); static void ixgbe_add_device_sysctls(struct adapter *); static void ixgbe_add_hw_stats(struct adapter *); @@ -1489,6 +1489,8 @@ ixgbe_is_sfp(struct ixgbe_hw *hw) return (TRUE); return (FALSE); case ixgbe_mac_82599EB: + case ixgbe_mac_X550EM_x: + case ixgbe_mac_X550EM_a: switch (hw->mac.ops.get_media_type(hw)) { case ixgbe_media_type_fiber: case ixgbe_media_type_fiber_qsfp: @@ -1496,11 +1498,6 @@ ixgbe_is_sfp(struct ixgbe_hw *hw) default: return (FALSE); } - case ixgbe_mac_X550EM_x: - case ixgbe_mac_X550EM_a: - if (hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) - return (TRUE); - return (FALSE); default: return (FALSE); } @@ -2310,9 +2307,9 @@ ixgbe_vlan_cb(struct ethercom *ec, uint1 int rv; if (set) - rv = ixgbe_register_vlan(ifp->if_softc, ifp, vid); + rv = ixgbe_register_vlan(adapter, vid); else - rv = ixgbe_unregister_vlan(ifp->if_softc, ifp, vid); + rv = ixgbe_unregister_vlan(adapter, vid); if (rv != 0) return rv; @@ -2336,15 +2333,11 @@ ixgbe_vlan_cb(struct ethercom *ec, uint1 * VFTA, init will repopulate the real table. / static int -ixgbe_register_vlan(void *arg, struct ifnet *ifp, u16 vtag) +ixgbe_register_vlan(struct adapter *adapter, u16 vtag) { - struct adapter *adapter = ifp->if_softc; u16 index, bit; int error; - if (ifp->if_softc != arg) /* Not our event */ - return EINVAL; - if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return EINVAL; @@ -2367,15 +2360,11 @@ ixgbe_register_vlan(void *arg, struct if * Run via vlan unconfig EVENT, remove our entry in the soft vfta. / static int -ixgbe_unregister_vlan(void *arg, struct ifnet *ifp, u16 vtag) +ixgbe_unregister_vlan(struct adapter *adapter, u16 vtag) { - struct adapter *adapter = ifp->if_softc; u16 index, bit; int error; - if (ifp->if_softc != arg) - return EINVAL; - if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return EINVAL; @@ -3124,6 +3113,34 @@ ixgbe_msix_link(void *arg) /* Clear interrupt with write */ IXGBE_WRITE_REG(hw, IXGBE_EICR, eicr); + if (ixgbe_is_sfp(hw)) { + /* Pluggable optics-related interrupt */ + if (hw->mac.type >= ixgbe_mac_X540) + eicr_mask = IXGBE_EICR_GPI_SDP0_X540; + else + eicr_mask = IXGBE_EICR_GPI_SDP2_BY_MAC(hw); + +
CVS commit: [netbsd-9] src/sys/dev/pci/ixgbe
Module Name:src Committed By: martin Date: Sun Sep 1 11:12:45 UTC 2019 Modified Files: src/sys/dev/pci/ixgbe [netbsd-9]: ixgbe.c ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #134): sys/dev/pci/ixgbe/ixgbe.c: revision 1.202 sys/dev/pci/ixgbe/ixgbe.c: revision 1.203 sys/dev/pci/ixgbe/ixgbe.c: revision 1.204 sys/dev/pci/ixgbe/ixv.c: revision 1.128 Simplify ix{gbe,v}_[un]register_vlan() API suggested by knakahara. The API was the same as FreeBSD's pre-iflib's. They use iflib now and it's not required for us to keep the old API. X550EM supports QSFP, so check ixgbe_media_type_fiber_qsfp too. An interrupt might not arrive when a module is inserted. When an link status change interrupt occurred and the driver still regard SFP as unplugged, link becomes up and the real media type is unknown. e.g: % ifconfig -m ixg0 (snip) media: Ethernet autoselect (autoselect rxpause,txpause) status: active supported Ethernet media: media none media autoselect (snip) To resolve this problem, when an link status change interrupt occurred and the driver still regard SFP as unplugged, issue the module softint before issuing LSC interrupt. To generate a diff of this commit: cvs rdiff -u -r1.199.2.1 -r1.199.2.2 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.125.2.1 -r1.125.2.2 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.