]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnxt_en: Print FEC settings as part of the linkup dmesg.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 13 Feb 2017 00:18:16 +0000 (19:18 -0500)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 6 Mar 2017 21:35:39 +0000 (13:35 -0800)
Orabug: 25645429

Print FEC (Forward Error Correction) autoneg and encoding settings during
link up.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit e70c752f88ed23e6a0f081fa408282c2450c8ce9)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h

index d3530c27e478b68a743548f6bd8bbd75a9dbc7bf..af597a71dd4c428981e6e2cf45474bfeb244f1cc 100644 (file)
@@ -5429,7 +5429,7 @@ static void bnxt_report_link(struct bnxt *bp)
        if (bp->link_info.link_up) {
                const char *duplex;
                const char *flow_ctrl;
-               u16 speed;
+               u16 speed, fec;
 
                netif_carrier_on(bp->dev);
                if (bp->link_info.duplex == BNXT_LINK_DUPLEX_FULL)
@@ -5451,6 +5451,12 @@ static void bnxt_report_link(struct bnxt *bp)
                        netdev_info(bp->dev, "EEE is %s\n",
                                    bp->eee.eee_active ? "active" :
                                                         "not active");
+               fec = bp->link_info.fec_cfg;
+               if (!(fec & PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED))
+                       netdev_info(bp->dev, "FEC autoneg %s encodings: %s\n",
+                                   (fec & BNXT_FEC_AUTONEG) ? "on" : "off",
+                                   (fec & BNXT_FEC_ENC_BASE_R) ? "BaseR" :
+                                    (fec & BNXT_FEC_ENC_RS) ? "RS" : "None");
        } else {
                netif_carrier_off(bp->dev);
                netdev_err(bp->dev, "NIC Link is Down\n");
@@ -5575,6 +5581,11 @@ static int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
                        }
                }
        }
+
+       link_info->fec_cfg = PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED;
+       if (bp->hwrm_spec_code >= 0x10504)
+               link_info->fec_cfg = le16_to_cpu(resp->fec_cfg);
+
        /* TODO: need to add more logic to report VF link */
        if (chng_link_state) {
                if (link_info->phy_link_status == BNXT_LINK_LINK)
index 86f9a30752375f901ceeffe103a2c33567d53c38..82fbe81bfc59a81d8c8aca2e6272365481f2dc98 100644 (file)
@@ -860,6 +860,10 @@ struct bnxt_link_info {
        u16                     force_link_speed;
        u32                     preemphasis;
        u8                      module_status;
+       u16                     fec_cfg;
+#define BNXT_FEC_AUTONEG       PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_ENABLED
+#define BNXT_FEC_ENC_BASE_R    PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_ENABLED
+#define BNXT_FEC_ENC_RS                PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_ENABLED
 
        /* copy of requested setting from ethtool cmd */
        u8                      autoneg;