Module Name: src Committed By: martin Date: Fri Oct 13 18:55:12 UTC 2023
Modified Files: src/sys/dev/pci/ixgbe [netbsd-10]: 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 following revision(s) (requested by msaitoh in ticket #407): sys/dev/pci/ixgbe/ixgbe_common.c: revision 1.47 sys/dev/pci/ixgbe/ixgbe_x550.c: revision 1.28 sys/dev/pci/ixgbe/ixgbe_type.h: revision 1.60 sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.31 sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.32 sys/dev/pci/ixgbe/ixv.c: revision 1.187 sys/dev/pci/ixgbe/ixv.c: revision 1.188 sys/dev/pci/ixgbe/ixv.c: revision 1.189 sys/dev/pci/ixgbe/ixgbe_common.h: revision 1.18 sys/dev/pci/ixgbe/ixgbe_x540.c: revision 1.24 sys/dev/pci/ixgbe/ixgbe.c: revision 1.334 sys/dev/pci/ixgbe/ixgbe.c: revision 1.335 sys/dev/pci/ixgbe/ixgbe.c: revision 1.336 sys/dev/pci/ixgbe/ixgbe.c: revision 1.337 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.103 sys/dev/pci/ixgbe/ixgbe.c: revision 1.338 sys/dev/pci/ixgbe/ixgbe_type.h: revision 1.59 sys/dev/pci/ixgbe/ixgbe_dcb_82598.c: revision 1.13 sys/dev/pci/ixgbe/ixgbe_dcb.c: revision 1.14 sys/dev/pci/ixgbe/ixgbe_dcb.c: revision 1.15 sys/dev/pci/ixgbe/ixgbe_api.c: revision 1.29 sys/dev/pci/ixgbe/ixgbe_bypass.h: revision 1.5 sys/dev/pci/ixgbe/ixgbe.h: revision 1.90 sys/dev/pci/ixgbe/ixgbe.h: revision 1.91 sys/dev/pci/ixgbe/ixgbe.h: revision 1.92 sys/dev/pci/ixgbe/ixgbe_common.c: revision 1.46 ixg(4): Remove unused and old function. No functional change. - From FreeBSD's ix-3.3.32. ixg(4): Add 82599 LS once again. - From: FreeBSD: 9228ac3a69c4c7401a743e6465e118101a2beeb0 DPDK: 549ccd3dc01539e060597b503f2b65b272de3347 - This was removed 5 years ago. From the commit message: > Remove IXGBE_DEV_ID_82599_LS(0x154f) support again. I don't know why. This > was added in ix-3.2.18.tar.gz(NetBSD: ixgbe_82599.c rev. 1.20) and > removed in ix-3.3.6.tar.gz. ixg(4): Filter out spurious link up indication - Extend SFP+ cage crosstalk fix by re-checking link state after 5ms delay to filter out spurious link up indication by transceiver with no fiber cable connected. - From FreeBSD: In-tree: 04a5e6d7cadd06b10169c3c3a560649e7dc7444c Out of tree: ix-3.3.33. ixgbe: Simplify definitions. No functional change. Both DEFAULT_{TX,RX}D and PERFORM_{TX,RX}D are 2048. Use DEFAULT_{TX,RX}D. Same as FreeBSD. ixgbe: Modify error message of wrong TX/RX descriptor size. - Based from FreeBSD ix-3.3.35. I think ix-3.3.35's RING_INCREMENT(== 32) is wrong. It should be 8(DBA_ALIGN / sizeof(union ixgbe_adv_[tr]x_desc)). Linux also uses 8. ixgbe: Remove NO_82599_SUPPORT and NO_X540_SUPPORT support. NFCI. From FreeBSD ix-3.3.35. Note that this file is not used in NetBSD. ixgbe: Enable interrupt after setting IFF_RUNNING. Same as FreeBSD x-3.3.35. ixgbe: Cleanup. No fucntional change. Remove unused code, fix whitespace and modify comment to reduce against FreeBSD(mainly from ix-3.3.35). To generate a diff of this commit: cvs rdiff -u -r1.100.4.2 -r1.100.4.3 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.324.2.3 -r1.324.2.4 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.86.4.2 -r1.86.4.3 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.29.4.1 -r1.29.4.2 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.28 -r1.28.4.1 src/sys/dev/pci/ixgbe/ixgbe_api.c cvs rdiff -u -r1.3.4.1 -r1.3.4.2 src/sys/dev/pci/ixgbe/ixgbe_bypass.h cvs rdiff -u -r1.43.4.2 -r1.43.4.3 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.16.4.1 -r1.16.4.2 src/sys/dev/pci/ixgbe/ixgbe_common.h cvs rdiff -u -r1.13 -r1.13.4.1 src/sys/dev/pci/ixgbe/ixgbe_dcb.c cvs rdiff -u -r1.12 -r1.12.4.1 src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c cvs rdiff -u -r1.55.4.3 -r1.55.4.4 src/sys/dev/pci/ixgbe/ixgbe_type.h cvs rdiff -u -r1.23 -r1.23.4.1 src/sys/dev/pci/ixgbe/ixgbe_x540.c cvs rdiff -u -r1.26.4.1 -r1.26.4.2 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.183.4.2 -r1.183.4.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.100.4.2 src/sys/dev/pci/ixgbe/ix_txrx.c:1.100.4.3 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.100.4.2 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.100.4.2 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.100.4.3 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.100.4.2 2023/10/13 18:16:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.100.4.3 2023/10/13 18:55:12 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -839,7 +839,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); @@ -1733,9 +1732,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 + * - no LRO resources, or + * - lro enqueue fails */ if (rxr->lro.lro_cnt != 0) if (tcp_lro_rx(&rxr->lro, m, 0) == 0) Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.324.2.3 src/sys/dev/pci/ixgbe/ixgbe.c:1.324.2.4 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.324.2.3 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixgbe.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.324.2.3 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.324.2.4 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.324.2.3 2023/10/13 18:16:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.324.2.4 2023/10/13 18:55:12 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -117,6 +117,7 @@ static const ixgbe_vendor_info_t ixgbe_v {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_XAUI_LOM, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_CX4, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_T3_LOM, 0, 0, 0}, + {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_LS, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_COMBO_BACKPLANE, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_BACKPLANE_FCOE, 0, 0, 0}, {IXGBE_INTEL_VENDOR_ID, IXGBE_DEV_ID_82599_SFP_SF2, 0, 0, 0}, @@ -369,12 +370,12 @@ SYSCTL_INT(_hw_ix, OID_AUTO, num_queues, * setting higher than RX as this seems * the better performing choice. */ -static int ixgbe_txd = PERFORM_TXD; +static int ixgbe_txd = DEFAULT_TXD; SYSCTL_INT(_hw_ix, OID_AUTO, txd, CTLFLAG_RDTUN, &ixgbe_txd, 0, "Number of transmit descriptors per queue"); /* Number of RX descriptors per ring */ -static int ixgbe_rxd = PERFORM_RXD; +static int ixgbe_rxd = DEFAULT_RXD; SYSCTL_INT(_hw_ix, OID_AUTO, rxd, CTLFLAG_RDTUN, &ixgbe_rxd, 0, "Number of receive descriptors per queue"); @@ -763,8 +764,6 @@ ixgbe_initialize_transmit_units(struct i rttdcs &= ~IXGBE_RTTDCS_ARBDIS; IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs); } - - return; } /* ixgbe_initialize_transmit_units */ static void @@ -966,14 +965,26 @@ ixgbe_attach(device_t parent, device_t d /* Do descriptor calc and sanity checks */ if (((ixgbe_txd * sizeof(union ixgbe_adv_tx_desc)) % DBA_ALIGN) != 0 || ixgbe_txd < MIN_TXD || ixgbe_txd > MAX_TXD) { - aprint_error_dev(dev, "TXD config issue, using default!\n"); + aprint_error_dev(dev, "Invalid TX ring size (%d). " + "It must be between %d and %d, " + "inclusive, and must be a multiple of %zu. " + "Using default value of %d instead.\n", + ixgbe_txd, MIN_TXD, MAX_TXD, + DBA_ALIGN / sizeof(union ixgbe_adv_tx_desc), + DEFAULT_TXD); sc->num_tx_desc = DEFAULT_TXD; } else sc->num_tx_desc = ixgbe_txd; if (((ixgbe_rxd * sizeof(union ixgbe_adv_rx_desc)) % DBA_ALIGN) != 0 || ixgbe_rxd < MIN_RXD || ixgbe_rxd > MAX_RXD) { - aprint_error_dev(dev, "RXD config issue, using default!\n"); + aprint_error_dev(dev, "Invalid RX ring size (%d). " + "It must be between %d and %d, " + "inclusive, and must be a multiple of %zu. " + "Using default value of %d instead.\n", + ixgbe_rxd, MIN_RXD, MAX_RXD, + DBA_ALIGN / sizeof(union ixgbe_adv_rx_desc), + DEFAULT_RXD); sc->num_rx_desc = DEFAULT_RXD; } else sc->num_rx_desc = ixgbe_rxd; @@ -4281,9 +4292,6 @@ ixgbe_init_locked(struct ixgbe_softc *sc /* OK to schedule workqueues. */ sc->schedule_wqs_ok = true; - /* And now turn on interrupts */ - ixgbe_enable_intr(sc); - /* Enable the use of the MBX by the VF's */ if (sc->feat_en & IXGBE_FEATURE_SRIOV) { ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT); @@ -4295,9 +4303,12 @@ ixgbe_init_locked(struct ixgbe_softc *sc sc->if_flags = ifp->if_flags; sc->ec_capenable = sc->osdep.ec.ec_capenable; - /* Now inform the stack we're ready */ + /* Inform the stack we're ready */ ifp->if_flags |= IFF_RUNNING; + /* And now turn on interrupts */ + ixgbe_enable_intr(sc); + return; } /* ixgbe_init_locked */ Index: src/sys/dev/pci/ixgbe/ixgbe.h diff -u src/sys/dev/pci/ixgbe/ixgbe.h:1.86.4.2 src/sys/dev/pci/ixgbe/ixgbe.h:1.86.4.3 --- src/sys/dev/pci/ixgbe/ixgbe.h:1.86.4.2 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixgbe.h Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.h,v 1.86.4.2 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixgbe.h,v 1.86.4.3 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -119,19 +119,18 @@ /* Tunables */ /* - * TxDescriptors Valid Range: 64-4096 Default Value: 256 This value is the + * TxDescriptors Valid Range: 64-4096 Default Value: 2048 This value is the * number of transmit descriptors allocated by the driver. Increasing this * value allows the driver to queue more transmits. Each descriptor is 16 * bytes. Performance tests have show the 2K value to be optimal for top * performance. */ -#define DEFAULT_TXD 1024 -#define PERFORM_TXD 2048 +#define DEFAULT_TXD 2048 #define MAX_TXD 4096 #define MIN_TXD 64 /* - * RxDescriptors Valid Range: 64-4096 Default Value: 256 This value is the + * RxDescriptors Valid Range: 64-4096 Default Value: 2048 This value is the * number of receive descriptors allocated for each RX queue. Increasing this * value allows the driver to buffer more incoming packets. Each descriptor * is 16 bytes. A receive buffer is also allocated for each descriptor. @@ -140,8 +139,7 @@ * against the system mbuf pool limit, you can tune nmbclusters * to adjust for this. */ -#define DEFAULT_RXD 1024 -#define PERFORM_RXD 2048 +#define DEFAULT_RXD 2048 #define MAX_RXD 4096 #define MIN_RXD 64 @@ -202,11 +200,6 @@ #define IXGBE_82599_SCATTER_MAX (40 - IXGBE_TX_WTHRESH - 2) #define IXGBE_SCATTER_DEFAULT 33 -/* Keep older OS drivers building... */ -#if !defined(SYSCTL_ADD_UQUAD) -#define SYSCTL_ADD_UQUAD SYSCTL_ADD_QUAD -#endif - /* Defines for printing debug information */ #define DEBUG_INIT 0 #define DEBUG_IOCTL 0 @@ -692,19 +685,6 @@ struct ixgbe_softc { "\t2 - tx pause\n" \ "\t3 - tx and rx pause" -/* Workaround to make 8.0 buildable */ -#if __FreeBSD_version >= 800000 && __FreeBSD_version < 800504 -static __inline int -drbr_needs_enqueue(struct ifnet *ifp, struct buf_ring *br) -{ -#ifdef ALTQ - if (ALTQ_IS_ENABLED(&ifp->if_snd)) - return (1); -#endif - return (!buf_ring_empty(br)); -} -#endif - /* * Find the number of unrefreshed RX descriptors */ Index: src/sys/dev/pci/ixgbe/ixgbe_82599.c diff -u src/sys/dev/pci/ixgbe/ixgbe_82599.c:1.29.4.1 src/sys/dev/pci/ixgbe/ixgbe_82599.c:1.29.4.2 --- src/sys/dev/pci/ixgbe/ixgbe_82599.c:1.29.4.1 Sun Oct 8 14:57:53 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_82599.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_82599.c,v 1.29.4.1 2023/10/08 14:57:53 martin Exp $ */ +/* $NetBSD: ixgbe_82599.c,v 1.29.4.2 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -36,7 +36,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_82599.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_82599.c,v 1.29.4.1 2023/10/08 14:57:53 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_82599.c,v 1.29.4.2 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_type.h" #include "ixgbe_82599.h" @@ -571,6 +571,9 @@ enum ixgbe_media_type ixgbe_get_media_ty case IXGBE_DEV_ID_82599_T3_LOM: media_type = ixgbe_media_type_copper; break; + case IXGBE_DEV_ID_82599_LS: + media_type = ixgbe_media_type_fiber_lco; + break; case IXGBE_DEV_ID_82599_QSFP_SF_QP: media_type = ixgbe_media_type_fiber_qsfp; break; @@ -628,7 +631,6 @@ s32 ixgbe_start_mac_link_82599(struct ix DEBUGFUNC("ixgbe_start_mac_link_82599"); - /* reset_pipeline requires us to hold this lock as it writes to * AUTOC. */ Index: src/sys/dev/pci/ixgbe/ixgbe_api.c diff -u src/sys/dev/pci/ixgbe/ixgbe_api.c:1.28 src/sys/dev/pci/ixgbe/ixgbe_api.c:1.28.4.1 --- src/sys/dev/pci/ixgbe/ixgbe_api.c:1.28 Mon Jun 6 02:16:37 2022 +++ src/sys/dev/pci/ixgbe/ixgbe_api.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_api.c,v 1.28 2022/06/06 02:16:37 msaitoh Exp $ */ +/* $NetBSD: ixgbe_api.c,v 1.28.4.1 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -36,7 +36,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_api.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_api.c,v 1.28 2022/06/06 02:16:37 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_api.c,v 1.28.4.1 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_api.h" #include "ixgbe_common.h" @@ -879,7 +879,7 @@ s32 ixgbe_validate_eeprom_checksum(struc } /** - * ixgbe_eeprom_update_checksum - Updates the EEPROM checksum + * ixgbe_update_eeprom_checksum - Updates the EEPROM checksum * @hw: pointer to hardware structure **/ s32 ixgbe_update_eeprom_checksum(struct ixgbe_hw *hw) @@ -1163,8 +1163,6 @@ s32 ixgbe_set_fw_drv_ver(struct ixgbe_hw IXGBE_NOT_IMPLEMENTED); } - - /** * ixgbe_dmac_config - Configure DMA Coalescing registers. * @hw: pointer to hardware structure Index: src/sys/dev/pci/ixgbe/ixgbe_bypass.h diff -u src/sys/dev/pci/ixgbe/ixgbe_bypass.h:1.3.4.1 src/sys/dev/pci/ixgbe/ixgbe_bypass.h:1.3.4.2 --- src/sys/dev/pci/ixgbe/ixgbe_bypass.h:1.3.4.1 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_bypass.h Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_bypass.h,v 1.3.4.1 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixgbe_bypass.h,v 1.3.4.2 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** Copyright (c) 2001-2020, Intel Corporation @@ -36,7 +36,6 @@ #ifndef _IXGBE_BYPASS_H_ #define _IXGBE_BYPASS_H_ - /* * The bypass driver needs to set FW to a epoc of the number of * seconds we are into this year. This macro's help support that. Index: src/sys/dev/pci/ixgbe/ixgbe_common.c diff -u src/sys/dev/pci/ixgbe/ixgbe_common.c:1.43.4.2 src/sys/dev/pci/ixgbe/ixgbe_common.c:1.43.4.3 --- src/sys/dev/pci/ixgbe/ixgbe_common.c:1.43.4.2 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_common.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_common.c,v 1.43.4.2 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixgbe_common.c,v 1.43.4.3 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -36,7 +36,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_common.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_common.c,v 1.43.4.2 2023/10/13 18:16:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_common.c,v 1.43.4.3 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_common.h" #include "ixgbe_phy.h" @@ -1904,7 +1904,6 @@ static s32 ixgbe_get_eeprom_semaphore(st DEBUGFUNC("ixgbe_get_eeprom_semaphore"); - /* Get SMBI software semaphore between device drivers first */ for (i = 0; i < timeout; i++) { /* @@ -3389,7 +3388,6 @@ s32 ixgbe_disable_sec_rx_path_generic(st DEBUGFUNC("ixgbe_disable_sec_rx_path_generic"); - secrxreg = IXGBE_READ_REG(hw, IXGBE_SECRXCTRL); secrxreg |= IXGBE_SECRXCTRL_RX_DIS; IXGBE_WRITE_REG(hw, IXGBE_SECRXCTRL, secrxreg); @@ -4296,10 +4294,25 @@ s32 ixgbe_check_mac_link_generic(struct links_reg = IXGBE_READ_REG(hw, IXGBE_LINKS); } } else { - if (links_reg & IXGBE_LINKS_UP) + if (links_reg & IXGBE_LINKS_UP) { + if (ixgbe_need_crosstalk_fix(hw)) { + /* Check the link state again after a delay + * to filter out spurious link up + * notifications. + */ + msec_delay(5); + links_reg = IXGBE_READ_REG(hw, IXGBE_LINKS); + if (!(links_reg & IXGBE_LINKS_UP)) { + *link_up = false; + *speed = IXGBE_LINK_SPEED_UNKNOWN; + return IXGBE_SUCCESS; + } + + } *link_up = TRUE; - else + } else { *link_up = FALSE; + } } switch (links_reg & IXGBE_LINKS_SPEED_82599) { Index: src/sys/dev/pci/ixgbe/ixgbe_common.h diff -u src/sys/dev/pci/ixgbe/ixgbe_common.h:1.16.4.1 src/sys/dev/pci/ixgbe/ixgbe_common.h:1.16.4.2 --- src/sys/dev/pci/ixgbe/ixgbe_common.h:1.16.4.1 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_common.h Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_common.h,v 1.16.4.1 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixgbe_common.h,v 1.16.4.2 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -45,12 +45,10 @@ IXGBE_WRITE_REG(hw, reg + 4, (u32) (value >> 32)); \ } while (0) #define IXGBE_REMOVED(a) (0) -#if !defined(NO_READ_PBA_RAW) || !defined(NO_WRITE_PBA_RAW) struct ixgbe_pba { u16 word[2]; u16 *pba_block; }; -#endif void ixgbe_dcb_get_rtrup2tc_generic(struct ixgbe_hw *hw, u8 *map); Index: src/sys/dev/pci/ixgbe/ixgbe_dcb.c diff -u src/sys/dev/pci/ixgbe/ixgbe_dcb.c:1.13 src/sys/dev/pci/ixgbe/ixgbe_dcb.c:1.13.4.1 --- src/sys/dev/pci/ixgbe/ixgbe_dcb.c:1.13 Fri Dec 24 05:02:11 2021 +++ src/sys/dev/pci/ixgbe/ixgbe_dcb.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_dcb.c,v 1.13 2021/12/24 05:02:11 msaitoh Exp $ */ +/* $NetBSD: ixgbe_dcb.c,v 1.13.4.1 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_dcb.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_dcb.c,v 1.13 2021/12/24 05:02:11 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_dcb.c,v 1.13.4.1 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_type.h" #include "ixgbe_dcb.h" @@ -297,7 +297,7 @@ void ixgbe_dcb_unpack_map_cee(struct ixg } /** - * ixgbe_dcb_config - Struct containing DCB settings. + * ixgbe_dcb_check_config_cee - Struct containing DCB settings. * @dcb_config: Pointer to DCB config structure * * This function checks DCB rules for DCB settings. @@ -412,10 +412,8 @@ s32 ixgbe_dcb_get_tc_stats(struct ixgbe_ case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_get_tc_stats_82599(hw, stats, tc_count); break; -#endif default: break; } @@ -443,10 +441,8 @@ s32 ixgbe_dcb_get_pfc_stats(struct ixgbe case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_get_pfc_stats_82599(hw, stats, tc_count); break; -#endif default: break; } @@ -485,11 +481,9 @@ s32 ixgbe_dcb_config_rx_arbiter_cee(stru case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_rx_arbiter_82599(hw, refill, max, bwgid, tsa, map); break; -#endif default: break; } @@ -527,11 +521,9 @@ s32 ixgbe_dcb_config_tx_desc_arbiter_cee case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_tx_desc_arbiter_82599(hw, refill, max, bwgid, tsa); break; -#endif default: break; } @@ -571,12 +563,10 @@ s32 ixgbe_dcb_config_tx_data_arbiter_cee case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_tx_data_arbiter_82599(hw, refill, max, bwgid, tsa, map); break; -#endif default: break; } @@ -609,10 +599,8 @@ s32 ixgbe_dcb_config_pfc_cee(struct ixgb case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_pfc_82599(hw, pfc_en, map); break; -#endif default: break; } @@ -638,10 +626,8 @@ s32 ixgbe_dcb_config_tc_stats(struct ixg case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_tc_stats_82599(hw, NULL); break; -#endif default: break; } @@ -686,7 +672,6 @@ s32 ixgbe_dcb_hw_config_cee(struct ixgbe case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ixgbe_dcb_config_82599(hw, dcb_config); ret = ixgbe_dcb_hw_config_82599(hw, dcb_config->link_speed, refill, max, bwgid, @@ -694,7 +679,6 @@ s32 ixgbe_dcb_hw_config_cee(struct ixgbe ixgbe_dcb_config_tc_stats_82599(hw, dcb_config); break; -#endif default: break; } @@ -721,10 +705,8 @@ s32 ixgbe_dcb_config_pfc(struct ixgbe_hw case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_pfc_82599(hw, pfc_en, map); break; -#endif default: break; } @@ -747,7 +729,6 @@ s32 ixgbe_dcb_hw_config(struct ixgbe_hw case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ixgbe_dcb_config_rx_arbiter_82599(hw, refill, max, bwg_id, tsa, map); ixgbe_dcb_config_tx_desc_arbiter_82599(hw, refill, max, bwg_id, @@ -755,7 +736,6 @@ s32 ixgbe_dcb_hw_config(struct ixgbe_hw ixgbe_dcb_config_tx_data_arbiter_82599(hw, refill, max, bwg_id, tsa, map); break; -#endif default: break; } Index: src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c diff -u src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c:1.12 src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c:1.12.4.1 --- src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c:1.12 Fri Dec 24 05:02:11 2021 +++ src/sys/dev/pci/ixgbe/ixgbe_dcb_82598.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_dcb_82598.c,v 1.12 2021/12/24 05:02:11 msaitoh Exp $ */ +/* $NetBSD: ixgbe_dcb_82598.c,v 1.12.4.1 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_dcb_82598.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_dcb_82598.c,v 1.12 2021/12/24 05:02:11 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_dcb_82598.c,v 1.12.4.1 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_type.h" #include "ixgbe_dcb.h" @@ -364,6 +364,5 @@ s32 ixgbe_dcb_hw_config_82598(struct ixg tsa); ixgbe_dcb_config_tc_stats_82598(hw); - return IXGBE_SUCCESS; } Index: src/sys/dev/pci/ixgbe/ixgbe_type.h diff -u src/sys/dev/pci/ixgbe/ixgbe_type.h:1.55.4.3 src/sys/dev/pci/ixgbe/ixgbe_type.h:1.55.4.4 --- src/sys/dev/pci/ixgbe/ixgbe_type.h:1.55.4.3 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_type.h Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_type.h,v 1.55.4.3 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixgbe_type.h,v 1.55.4.4 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -108,6 +108,7 @@ #define IXGBE_DEV_ID_82599_KR 0x1517 #define IXGBE_DEV_ID_82599_COMBO_BACKPLANE PCI_PRODUCT_INTEL_82599_COMBO_BACKPLANE #define IXGBE_SUBDEV_ID_82599_KX4_KR_MEZZ 0x000C +#define IXGBE_DEV_ID_82599_LS 0x154F #define IXGBE_DEV_ID_82599_CX4 PCI_PRODUCT_INTEL_82599_CX4 #define IXGBE_DEV_ID_82599_SFP PCI_PRODUCT_INTEL_82599_SFP #define IXGBE_SUBDEV_ID_82599_SFP_WOL0 0x1071 @@ -3628,8 +3629,8 @@ union ixgbe_atr_input { * bkt_hash - 2 bytes */ struct { - u8 vm_pool; - u8 flow_type; + u8 vm_pool; + u8 flow_type; __be16 vlan_id; __be32 dst_ip[4]; __be32 src_ip[4]; @@ -3660,7 +3661,6 @@ union ixgbe_atr_hash_dword { __be32 dword; }; - #define IXGBE_MVALS_INIT(m) \ IXGBE_CAT(EEC, m), \ IXGBE_CAT(FLA, m), \ @@ -3796,6 +3796,7 @@ enum ixgbe_media_type { ixgbe_media_type_fiber, ixgbe_media_type_fiber_fixed, ixgbe_media_type_fiber_qsfp, + ixgbe_media_type_fiber_lco, ixgbe_media_type_copper, ixgbe_media_type_backplane, ixgbe_media_type_cx4, @@ -4165,11 +4166,11 @@ struct ixgbe_link_info { }; struct ixgbe_eeprom_info { - struct ixgbe_eeprom_operations ops; - enum ixgbe_eeprom_type type; - u32 semaphore_delay; - u16 word_size; - u16 address_bits; + struct ixgbe_eeprom_operations ops; + enum ixgbe_eeprom_type type; + u32 semaphore_delay; + u16 word_size; + u16 address_bits; u16 word_page_size; u16 ctrl_word_3; u8 nvm_image_ver_high; @@ -4178,34 +4179,34 @@ struct ixgbe_eeprom_info { #define IXGBE_FLAGS_DOUBLE_RESET_REQUIRED 0x01 struct ixgbe_mac_info { - struct ixgbe_mac_operations ops; - enum ixgbe_mac_type type; - u8 addr[IXGBE_ETH_LENGTH_OF_ADDRESS]; - u8 perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS]; - u8 san_addr[IXGBE_ETH_LENGTH_OF_ADDRESS]; + struct ixgbe_mac_operations ops; + enum ixgbe_mac_type type; + u8 addr[IXGBE_ETH_LENGTH_OF_ADDRESS]; + u8 perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS]; + u8 san_addr[IXGBE_ETH_LENGTH_OF_ADDRESS]; /* prefix for World Wide Node Name (WWNN) */ - u16 wwnn_prefix; + u16 wwnn_prefix; /* prefix for World Wide Port Name (WWPN) */ - u16 wwpn_prefix; + u16 wwpn_prefix; #define IXGBE_MAX_MTA 128 - u32 mta_shadow[IXGBE_MAX_MTA]; - s32 mc_filter_type; - u32 mcft_size; - u32 vft_size; - u32 num_rar_entries; - u32 rar_highwater; - u32 rx_pb_size; - u32 max_tx_queues; - u32 max_rx_queues; - u32 orig_autoc; + u32 mta_shadow[IXGBE_MAX_MTA]; + s32 mc_filter_type; + u32 mcft_size; + u32 vft_size; + u32 num_rar_entries; + u32 rar_highwater; + u32 rx_pb_size; + u32 max_tx_queues; + u32 max_rx_queues; + u32 orig_autoc; u8 san_mac_rar_index; bool get_link_status; - u32 orig_autoc2; + u32 orig_autoc2; u16 max_msix_vectors; bool arc_subsystem_valid; - bool orig_link_settings_stored; - bool autotry_restart; - u8 flags; + bool orig_link_settings_stored; + bool autotry_restart; + u8 flags; struct ixgbe_dmac_config dmac_config; bool set_lben; u32 max_link_up_time; @@ -4213,25 +4214,25 @@ struct ixgbe_mac_info { }; struct ixgbe_phy_info { - struct ixgbe_phy_operations ops; - enum ixgbe_phy_type type; - u32 addr; - u32 id; - enum ixgbe_sfp_type sfp_type; - bool sfp_setup_needed; - u32 revision; - enum ixgbe_media_type media_type; + struct ixgbe_phy_operations ops; + enum ixgbe_phy_type type; + u32 addr; + u32 id; + enum ixgbe_sfp_type sfp_type; + bool sfp_setup_needed; + u32 revision; + enum ixgbe_media_type media_type; u32 phy_semaphore_mask; - bool reset_disable; - bool force_10_100_autonego; - ixgbe_autoneg_advertised autoneg_advertised; + bool reset_disable; + bool force_10_100_autonego; + ixgbe_autoneg_advertised autoneg_advertised; ixgbe_link_speed speeds_supported; ixgbe_link_speed eee_speeds_supported; ixgbe_link_speed eee_speeds_advertised; - enum ixgbe_smart_speed smart_speed; - bool smart_speed_active; - bool multispeed_fiber; - bool reset_if_overtemp; + enum ixgbe_smart_speed smart_speed; + bool smart_speed_active; + bool multispeed_fiber; + bool reset_if_overtemp; bool qsfp_shared_i2c_bus; u32 nw_mng_if_sel; }; @@ -4240,21 +4241,21 @@ struct ixgbe_phy_info { struct ixgbe_hw { struct ixgbe_softc *back; - struct ixgbe_mac_info mac; - struct ixgbe_addr_filter_info addr_ctrl; - struct ixgbe_fc_info fc; - struct ixgbe_phy_info phy; + struct ixgbe_mac_info mac; + struct ixgbe_addr_filter_info addr_ctrl; + struct ixgbe_fc_info fc; + struct ixgbe_phy_info phy; struct ixgbe_link_info link; - struct ixgbe_eeprom_info eeprom; - struct ixgbe_bus_info bus; - struct ixgbe_mbx_info mbx; + struct ixgbe_eeprom_info eeprom; + struct ixgbe_bus_info bus; + struct ixgbe_mbx_info mbx; const u32 *mvals; - u16 device_id; - u16 vendor_id; - u16 subsystem_device_id; - u16 subsystem_vendor_id; - u8 revision_id; - bool adapter_stopped; + u16 device_id; + u16 vendor_id; + u16 subsystem_device_id; + u16 subsystem_vendor_id; + u8 revision_id; + bool adapter_stopped; int api_version; bool force_full_reset; bool allow_unsupported_sfp; @@ -4267,7 +4268,6 @@ struct ixgbe_hw { #define ixgbe_call_func(hw, func, params, error) \ (func != NULL) ? func params : error - /* Error Codes */ #define IXGBE_SUCCESS 0 #define IXGBE_ERR_EEPROM -1 @@ -4318,7 +4318,6 @@ struct ixgbe_hw { #define IXGBE_ERR_FAN_FAILURE -52 /* XXX NetBSD */ #define IXGBE_NOT_IMPLEMENTED 0x7FFFFFFF - #define BYPASS_PAGE_CTL0 0x00000000 #define BYPASS_PAGE_CTL1 0x40000000 #define BYPASS_PAGE_CTL2 0x80000000 Index: src/sys/dev/pci/ixgbe/ixgbe_x540.c diff -u src/sys/dev/pci/ixgbe/ixgbe_x540.c:1.23 src/sys/dev/pci/ixgbe/ixgbe_x540.c:1.23.4.1 --- src/sys/dev/pci/ixgbe/ixgbe_x540.c:1.23 Fri Dec 24 05:11:04 2021 +++ src/sys/dev/pci/ixgbe/ixgbe_x540.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_x540.c,v 1.23 2021/12/24 05:11:04 msaitoh Exp $ */ +/* $NetBSD: ixgbe_x540.c,v 1.23.4.1 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -36,7 +36,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_x540.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_x540.c,v 1.23 2021/12/24 05:11:04 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_x540.c,v 1.23.4.1 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_x540.h" #include "ixgbe_type.h" @@ -75,7 +75,6 @@ s32 ixgbe_init_ops_X540(struct ixgbe_hw ret_val = ixgbe_init_phy_ops_generic(hw); ret_val = ixgbe_init_ops_generic(hw); - /* EEPROM */ eeprom->ops.init_params = ixgbe_init_eeprom_params_X540; eeprom->ops.read = ixgbe_read_eerd_X540; @@ -135,7 +134,6 @@ s32 ixgbe_init_ops_X540(struct ixgbe_hw mac->ops.bypass_set = ixgbe_bypass_set_generic; mac->ops.bypass_rd_eep = ixgbe_bypass_rd_eep_generic; - mac->mcft_size = IXGBE_X540_MC_TBL_SIZE; mac->vft_size = IXGBE_X540_VFT_TBL_SIZE; mac->num_rar_entries = IXGBE_X540_RAR_ENTRIES; Index: src/sys/dev/pci/ixgbe/ixgbe_x550.c diff -u src/sys/dev/pci/ixgbe/ixgbe_x550.c:1.26.4.1 src/sys/dev/pci/ixgbe/ixgbe_x550.c:1.26.4.2 --- src/sys/dev/pci/ixgbe/ixgbe_x550.c:1.26.4.1 Fri Oct 13 18:16:50 2023 +++ src/sys/dev/pci/ixgbe/ixgbe_x550.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe_x550.c,v 1.26.4.1 2023/10/13 18:16:50 martin Exp $ */ +/* $NetBSD: ixgbe_x550.c,v 1.26.4.2 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/ixgbe_x550.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe_x550.c,v 1.26.4.1 2023/10/13 18:16:50 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe_x550.c,v 1.26.4.2 2023/10/13 18:55:12 martin Exp $"); #include "ixgbe_x550.h" #include "ixgbe_x540.h" @@ -786,7 +786,6 @@ s32 ixgbe_init_ops_X550EM(struct ixgbe_h if (mac->ops.get_media_type(hw) != ixgbe_media_type_copper) phy->ops.set_phy_power = NULL; - /* EEPROM */ eeprom->ops.init_params = ixgbe_init_eeprom_params_X540; eeprom->ops.read = ixgbe_read_ee_hostif_X550; @@ -922,7 +921,7 @@ out: } /** - * ixgbe_fc_autoneg_fw _ Set up flow control for FW-controlled PHYs + * ixgbe_fc_autoneg_fw - Set up flow control for FW-controlled PHYs * @hw: pointer to hardware structure * * Called at init time to set up flow control. @@ -2048,7 +2047,7 @@ void ixgbe_init_mac_link_ops_X550em(stru } /** - * ixgbe_get_link_capabilities_x550em - Determines link capabilities + * ixgbe_get_link_capabilities_X550em - Determines link capabilities * @hw: pointer to hardware structure * @speed: pointer to link speed * @autoneg: TRUE when autoneg or autotry is enabled @@ -2059,7 +2058,6 @@ s32 ixgbe_get_link_capabilities_X550em(s { DEBUGFUNC("ixgbe_get_link_capabilities_X550em"); - if (hw->phy.type == ixgbe_phy_fw) { *autoneg = TRUE; *speed = hw->phy.speeds_supported; @@ -3416,7 +3414,7 @@ out: } /** - * ixgbe_write_ee_hostif_X550 - Write EEPROM word using hostif + * ixgbe_write_ee_hostif_data_X550 - Write EEPROM word using hostif * @hw: pointer to hardware structure * @offset: offset of word in the EEPROM to write * @data: word write to the EEPROM @@ -3883,7 +3881,7 @@ u64 ixgbe_get_supported_physical_layer_X } /** - * ixgbe_get_bus_info_x550em - Set PCI bus info + * ixgbe_get_bus_info_X550em - Set PCI bus info * @hw: pointer to hardware structure * * Sets bus link width and speed to unknown because X550em is @@ -3948,7 +3946,7 @@ void ixgbe_disable_rx_x550(struct ixgbe_ } /** - * ixgbe_enter_lplu_x550em - Transition to low power states + * ixgbe_enter_lplu_t_x550em - Transition to low power states * @hw: pointer to hardware structure * * Configures Low Power Link Up on transition to low power states @@ -4056,7 +4054,7 @@ s32 ixgbe_enter_lplu_t_x550em(struct ixg } /** - * ixgbe_get_lcd_x550em - Determine lowest common denominator + * ixgbe_get_lcd_t_x550em - Determine lowest common denominator * @hw: pointer to hardware structure * @lcd_speed: pointer to lowest common link speed * Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.183.4.2 src/sys/dev/pci/ixgbe/ixv.c:1.183.4.3 --- src/sys/dev/pci/ixgbe/ixv.c:1.183.4.2 Fri Oct 13 18:16:51 2023 +++ src/sys/dev/pci/ixgbe/ixv.c Fri Oct 13 18:55:12 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ixv.c,v 1.183.4.2 2023/10/13 18:16:51 martin Exp $ */ +/* $NetBSD: ixv.c,v 1.183.4.3 2023/10/13 18:55:12 martin Exp $ */ /****************************************************************************** @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.183.4.2 2023/10/13 18:16:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.183.4.3 2023/10/13 18:55:12 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -217,11 +217,11 @@ static bool ixv_txrx_workqueue = false; * setting higher than RX as this seems * the better performing choice. */ -static int ixv_txd = PERFORM_TXD; +static int ixv_txd = DEFAULT_TXD; TUNABLE_INT("hw.ixv.txd", &ixv_txd); /* Number of RX descriptors per ring */ -static int ixv_rxd = PERFORM_RXD; +static int ixv_rxd = DEFAULT_RXD; TUNABLE_INT("hw.ixv.rxd", &ixv_rxd); /* Legacy Transmit (single queue) */ @@ -501,14 +501,26 @@ ixv_attach(device_t parent, device_t dev /* Do descriptor calc and sanity checks */ if (((ixv_txd * sizeof(union ixgbe_adv_tx_desc)) % DBA_ALIGN) != 0 || ixv_txd < MIN_TXD || ixv_txd > MAX_TXD) { - aprint_error_dev(dev, "TXD config issue, using default!\n"); + aprint_error_dev(dev, "Invalid TX ring size (%d). " + "It must be between %d and %d, " + "inclusive, and must be a multiple of %zu. " + "Using default value of %d instead.\n", + ixv_txd, MIN_TXD, MAX_TXD, + DBA_ALIGN / sizeof(union ixgbe_adv_tx_desc), + DEFAULT_TXD); sc->num_tx_desc = DEFAULT_TXD; } else sc->num_tx_desc = ixv_txd; if (((ixv_rxd * sizeof(union ixgbe_adv_rx_desc)) % DBA_ALIGN) != 0 || ixv_rxd < MIN_RXD || ixv_rxd > MAX_RXD) { - aprint_error_dev(dev, "RXD config issue, using default!\n"); + aprint_error_dev(dev, "Invalid RX ring size (%d). " + "It must be between %d and %d, " + "inclusive, and must be a multiple of %zu. " + "Using default value of %d instead.\n", + ixv_rxd, MIN_RXD, MAX_RXD, + DBA_ALIGN / sizeof(union ixgbe_adv_rx_desc), + DEFAULT_RXD); sc->num_rx_desc = DEFAULT_RXD; } else sc->num_rx_desc = ixv_rxd; @@ -811,17 +823,17 @@ ixv_init_locked(struct ixgbe_softc *sc) /* OK to schedule workqueues. */ sc->schedule_wqs_ok = true; - /* And now turn on interrupts */ - ixv_enable_intr(sc); - /* Update saved flags. See ixgbe_ifflags_cb() */ sc->if_flags = ifp->if_flags; sc->ec_capenable = sc->osdep.ec.ec_capenable; - /* Now inform the stack we're ready */ + /* Inform the stack we're ready */ ifp->if_flags |= IFF_RUNNING; ifp->if_flags &= ~IFF_OACTIVE; + /* And now turn on interrupts */ + ixv_enable_intr(sc); + return; } /* ixv_init_locked */