set_bit(__ICE_NEEDS_RESTART, vsi->state);
 
-       if (vsi->netdev && netif_running(vsi->netdev) &&
-           vsi->type == ICE_VSI_PF) {
-               rtnl_lock();
-               vsi->netdev->netdev_ops->ndo_stop(vsi->netdev);
-               rtnl_unlock();
-       } else {
-               ice_vsi_close(vsi);
+       if (vsi->type == ICE_VSI_PF && vsi->netdev) {
+               if (netif_running(vsi->netdev)) {
+                       rtnl_lock();
+                       vsi->netdev->netdev_ops->ndo_stop(vsi->netdev);
+                       rtnl_unlock();
+               } else {
+                       ice_vsi_close(vsi);
+               }
        }
 }
 
 {
        int err = 0;
 
-       if (test_and_clear_bit(__ICE_NEEDS_RESTART, vsi->state))
-               if (vsi->netdev && netif_running(vsi->netdev)) {
+       if (test_and_clear_bit(__ICE_NEEDS_RESTART, vsi->state) &&
+           vsi->netdev) {
+               if (netif_running(vsi->netdev)) {
                        rtnl_lock();
                        err = vsi->netdev->netdev_ops->ndo_open(vsi->netdev);
                        rtnl_unlock();
+               } else {
+                       err = ice_vsi_open(vsi);
                }
+       }
 
        return err;
 }