OSDN Git Service

bnxt_en: Improve bnxt_probe_phy().
authorMichael Chan <michael.chan@broadcom.com>
Mon, 27 Jan 2020 09:56:14 +0000 (04:56 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Jan 2020 10:33:28 +0000 (11:33 +0100)
If the 2nd parameter fw_dflt is not set, we are calling bnxt_probe_phy()
after the firmware has reset.  There is no need to query the current
PHY settings from firmware as these settings may be different from
the ethtool settings that the driver will re-establish later.  So
return earlier in bnxt_probe_phy() to save one firmware call.

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 4b6f746..4d790bc 100644 (file)
@@ -11471,6 +11471,9 @@ static int bnxt_probe_phy(struct bnxt *bp, bool fw_dflt)
                           rc);
                return rc;
        }
+       if (!fw_dflt)
+               return 0;
+
        rc = bnxt_update_link(bp, false);
        if (rc) {
                netdev_err(bp->dev, "Probe phy can't update link (rc: %x)\n",
@@ -11484,9 +11487,6 @@ static int bnxt_probe_phy(struct bnxt *bp, bool fw_dflt)
        if (link_info->auto_link_speeds && !link_info->support_auto_speeds)
                link_info->support_auto_speeds = link_info->support_speeds;
 
-       if (!fw_dflt)
-               return 0;
-
        bnxt_init_ethtool_link_settings(bp);
        return 0;
 }