]> www.infradead.org Git - users/hch/misc.git/commitdiff
ixgbe: add the 2.5G and 5G speeds in auto-negotiation for E610
authorPiotr Kwapulinski <piotr.kwapulinski@intel.com>
Fri, 4 Jul 2025 13:06:24 +0000 (15:06 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Wed, 3 Sep 2025 17:07:26 +0000 (10:07 -0700)
The auto-negotiation limitation for 2.5G and 5G speeds is no longer true
for X550 successors like E610 adapter. Enable the 2.5G and 5G speeds in
auto-negotiation for E610 at driver load.

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Piotr Kwapulinski <piotr.kwapulinski@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_e610.c

index bfeef5b0b99d87ea98d27fd3f763d99da775633f..7d4f12b69ee2e73530b16efae4c9dccb7cc199a9 100644 (file)
@@ -1953,6 +1953,16 @@ int ixgbe_identify_phy_e610(struct ixgbe_hw *hw)
            phy_type_low  & IXGBE_PHY_TYPE_LOW_1G_SGMII    ||
            phy_type_high & IXGBE_PHY_TYPE_HIGH_1G_USXGMII)
                hw->phy.speeds_supported |= IXGBE_LINK_SPEED_1GB_FULL;
+       if (phy_type_low  & IXGBE_PHY_TYPE_LOW_2500BASE_T   ||
+           phy_type_low  & IXGBE_PHY_TYPE_LOW_2500BASE_X   ||
+           phy_type_low  & IXGBE_PHY_TYPE_LOW_2500BASE_KX  ||
+           phy_type_high & IXGBE_PHY_TYPE_HIGH_2500M_SGMII ||
+           phy_type_high & IXGBE_PHY_TYPE_HIGH_2500M_USXGMII)
+               hw->phy.speeds_supported |= IXGBE_LINK_SPEED_2_5GB_FULL;
+       if (phy_type_low  & IXGBE_PHY_TYPE_LOW_5GBASE_T  ||
+           phy_type_low  & IXGBE_PHY_TYPE_LOW_5GBASE_KR ||
+           phy_type_high & IXGBE_PHY_TYPE_HIGH_5G_USXGMII)
+               hw->phy.speeds_supported |= IXGBE_LINK_SPEED_5GB_FULL;
        if (phy_type_low  & IXGBE_PHY_TYPE_LOW_10GBASE_T       ||
            phy_type_low  & IXGBE_PHY_TYPE_LOW_10G_SFI_DA      ||
            phy_type_low  & IXGBE_PHY_TYPE_LOW_10GBASE_SR      ||
@@ -1963,31 +1973,10 @@ int ixgbe_identify_phy_e610(struct ixgbe_hw *hw)
            phy_type_high & IXGBE_PHY_TYPE_HIGH_10G_USXGMII)
                hw->phy.speeds_supported |= IXGBE_LINK_SPEED_10GB_FULL;
 
-       /* 2.5 and 5 Gbps link speeds must be excluded from the
-        * auto-negotiation set used during driver initialization due to
-        * compatibility issues with certain switches. Those issues do not
-        * exist in case of E610 2.5G SKU device (0x57b1).
-        */
-       if (!hw->phy.autoneg_advertised &&
-           hw->device_id != IXGBE_DEV_ID_E610_2_5G_T)
+       /* Initialize autoneg speeds */
+       if (!hw->phy.autoneg_advertised)
                hw->phy.autoneg_advertised = hw->phy.speeds_supported;
 
-       if (phy_type_low  & IXGBE_PHY_TYPE_LOW_2500BASE_T   ||
-           phy_type_low  & IXGBE_PHY_TYPE_LOW_2500BASE_X   ||
-           phy_type_low  & IXGBE_PHY_TYPE_LOW_2500BASE_KX  ||
-           phy_type_high & IXGBE_PHY_TYPE_HIGH_2500M_SGMII ||
-           phy_type_high & IXGBE_PHY_TYPE_HIGH_2500M_USXGMII)
-               hw->phy.speeds_supported |= IXGBE_LINK_SPEED_2_5GB_FULL;
-
-       if (!hw->phy.autoneg_advertised &&
-           hw->device_id == IXGBE_DEV_ID_E610_2_5G_T)
-               hw->phy.autoneg_advertised = hw->phy.speeds_supported;
-
-       if (phy_type_low  & IXGBE_PHY_TYPE_LOW_5GBASE_T  ||
-           phy_type_low  & IXGBE_PHY_TYPE_LOW_5GBASE_KR ||
-           phy_type_high & IXGBE_PHY_TYPE_HIGH_5G_USXGMII)
-               hw->phy.speeds_supported |= IXGBE_LINK_SPEED_5GB_FULL;
-
        /* Set PHY ID */
        memcpy(&hw->phy.id, pcaps.phy_id_oui, sizeof(u32));