bnxt_en: Init ethtool link settings after reading updated PHY configuration.
authorVasundhara Volam <vasundhara-v.volam@broadcom.com>
Sun, 12 Jul 2020 00:48:24 +0000 (20:48 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 12 Jul 2020 22:29:01 +0000 (15:29 -0700)
In a shared port PHY configuration, async event is received when any of the
port modifies the configuration. Ethtool link settings should be
initialised after updated PHY configuration from firmware.

Fixes: b1613e78e98d ("bnxt_en: Add async. event logic for PHY configuration changes.")
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@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 6a884df..28147e4 100644 (file)
@@ -10385,15 +10385,15 @@ static void bnxt_sp_task(struct work_struct *work)
                                       &bp->sp_event))
                        bnxt_hwrm_phy_qcaps(bp);
 
-               if (test_and_clear_bit(BNXT_LINK_CFG_CHANGE_SP_EVENT,
-                                      &bp->sp_event))
-                       bnxt_init_ethtool_link_settings(bp);
-
                rc = bnxt_update_link(bp, true);
-               mutex_unlock(&bp->link_lock);
                if (rc)
                        netdev_err(bp->dev, "SP task can't update link (rc: %x)\n",
                                   rc);
+
+               if (test_and_clear_bit(BNXT_LINK_CFG_CHANGE_SP_EVENT,
+                                      &bp->sp_event))
+                       bnxt_init_ethtool_link_settings(bp);
+               mutex_unlock(&bp->link_lock);
        }
        if (test_and_clear_bit(BNXT_UPDATE_PHY_SP_EVENT, &bp->sp_event)) {
                int rc;