bnxt_en: Refactor logic to re-enable SRIOV after firmware reset detected.
authorMichael Chan <michael.chan@broadcom.com>
Sun, 2 Feb 2020 07:41:35 +0000 (02:41 -0500)
committerJakub Kicinski <kuba@kernel.org>
Mon, 3 Feb 2020 23:06:45 +0000 (15:06 -0800)
Put the current logic in bnxt_open() to re-enable SRIOV after detecting
firmware reset into a new function bnxt_reenable_sriov().  This call
needs to be invoked in the firmware reset path also in the next patch.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 483935b001c8ef48bb9e1fddfcd270e48612f5b5..0253a8f43ac8c6aff3bc6f9b9a36e9d3336cbc11 100644 (file)
@@ -9241,6 +9241,17 @@ void bnxt_half_close_nic(struct bnxt *bp)
        bnxt_free_mem(bp, false);
 }
 
+static void bnxt_reenable_sriov(struct bnxt *bp)
+{
+       if (BNXT_PF(bp)) {
+               struct bnxt_pf_info *pf = &bp->pf;
+               int n = pf->active_vfs;
+
+               if (n)
+                       bnxt_cfg_hw_sriov(bp, &n, true);
+       }
+}
+
 static int bnxt_open(struct net_device *dev)
 {
        struct bnxt *bp = netdev_priv(dev);
@@ -9259,13 +9270,7 @@ static int bnxt_open(struct net_device *dev)
                bnxt_hwrm_if_change(bp, false);
        } else {
                if (test_and_clear_bit(BNXT_STATE_FW_RESET_DET, &bp->state)) {
-                       if (BNXT_PF(bp)) {
-                               struct bnxt_pf_info *pf = &bp->pf;
-                               int n = pf->active_vfs;
-
-                               if (n)
-                                       bnxt_cfg_hw_sriov(bp, &n, true);
-                       }
+                       bnxt_reenable_sriov(bp);
                        if (!test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))
                                bnxt_ulp_start(bp, 0);
                }