/**
  * idpf_vport_open - Bring up a vport
  * @vport: vport to bring up
- * @alloc_res: allocate queue resources
  */
-static int idpf_vport_open(struct idpf_vport *vport, bool alloc_res)
+static int idpf_vport_open(struct idpf_vport *vport)
 {
        struct idpf_netdev_priv *np = netdev_priv(vport->netdev);
        struct idpf_adapter *adapter = vport->adapter;
        /* we do not allow interface up just yet */
        netif_carrier_off(vport->netdev);
 
-       if (alloc_res) {
-               err = idpf_vport_queues_alloc(vport);
-               if (err)
-                       return err;
-       }
+       err = idpf_vport_queues_alloc(vport);
+       if (err)
+               return err;
 
        err = idpf_vport_intr_alloc(vport);
        if (err) {
        np = netdev_priv(vport->netdev);
        np->state = __IDPF_VPORT_DOWN;
        if (test_and_clear_bit(IDPF_VPORT_UP_REQUESTED, vport_config->flags))
-               idpf_vport_open(vport, true);
+               idpf_vport_open(vport);
 
        /* Spawn and return 'idpf_init_task' work queue until all the
         * default vports are created
                goto free_vport;
        }
 
-       err = idpf_vport_queues_alloc(new_vport);
-       if (err)
-               goto free_vport;
        if (current_state <= __IDPF_VPORT_DOWN) {
                idpf_send_delete_queues_msg(vport);
        } else {
 
        err = idpf_set_real_num_queues(vport);
        if (err)
-               goto err_reset;
+               goto err_open;
 
        if (current_state == __IDPF_VPORT_UP)
-               err = idpf_vport_open(vport, false);
+               err = idpf_vport_open(vport);
 
        kfree(new_vport);
 
        return err;
 
 err_reset:
-       idpf_vport_queues_rel(new_vport);
+       idpf_send_add_queues_msg(vport, vport->num_txq, vport->num_complq,
+                                vport->num_rxq, vport->num_bufq);
+
+err_open:
+       if (current_state == __IDPF_VPORT_UP)
+               idpf_vport_open(vport);
+
 free_vport:
        kfree(new_vport);
 
        idpf_vport_ctrl_lock(netdev);
        vport = idpf_netdev_to_vport(netdev);
 
-       err = idpf_vport_open(vport, true);
+       err = idpf_vport_open(vport);
 
        idpf_vport_ctrl_unlock(netdev);