]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnxt_en: Add 100G link speed reporting for BCM57454 ASIC in ethtool
authorDeepak Khungar <deepak.khungar@broadcom.com>
Sat, 22 Apr 2017 00:11:24 +0000 (20:11 -0400)
committerSomasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Tue, 11 Jul 2017 00:04:09 +0000 (17:04 -0700)
Orabug: 264025332632559926366387

Added support for 100G link speed reporting for Broadcom BCM57454
ASIC in ethtool command.

Signed-off-by: Deepak Khungar <deepak.khungar@broadcom.com>
Signed-off-by: Ray Jui <ray.jui@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 38a21b34aacd4db7b7b74c61afae42ea6718448d)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Conflicts:
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

index a86238cd173308b858a84d486930e5db8e6fa4ae..1e3f1988c0d30d1c94157c3c2fce841414daa2d0 100644 (file)
@@ -5501,7 +5501,8 @@ static void bnxt_report_link(struct bnxt *bp)
        if (bp->link_info.link_up) {
                const char *duplex;
                const char *flow_ctrl;
-               u16 speed, fec;
+               u32 speed;
+               u16 fec;
 
                netif_carrier_on(bp->dev);
                if (bp->link_info.duplex == BNXT_LINK_DUPLEX_FULL)
@@ -5517,7 +5518,7 @@ static void bnxt_report_link(struct bnxt *bp)
                else
                        flow_ctrl = "none";
                speed = bnxt_fw_to_ethtool_speed(bp->link_info.link_speed);
-               netdev_info(bp->dev, "NIC Link is Up, %d Mbps %s duplex, Flow control: %s\n",
+               netdev_info(bp->dev, "NIC Link is Up, %u Mbps %s duplex, Flow control: %s\n",
                            speed, duplex, flow_ctrl);
                if (bp->flags & BNXT_FLAG_EEE_CAP)
                        netdev_info(bp->dev, "EEE is %s\n",
index c3b2a1487f493c92b9fccd2233f670957fda3a32..ce0368de3aa293e5b4360aec2fcfbbffbc68510a 100644 (file)
@@ -842,6 +842,7 @@ struct bnxt_link_info {
 #define BNXT_LINK_SPEED_25GB   PORT_PHY_QCFG_RESP_LINK_SPEED_25GB
 #define BNXT_LINK_SPEED_40GB   PORT_PHY_QCFG_RESP_LINK_SPEED_40GB
 #define BNXT_LINK_SPEED_50GB   PORT_PHY_QCFG_RESP_LINK_SPEED_50GB
+#define BNXT_LINK_SPEED_100GB  PORT_PHY_QCFG_RESP_LINK_SPEED_100GB
        u16                     support_speeds;
        u16                     auto_link_speeds;       /* fw adv setting */
 #define BNXT_LINK_SPEED_MSK_100MB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MB
@@ -853,6 +854,7 @@ struct bnxt_link_info {
 #define BNXT_LINK_SPEED_MSK_25GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB
 #define BNXT_LINK_SPEED_MSK_40GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB
 #define BNXT_LINK_SPEED_MSK_50GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB
+#define BNXT_LINK_SPEED_MSK_100GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB
        u16                     support_auto_speeds;
        u16                     lp_auto_link_speeds;
        u16                     force_link_speed;
index e6ae828549d2a2ba14b54b5d272e57cefbdeed76..45e91a845cfa2685b3f8556d8e67e23183e235a8 100644 (file)
@@ -956,6 +956,9 @@ u32 _bnxt_fw_to_ethtool_adv_spds(u16 fw_speeds, u8 fw_pause)
        if ((fw_speeds) & BNXT_LINK_SPEED_MSK_50GB)                     \
                ethtool_link_ksettings_add_link_mode(lk_ksettings, name,\
                                                     50000baseCR2_Full);\
+       if ((fw_speeds) & BNXT_LINK_SPEED_MSK_100GB)                    \
+               ethtool_link_ksettings_add_link_mode(lk_ksettings, name,\
+                                                    100000baseCR4_Full);\
        if ((fw_pause) & BNXT_LINK_PAUSE_RX) {                          \
                ethtool_link_ksettings_add_link_mode(lk_ksettings, name,\
                                                     Pause);            \
@@ -992,6 +995,9 @@ u32 _bnxt_fw_to_ethtool_adv_spds(u16 fw_speeds, u8 fw_pause)
        if (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,   \
                                                  50000baseCR2_Full))   \
                (fw_speeds) |= BNXT_LINK_SPEED_MSK_50GB;                \
+       if (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,   \
+                                                 100000baseCR4_Full))  \
+               (fw_speeds) |= BNXT_LINK_SPEED_MSK_100GB;               \
 }
 
 static void bnxt_fw_to_ethtool_advertised_spds(struct bnxt_link_info *link_info,
@@ -1099,6 +1105,8 @@ u32 bnxt_fw_to_ethtool_speed(u16 fw_link_speed)
                return SPEED_40000;
        case BNXT_LINK_SPEED_50GB:
                return SPEED_50000;
+       case BNXT_LINK_SPEED_100GB:
+               return SPEED_100000;
        default:
                return SPEED_UNKNOWN;
        }
@@ -1231,7 +1239,7 @@ static int bnxt_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
 }
 #endif
 
-static u32 bnxt_get_fw_speed(struct net_device *dev, u16 ethtool_speed)
+static u32 bnxt_get_fw_speed(struct net_device *dev, u32 ethtool_speed)
 {
        struct bnxt *bp = netdev_priv(dev);
        struct bnxt_link_info *link_info = &bp->link_info;
@@ -1271,6 +1279,10 @@ static u32 bnxt_get_fw_speed(struct net_device *dev, u16 ethtool_speed)
                if (support_spds & BNXT_LINK_SPEED_MSK_50GB)
                        fw_speed = PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB;
                break;
+       case SPEED_100000:
+               if (support_spds & BNXT_LINK_SPEED_MSK_100GB)
+                       fw_speed = PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB;
+               break;
        default:
                netdev_err(dev, "unsupported speed!\n");
                break;