OSDN Git Service

bnxt_en: report signal mode in link up messages
authorEdwin Peer <edwin.peer@broadcom.com>
Sun, 25 Apr 2021 17:45:18 +0000 (13:45 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Apr 2021 01:37:38 +0000 (18:37 -0700)
Firmware reports link signalling mode for certain speeds. In these
cases, print the signalling modes in kernel log link up messages.

Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
Signed-off-by: Edwin Peer <edwin.peer@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index e15d454..573c039 100644 (file)
@@ -9075,8 +9075,9 @@ static char *bnxt_report_fec(struct bnxt_link_info *link_info)
 static void bnxt_report_link(struct bnxt *bp)
 {
        if (bp->link_info.link_up) {
-               const char *duplex;
+               const char *signal = "";
                const char *flow_ctrl;
+               const char *duplex;
                u32 speed;
                u16 fec;
 
@@ -9098,8 +9099,23 @@ static void bnxt_report_link(struct bnxt *bp)
                        flow_ctrl = "ON - receive";
                else
                        flow_ctrl = "none";
-               netdev_info(bp->dev, "NIC Link is Up, %u Mbps %s duplex, Flow control: %s\n",
-                           speed, duplex, flow_ctrl);
+               if (bp->link_info.phy_qcfg_resp.option_flags &
+                   PORT_PHY_QCFG_RESP_OPTION_FLAGS_SIGNAL_MODE_KNOWN) {
+                       u8 sig_mode = bp->link_info.active_fec_sig_mode &
+                                     PORT_PHY_QCFG_RESP_SIGNAL_MODE_MASK;
+                       switch (sig_mode) {
+                       case PORT_PHY_QCFG_RESP_SIGNAL_MODE_NRZ:
+                               signal = "(NRZ) ";
+                               break;
+                       case PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4:
+                               signal = "(PAM4) ";
+                               break;
+                       default:
+                               break;
+                       }
+               }
+               netdev_info(bp->dev, "NIC Link is Up, %u Mbps %s%s duplex, Flow control: %s\n",
+                           speed, signal, duplex, flow_ctrl);
                if (bp->flags & BNXT_FLAG_EEE_CAP)
                        netdev_info(bp->dev, "EEE is %s\n",
                                    bp->eee.eee_active ? "active" :