return ring->q_index - vsi->tc_cfg.tc_info[tc].qoffset;
 }
 
-/**
- * ice_eswitch_calc_txq_handle
- * @ring: pointer to ring which unique index is needed
- *
- * To correctly work with many netdevs ring->q_index of Tx rings on switchdev
- * VSI can repeat. Hardware ring setup requires unique q_index. Calculate it
- * here by finding index in vsi->tx_rings of this ring.
- *
- * Return ICE_INVAL_Q_INDEX when index wasn't found. Should never happen,
- * because VSI is get from ring->vsi, so it has to be present in this VSI.
- */
-static u16 ice_eswitch_calc_txq_handle(struct ice_tx_ring *ring)
-{
-       const struct ice_vsi *vsi = ring->vsi;
-       int i;
-
-       ice_for_each_txq(vsi, i) {
-               if (vsi->tx_rings[i] == ring)
-                       return i;
-       }
-
-       return ICE_INVAL_Q_INDEX;
-}
-
 /**
  * ice_cfg_xps_tx_ring - Configure XPS for a Tx ring
  * @ring: The Tx ring to configure
                tlan_ctx->vmvf_num = hw->func_caps.vf_base_id + vsi->vf->vf_id;
                tlan_ctx->vmvf_type = ICE_TLAN_CTX_VMVF_TYPE_VF;
                break;
-       case ICE_VSI_SWITCHDEV_CTRL:
-               tlan_ctx->vmvf_type = ICE_TLAN_CTX_VMVF_TYPE_VMQ;
-               break;
        default:
                return;
        }
        /* Add unique software queue handle of the Tx queue per
         * TC into the VSI Tx ring
         */
-       if (vsi->type == ICE_VSI_SWITCHDEV_CTRL) {
-               ring->q_handle = ice_eswitch_calc_txq_handle(ring);
-
-               if (ring->q_handle == ICE_INVAL_Q_INDEX)
-                       return -ENODEV;
-       } else {
-               ring->q_handle = ice_calc_txq_handle(vsi, ring, tc);
-       }
+       ring->q_handle = ice_calc_txq_handle(vsi, ring, tc);
 
        if (ch)
                status = ice_ena_vsi_txq(vsi->port_info, ch->ch_vsi->idx, 0,
 
 static int ice_eswitch_setup_env(struct ice_pf *pf)
 {
        struct ice_vsi *uplink_vsi = pf->eswitch.uplink_vsi;
-       struct ice_vsi *ctrl_vsi = pf->eswitch.control_vsi;
        struct net_device *netdev = uplink_vsi->netdev;
        struct ice_vsi_vlan_ops *vlan_ops;
 
        if (ice_vsi_update_security(uplink_vsi, ice_vsi_ctx_set_allow_override))
                goto err_override_uplink;
 
-       if (ice_vsi_update_security(ctrl_vsi, ice_vsi_ctx_set_allow_override))
-               goto err_override_control;
-
        if (ice_vsi_update_local_lb(uplink_vsi, true))
                goto err_override_local_lb;
 
        return 0;
 
 err_override_local_lb:
-       ice_vsi_update_security(ctrl_vsi, ice_vsi_ctx_clear_allow_override);
-err_override_control:
        ice_vsi_update_security(uplink_vsi, ice_vsi_ctx_clear_allow_override);
 err_override_uplink:
        vlan_ops->ena_rx_filtering(uplink_vsi);
        return -ENODEV;
 }
 
-/**
- * ice_eswitch_remap_rings_to_vectors - reconfigure rings of eswitch ctrl VSI
- * @eswitch: pointer to eswitch struct
- *
- * In eswitch number of allocated Tx/Rx rings is equal.
- *
- * This function fills q_vectors structures associated with representor and
- * move each ring pairs to port representor netdevs. Each port representor
- * will have dedicated 1 Tx/Rx ring pair, so number of rings pair is equal to
- * number of VFs.
- */
-static void ice_eswitch_remap_rings_to_vectors(struct ice_eswitch *eswitch)
-{
-       struct ice_vsi *vsi = eswitch->control_vsi;
-       unsigned long repr_id = 0;
-       int q_id;
-
-       ice_for_each_txq(vsi, q_id) {
-               struct ice_q_vector *q_vector;
-               struct ice_tx_ring *tx_ring;
-               struct ice_rx_ring *rx_ring;
-               struct ice_repr *repr;
-
-               repr = xa_find(&eswitch->reprs, &repr_id, U32_MAX,
-                              XA_PRESENT);
-               if (!repr)
-                       break;
-
-               repr_id += 1;
-               repr->q_id = q_id;
-               q_vector = repr->q_vector;
-               tx_ring = vsi->tx_rings[q_id];
-               rx_ring = vsi->rx_rings[q_id];
-
-               q_vector->vsi = vsi;
-               q_vector->reg_idx = vsi->q_vectors[0]->reg_idx;
-
-               q_vector->num_ring_tx = 1;
-               q_vector->tx.tx_ring = tx_ring;
-               tx_ring->q_vector = q_vector;
-               tx_ring->next = NULL;
-               tx_ring->netdev = repr->netdev;
-               /* In switchdev mode, from OS stack perspective, there is only
-                * one queue for given netdev, so it needs to be indexed as 0.
-                */
-               tx_ring->q_index = 0;
-
-               q_vector->num_ring_rx = 1;
-               q_vector->rx.rx_ring = rx_ring;
-               rx_ring->q_vector = q_vector;
-               rx_ring->next = NULL;
-               rx_ring->netdev = repr->netdev;
-       }
-}
-
 /**
  * ice_eswitch_release_repr - clear PR VSI configuration
  * @pf: poiner to PF struct
        repr->dst = NULL;
        ice_fltr_add_mac_and_broadcast(vsi, repr->parent_mac,
                                       ICE_FWD_TO_VSI);
-
-       netif_napi_del(&repr->q_vector->napi);
 }
 
 /**
        if (ice_vsi_add_vlan_zero(vsi))
                goto err_update_security;
 
-       netif_napi_add(repr->netdev, &repr->q_vector->napi,
-                      ice_napi_poll);
-
        netif_keep_dst(uplink_vsi->netdev);
 
        dst = repr->dst;
 static void ice_eswitch_release_env(struct ice_pf *pf)
 {
        struct ice_vsi *uplink_vsi = pf->eswitch.uplink_vsi;
-       struct ice_vsi *ctrl_vsi = pf->eswitch.control_vsi;
        struct ice_vsi_vlan_ops *vlan_ops;
 
        vlan_ops = ice_get_compat_vsi_vlan_ops(uplink_vsi);
 
        ice_vsi_update_local_lb(uplink_vsi, false);
-       ice_vsi_update_security(ctrl_vsi, ice_vsi_ctx_clear_allow_override);
        ice_vsi_update_security(uplink_vsi, ice_vsi_ctx_clear_allow_override);
        vlan_ops->ena_rx_filtering(uplink_vsi);
        ice_clear_dflt_vsi(uplink_vsi);
                                       ICE_FWD_TO_VSI);
 }
 
-/**
- * ice_eswitch_vsi_setup - configure eswitch control VSI
- * @pf: pointer to PF structure
- * @pi: pointer to port_info structure
- */
-static struct ice_vsi *
-ice_eswitch_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi)
-{
-       struct ice_vsi_cfg_params params = {};
-
-       params.type = ICE_VSI_SWITCHDEV_CTRL;
-       params.pi = pi;
-       params.flags = ICE_VSI_FLAG_INIT;
-
-       return ice_vsi_setup(pf, ¶ms);
-}
-
-/**
- * ice_eswitch_napi_enable - enable NAPI for all port representors
- * @reprs: xarray of reprs
- */
-static void ice_eswitch_napi_enable(struct xarray *reprs)
-{
-       struct ice_repr *repr;
-       unsigned long id;
-
-       xa_for_each(reprs, id, repr)
-               napi_enable(&repr->q_vector->napi);
-}
-
-/**
- * ice_eswitch_napi_disable - disable NAPI for all port representors
- * @reprs: xarray of reprs
- */
-static void ice_eswitch_napi_disable(struct xarray *reprs)
-{
-       struct ice_repr *repr;
-       unsigned long id;
-
-       xa_for_each(reprs, id, repr)
-               napi_disable(&repr->q_vector->napi);
-}
-
 /**
  * ice_eswitch_enable_switchdev - configure eswitch in switchdev mode
  * @pf: pointer to PF structure
  */
 static int ice_eswitch_enable_switchdev(struct ice_pf *pf)
 {
-       struct ice_vsi *ctrl_vsi, *uplink_vsi;
+       struct ice_vsi *uplink_vsi;
 
        uplink_vsi = ice_get_main_vsi(pf);
        if (!uplink_vsi)
                return -EINVAL;
        }
 
-       pf->eswitch.control_vsi = ice_eswitch_vsi_setup(pf, pf->hw.port_info);
-       if (!pf->eswitch.control_vsi)
-               return -ENODEV;
-
-       ctrl_vsi = pf->eswitch.control_vsi;
        pf->eswitch.uplink_vsi = uplink_vsi;
 
        if (ice_eswitch_setup_env(pf))
-               goto err_vsi;
+               return -ENODEV;
 
        if (ice_eswitch_br_offloads_init(pf))
                goto err_br_offloads;
 
 err_br_offloads:
        ice_eswitch_release_env(pf);
-err_vsi:
-       ice_vsi_release(ctrl_vsi);
        return -ENODEV;
 }
 
  */
 static void ice_eswitch_disable_switchdev(struct ice_pf *pf)
 {
-       struct ice_vsi *ctrl_vsi = pf->eswitch.control_vsi;
-
        ice_eswitch_br_offloads_deinit(pf);
        ice_eswitch_release_env(pf);
-       ice_vsi_release(ctrl_vsi);
 
        pf->eswitch.is_running = false;
 }
 static void ice_eswitch_stop_reprs(struct ice_pf *pf)
 {
        ice_eswitch_stop_all_tx_queues(pf);
-       ice_eswitch_napi_disable(&pf->eswitch.reprs);
 }
 
 static void ice_eswitch_start_reprs(struct ice_pf *pf)
 {
-       ice_eswitch_napi_enable(&pf->eswitch.reprs);
        ice_eswitch_start_all_tx_queues(pf);
 }
 
-static void
-ice_eswitch_cp_change_queues(struct ice_eswitch *eswitch, int change)
-{
-       struct ice_vsi *cp = eswitch->control_vsi;
-       int queues = 0;
-
-       if (queues) {
-               cp->req_txq = queues;
-               cp->req_rxq = queues;
-               ice_vsi_close(cp);
-               ice_vsi_rebuild(cp, ICE_VSI_FLAG_NO_INIT);
-               ice_vsi_open(cp);
-       } else if (!change) {
-               /* change == 0 means that VSI wasn't open, open it here */
-               ice_vsi_open(cp);
-       }
-
-       ice_eswitch_remap_rings_to_vectors(eswitch);
-}
-
 int
 ice_eswitch_attach(struct ice_pf *pf, struct ice_vf *vf)
 {
        struct ice_repr *repr;
-       int change = 1;
        int err;
 
        if (pf->eswitch_mode == DEVLINK_ESWITCH_MODE_LEGACY)
                err = ice_eswitch_enable_switchdev(pf);
                if (err)
                        return err;
-               change = 0;
        }
 
        ice_eswitch_stop_reprs(pf);
 
        vf->repr_id = repr->id;
 
-       ice_eswitch_cp_change_queues(&pf->eswitch, change);
        ice_eswitch_start_reprs(pf);
 
        return 0;
 
        if (xa_empty(&pf->eswitch.reprs))
                ice_eswitch_disable_switchdev(pf);
-       else
-               ice_eswitch_cp_change_queues(&pf->eswitch, -1);
 
        ice_eswitch_release_repr(pf, repr);
        ice_repr_rem_vf(repr);
  * ice_eswitch_rebuild - rebuild eswitch
  * @pf: pointer to PF structure
  */
-int ice_eswitch_rebuild(struct ice_pf *pf)
+void ice_eswitch_rebuild(struct ice_pf *pf)
 {
        struct ice_repr *repr;
        unsigned long id;
-       int err;
 
        if (!ice_is_switchdev_running(pf))
-               return 0;
-
-       err = ice_vsi_rebuild(pf->eswitch.control_vsi, ICE_VSI_FLAG_INIT);
-       if (err)
-               return err;
+               return;
 
        xa_for_each(&pf->eswitch.reprs, id, repr)
                ice_eswitch_detach(pf, repr->vf);
-
-       return 0;
 }
 
                return "ICE_VSI_CHNL";
        case ICE_VSI_LB:
                return "ICE_VSI_LB";
-       case ICE_VSI_SWITCHDEV_CTRL:
-               return "ICE_VSI_SWITCHDEV_CTRL";
        default:
                return "unknown";
        }
 {
        switch (vsi->type) {
        case ICE_VSI_PF:
-       case ICE_VSI_SWITCHDEV_CTRL:
        case ICE_VSI_CTRL:
        case ICE_VSI_LB:
                /* a user could change the values of num_[tr]x_desc using
                                           max_t(int, vsi->alloc_rxq,
                                                 vsi->alloc_txq));
                break;
-       case ICE_VSI_SWITCHDEV_CTRL:
-               /* The number of queues for ctrl VSI is equal to number of PRs
-                * Each ring is associated to the corresponding VF_PR netdev.
-                * Tx and Rx rings are always equal
-                */
-               if (vsi->req_txq && vsi->req_rxq) {
-                       vsi->alloc_txq = vsi->req_txq;
-                       vsi->alloc_rxq = vsi->req_rxq;
-               } else {
-                       vsi->alloc_txq = 1;
-                       vsi->alloc_rxq = 1;
-               }
-
-               vsi->num_q_vectors = 1;
-               break;
        case ICE_VSI_VF:
                if (vf->num_req_qs)
                        vf->num_vf_qs = vf->num_req_qs;
        return IRQ_HANDLED;
 }
 
-static irqreturn_t ice_eswitch_msix_clean_rings(int __always_unused irq, void *data)
-{
-       struct ice_q_vector *q_vector = (struct ice_q_vector *)data;
-       struct ice_pf *pf = q_vector->vsi->back;
-       struct ice_repr *repr;
-       unsigned long id;
-
-       if (!q_vector->tx.tx_ring && !q_vector->rx.rx_ring)
-               return IRQ_HANDLED;
-
-       xa_for_each(&pf->eswitch.reprs, id, repr)
-               napi_schedule(&repr->q_vector->napi);
-
-       return IRQ_HANDLED;
-}
-
 /**
  * ice_vsi_alloc_stat_arrays - Allocate statistics arrays
  * @vsi: VSI pointer
        }
 
        switch (vsi->type) {
-       case ICE_VSI_SWITCHDEV_CTRL:
-               /* Setup eswitch MSIX irq handler for VSI */
-               vsi->irq_handler = ice_eswitch_msix_clean_rings;
-               break;
        case ICE_VSI_PF:
                /* Setup default MSIX irq handler for VSI */
                vsi->irq_handler = ice_msix_clean_rings;
                                              max_rss_size);
                vsi->rss_lut_type = ICE_LUT_PF;
                break;
-       case ICE_VSI_SWITCHDEV_CTRL:
-               vsi->rss_table_size = ICE_LUT_VSI_SIZE;
-               vsi->rss_size = min_t(u16, num_online_cpus(), max_rss_size);
-               vsi->rss_lut_type = ICE_LUT_VSI;
-               break;
        case ICE_VSI_VF:
                /* VF VSI will get a small RSS table.
                 * For VSI_LUT, LUT size should be set to 64 bytes.
        case ICE_VSI_PF:
                ctxt->flags = ICE_AQ_VSI_TYPE_PF;
                break;
-       case ICE_VSI_SWITCHDEV_CTRL:
        case ICE_VSI_CHNL:
                ctxt->flags = ICE_AQ_VSI_TYPE_VMDQ2;
                break;
        case ICE_VSI_CHNL:
        case ICE_VSI_LB:
        case ICE_VSI_PF:
-       case ICE_VSI_SWITCHDEV_CTRL:
                max_agg_nodes = ICE_MAX_PF_AGG_NODES;
                agg_node_id_start = ICE_PF_AGG_NODE_ID_START;
                agg_node_iter = &pf->pf_agg_node[0];
 
        switch (vsi->type) {
        case ICE_VSI_CTRL:
-       case ICE_VSI_SWITCHDEV_CTRL:
        case ICE_VSI_PF:
                ret = ice_vsi_alloc_q_vectors(vsi);
                if (ret)
                } else {
                        ice_vsi_close(vsi);
                }
-       } else if (vsi->type == ICE_VSI_CTRL ||
-                  vsi->type == ICE_VSI_SWITCHDEV_CTRL) {
+       } else if (vsi->type == ICE_VSI_CTRL) {
                ice_vsi_close(vsi);
        }
 }