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);
                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);
                }