bnxt_en: Set backplane link modes correctly for ethtool
authorShravya KN <shravya.k-n@broadcom.com>
Fri, 22 Nov 2024 22:45:42 +0000 (14:45 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 26 Nov 2024 14:29:31 +0000 (15:29 +0100)
Use the return value from bnxt_get_media() to determine the port and
link modes.  bnxt_get_media() returns the proper BNXT_MEDIA_KR when
the PHY is backplane.  This will correct the ethtool settings for
backplane devices.

Fixes: 5d4e1bf60664 ("bnxt_en: extend media types to supported and autoneg modes")
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

index 2f4987e..f1f6bb3 100644 (file)
@@ -2837,19 +2837,24 @@ static int bnxt_get_link_ksettings(struct net_device *dev,
        }
 
        base->port = PORT_NONE;
-       if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {
+       if (media == BNXT_MEDIA_TP) {
                base->port = PORT_TP;
                linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT,
                                 lk_ksettings->link_modes.supported);
                linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT,
                                 lk_ksettings->link_modes.advertising);
+       } else if (media == BNXT_MEDIA_KR) {
+               linkmode_set_bit(ETHTOOL_LINK_MODE_Backplane_BIT,
+                                lk_ksettings->link_modes.supported);
+               linkmode_set_bit(ETHTOOL_LINK_MODE_Backplane_BIT,
+                                lk_ksettings->link_modes.advertising);
        } else {
                linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
                                 lk_ksettings->link_modes.supported);
                linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
                                 lk_ksettings->link_modes.advertising);
 
-               if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC)
+               if (media == BNXT_MEDIA_CR)
                        base->port = PORT_DA;
                else
                        base->port = PORT_FIBRE;