Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'intel-wired-lan-driver-updates-2024-02-28-ixgbe-igc-igb-e1000e-e100'

Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2024-02-28 (ixgbe, igc, igb, e1000e, e100)

This series contains updates to ixgbe, igc, igb, e1000e, and e100
drivers.

Jon Maxwell makes module parameter values readable in sysfs for ixgbe,
igb, and e100.

Ernesto Castellotti adds support for 1000BASE-BX on ixgbe.

Arnd Bergmann fixes build failure due to dependency issues for igc.

Vitaly refactors error check to be more concise and prevent future
issues on e1000e.

v1: https://lore.kernel.org/netdev/20240229004135.741586-1-anthony.l.nguyen@intel.com/
====================

Link: https://lore.kernel.org/r/20240301184806.2634508-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+47 -13
+1
drivers/net/ethernet/intel/Kconfig
··· 372 372 config IGC_LEDS 373 373 def_bool LEDS_TRIGGER_NETDEV 374 374 depends on IGC && LEDS_CLASS 375 + depends on LEDS_CLASS=y || IGC=m 375 376 help 376 377 Optional support for controlling the NIC LED's with the netdev 377 378 LED trigger.
+2 -2
drivers/net/ethernet/intel/e100.c
··· 171 171 static int eeprom_bad_csum_allow = 0; 172 172 static int use_io = 0; 173 173 module_param(debug, int, 0); 174 - module_param(eeprom_bad_csum_allow, int, 0); 175 - module_param(use_io, int, 0); 174 + module_param(eeprom_bad_csum_allow, int, 0444); 175 + module_param(use_io, int, 0444); 176 176 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); 177 177 MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad eeprom checksums"); 178 178 MODULE_PARM_DESC(use_io, "Force use of i/o access mode");
+4 -4
drivers/net/ethernet/intel/e1000e/netdev.c
··· 6688 6688 if (adapter->hw.phy.type == e1000_phy_igp_3) { 6689 6689 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); 6690 6690 } else if (hw->mac.type >= e1000_pch_lpt) { 6691 - if (wufc && !(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC))) 6691 + if (wufc && !(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC))) { 6692 6692 /* ULP does not support wake from unicast, multicast 6693 6693 * or broadcast. 6694 6694 */ 6695 6695 retval = e1000_enable_ulp_lpt_lp(hw, !runtime); 6696 - 6697 - if (retval) 6698 - return retval; 6696 + if (retval) 6697 + return retval; 6698 + } 6699 6699 } 6700 6700 6701 6701 /* Ensure that the appropriate bits are set in LPI_CTRL
+1 -1
drivers/net/ethernet/intel/igb/igb_main.c
··· 202 202 #endif 203 203 #ifdef CONFIG_PCI_IOV 204 204 static unsigned int max_vfs; 205 - module_param(max_vfs, uint, 0); 205 + module_param(max_vfs, uint, 0444); 206 206 MODULE_PARM_DESC(max_vfs, "Maximum number of virtual functions to allocate per physical function"); 207 207 #endif /* CONFIG_PCI_IOV */ 208 208
+3 -1
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
··· 334 334 hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || 335 335 hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || 336 336 hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || 337 - hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1) { 337 + hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 || 338 + hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core0 || 339 + hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core1) { 338 340 *speed = IXGBE_LINK_SPEED_1GB_FULL; 339 341 *autoneg = true; 340 342 return 0;
+2
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
··· 349 349 case ixgbe_sfp_type_1g_sx_core1: 350 350 case ixgbe_sfp_type_1g_lx_core0: 351 351 case ixgbe_sfp_type_1g_lx_core1: 352 + case ixgbe_sfp_type_1g_bx_core0: 353 + case ixgbe_sfp_type_1g_bx_core1: 352 354 ethtool_link_ksettings_add_link_mode(cmd, supported, 353 355 FIBRE); 354 356 ethtool_link_ksettings_add_link_mode(cmd, advertising,
+1 -1
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
··· 153 153 #endif /* CONFIG_PCI_IOV */ 154 154 155 155 static bool allow_unsupported_sfp; 156 - module_param(allow_unsupported_sfp, bool, 0); 156 + module_param(allow_unsupported_sfp, bool, 0444); 157 157 MODULE_PARM_DESC(allow_unsupported_sfp, 158 158 "Allow unsupported and untested SFP+ modules on 82599-based adapters"); 159 159
+28 -4
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c
··· 1532 1532 enum ixgbe_sfp_type stored_sfp_type = hw->phy.sfp_type; 1533 1533 struct ixgbe_adapter *adapter = hw->back; 1534 1534 u8 oui_bytes[3] = {0, 0, 0}; 1535 + u8 bitrate_nominal = 0; 1535 1536 u8 comp_codes_10g = 0; 1536 1537 u8 comp_codes_1g = 0; 1537 1538 u16 enforce_sfp = 0; ··· 1577 1576 status = hw->phy.ops.read_i2c_eeprom(hw, 1578 1577 IXGBE_SFF_CABLE_TECHNOLOGY, 1579 1578 &cable_tech); 1579 + if (status) 1580 + goto err_read_i2c_eeprom; 1580 1581 1582 + status = hw->phy.ops.read_i2c_eeprom(hw, 1583 + IXGBE_SFF_BITRATE_NOMINAL, 1584 + &bitrate_nominal); 1581 1585 if (status) 1582 1586 goto err_read_i2c_eeprom; 1583 1587 ··· 1665 1659 else 1666 1660 hw->phy.sfp_type = 1667 1661 ixgbe_sfp_type_1g_lx_core1; 1662 + /* Support only Ethernet 1000BASE-BX10, checking the Bit Rate 1663 + * Nominal Value as per SFF-8472 by convention 1.25 Gb/s should 1664 + * be rounded up to 0Dh (13 in units of 100 MBd) for 1000BASE-BX 1665 + */ 1666 + } else if ((comp_codes_1g & IXGBE_SFF_BASEBX10_CAPABLE) && 1667 + (bitrate_nominal == 0xD)) { 1668 + if (hw->bus.lan_id == 0) 1669 + hw->phy.sfp_type = 1670 + ixgbe_sfp_type_1g_bx_core0; 1671 + else 1672 + hw->phy.sfp_type = 1673 + ixgbe_sfp_type_1g_bx_core1; 1668 1674 } else { 1669 1675 hw->phy.sfp_type = ixgbe_sfp_type_unknown; 1670 1676 } ··· 1765 1747 hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || 1766 1748 hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || 1767 1749 hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || 1768 - hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1)) { 1750 + hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 || 1751 + hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core0 || 1752 + hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core1)) { 1769 1753 hw->phy.type = ixgbe_phy_sfp_unsupported; 1770 1754 return -EOPNOTSUPP; 1771 1755 } ··· 1783 1763 hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || 1784 1764 hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || 1785 1765 hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || 1786 - hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1)) { 1766 + hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 || 1767 + hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core0 || 1768 + hw->phy.sfp_type == ixgbe_sfp_type_1g_bx_core1)) { 1787 1769 /* Make sure we're a supported PHY type */ 1788 1770 if (hw->phy.type == ixgbe_phy_sfp_intel) 1789 1771 return 0; ··· 2021 1999 if (sfp_type == ixgbe_sfp_type_da_act_lmt_core0 || 2022 2000 sfp_type == ixgbe_sfp_type_1g_lx_core0 || 2023 2001 sfp_type == ixgbe_sfp_type_1g_cu_core0 || 2024 - sfp_type == ixgbe_sfp_type_1g_sx_core0) 2002 + sfp_type == ixgbe_sfp_type_1g_sx_core0 || 2003 + sfp_type == ixgbe_sfp_type_1g_bx_core0) 2025 2004 sfp_type = ixgbe_sfp_type_srlr_core0; 2026 2005 else if (sfp_type == ixgbe_sfp_type_da_act_lmt_core1 || 2027 2006 sfp_type == ixgbe_sfp_type_1g_lx_core1 || 2028 2007 sfp_type == ixgbe_sfp_type_1g_cu_core1 || 2029 - sfp_type == ixgbe_sfp_type_1g_sx_core1) 2008 + sfp_type == ixgbe_sfp_type_1g_sx_core1 || 2009 + sfp_type == ixgbe_sfp_type_1g_bx_core1) 2030 2010 sfp_type = ixgbe_sfp_type_srlr_core1; 2031 2011 2032 2012 /* Read offset to PHY init contents */
+2
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h
··· 17 17 #define IXGBE_SFF_1GBE_COMP_CODES 0x6 18 18 #define IXGBE_SFF_10GBE_COMP_CODES 0x3 19 19 #define IXGBE_SFF_CABLE_TECHNOLOGY 0x8 20 + #define IXGBE_SFF_BITRATE_NOMINAL 0xC 20 21 #define IXGBE_SFF_CABLE_SPEC_COMP 0x3C 21 22 #define IXGBE_SFF_SFF_8472_SWAP 0x5C 22 23 #define IXGBE_SFF_SFF_8472_COMP 0x5E ··· 40 39 #define IXGBE_SFF_1GBASESX_CAPABLE 0x1 41 40 #define IXGBE_SFF_1GBASELX_CAPABLE 0x2 42 41 #define IXGBE_SFF_1GBASET_CAPABLE 0x8 42 + #define IXGBE_SFF_BASEBX10_CAPABLE 0x64 43 43 #define IXGBE_SFF_10GBASESR_CAPABLE 0x10 44 44 #define IXGBE_SFF_10GBASELR_CAPABLE 0x20 45 45 #define IXGBE_SFF_SOFT_RS_SELECT_MASK 0x8
+3
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
··· 3210 3210 ixgbe_sfp_type_1g_sx_core1 = 12, 3211 3211 ixgbe_sfp_type_1g_lx_core0 = 13, 3212 3212 ixgbe_sfp_type_1g_lx_core1 = 14, 3213 + ixgbe_sfp_type_1g_bx_core0 = 15, 3214 + ixgbe_sfp_type_1g_bx_core1 = 16, 3215 + 3213 3216 ixgbe_sfp_type_not_present = 0xFFFE, 3214 3217 ixgbe_sfp_type_unknown = 0xFFFF 3215 3218 };