}
 
 /**
- * ice_vsi_delete - delete a VSI from the switch
+ * ice_vsi_delete_from_hw - delete a VSI from the switch
  * @vsi: pointer to VSI being removed
  */
-void ice_vsi_delete(struct ice_vsi *vsi)
+static void ice_vsi_delete_from_hw(struct ice_vsi *vsi)
 {
        struct ice_pf *pf = vsi->back;
        struct ice_vsi_ctx *ctxt;
  *
  * This deallocates the VSI's queue resources, removes it from the PF's
  * VSI array if necessary, and deallocates the VSI
- *
- * Returns 0 on success, negative on failure
  */
-int ice_vsi_free(struct ice_vsi *vsi)
+static void ice_vsi_free(struct ice_vsi *vsi)
 {
        struct ice_pf *pf = NULL;
        struct device *dev;
 
-       if (!vsi)
-               return 0;
-
-       if (!vsi->back)
-               return -EINVAL;
+       if (!vsi || !vsi->back)
+               return;
 
        pf = vsi->back;
        dev = ice_pf_to_dev(pf);
 
        if (!pf->vsi[vsi->idx] || pf->vsi[vsi->idx] != vsi) {
                dev_dbg(dev, "vsi does not exist at pf->vsi[%d]\n", vsi->idx);
-               return -EINVAL;
+               return;
        }
 
        mutex_lock(&pf->sw_mutex);
        ice_vsi_free_arrays(vsi);
        mutex_unlock(&pf->sw_mutex);
        devm_kfree(dev, vsi);
+}
 
-       return 0;
+void ice_vsi_delete(struct ice_vsi *vsi)
+{
+       ice_vsi_delete_from_hw(vsi);
+       ice_vsi_free(vsi);
 }
 
 /**
 unroll_alloc_q_vector:
        ice_vsi_free_q_vectors(vsi);
 unroll_vsi_init:
-       ice_vsi_delete(vsi);
+       ice_vsi_delete_from_hw(vsi);
 unroll_get_qs:
        ice_vsi_put_qs(vsi);
 unroll_vsi_alloc_stat:
 
        ice_vsi_clear_rings(vsi);
        ice_vsi_free_q_vectors(vsi);
-       ice_vsi_delete(vsi);
        ice_vsi_put_qs(vsi);
        ice_vsi_free_arrays(vsi);
 
         * for ex: during rmmod.
         */
        if (!ice_is_reset_in_progress(pf->state))
-               ice_vsi_free(vsi);
+               ice_vsi_delete(vsi);
 
        return 0;
 }
 
                /* clear the VSI from scheduler tree */
                ice_rm_vsi_lan_cfg(ch->ch_vsi->port_info, ch->ch_vsi->idx);
 
-               /* Delete VSI from FW */
+               /* Delete VSI from FW, PF and HW VSI arrays */
                ice_vsi_delete(ch->ch_vsi);
 
-               /* Delete VSI from PF and HW VSI arrays */
-               ice_vsi_free(ch->ch_vsi);
-
                /* free the channel */
                kfree(ch);
        }