OSDN Git Service

bnxt_en: Refactor bnxt_close_nic().
authorMichael Chan <michael.chan@broadcom.com>
Wed, 17 Jan 2018 08:21:04 +0000 (03:21 -0500)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Jan 2018 19:48:25 +0000 (14:48 -0500)
Add a new __bnxt_close_nic() function to do all the work previously done
in bnxt_close_nic() except waiting for SRIOV configuration.  The new
function will be used in the next patch as part of SRIOV cleanup.

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 3015d86..0833a53 100644 (file)
@@ -6512,23 +6512,13 @@ static bool bnxt_drv_busy(struct bnxt *bp)
                test_bit(BNXT_STATE_READ_STATS, &bp->state));
 }
 
-int bnxt_close_nic(struct bnxt *bp, bool irq_re_init, bool link_re_init)
+static void __bnxt_close_nic(struct bnxt *bp, bool irq_re_init,
+                            bool link_re_init)
 {
-       int rc = 0;
-
-#ifdef CONFIG_BNXT_SRIOV
-       if (bp->sriov_cfg) {
-               rc = wait_event_interruptible_timeout(bp->sriov_cfg_wait,
-                                                     !bp->sriov_cfg,
-                                                     BNXT_SRIOV_CFG_WAIT_TMO);
-               if (rc)
-                       netdev_warn(bp->dev, "timeout waiting for SRIOV config operation to complete!\n");
-       }
-
        /* Close the VF-reps before closing PF */
        if (BNXT_PF(bp))
                bnxt_vf_reps_close(bp);
-#endif
+
        /* Change device state to avoid TX queue wake up's */
        bnxt_tx_disable(bp);
 
@@ -6551,6 +6541,22 @@ int bnxt_close_nic(struct bnxt *bp, bool irq_re_init, bool link_re_init)
                bnxt_del_napi(bp);
        }
        bnxt_free_mem(bp, irq_re_init);
+}
+
+int bnxt_close_nic(struct bnxt *bp, bool irq_re_init, bool link_re_init)
+{
+       int rc = 0;
+
+#ifdef CONFIG_BNXT_SRIOV
+       if (bp->sriov_cfg) {
+               rc = wait_event_interruptible_timeout(bp->sriov_cfg_wait,
+                                                     !bp->sriov_cfg,
+                                                     BNXT_SRIOV_CFG_WAIT_TMO);
+               if (rc)
+                       netdev_warn(bp->dev, "timeout waiting for SRIOV config operation to complete!\n");
+       }
+#endif
+       __bnxt_close_nic(bp, irq_re_init, link_re_init);
        return rc;
 }