ice: allow changing SWITCHDEV_CTRL VSI queues
authorMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tue, 24 Oct 2023 11:09:24 +0000 (13:09 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 13 Nov 2023 19:42:14 +0000 (11:42 -0800)
Implement mechanism to change number of queues for SWITCHDEV_CTRL VSI
type.

Value from ::req_txq/rxq will be written to ::alloc_txq/rxq after
calling ice_vsi_rebuild().

Reviewed-by: Piotr Raczynski <piotr.raczynski@intel.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_lib.c

index ae4b4220e1bb33230b05642e649ad5dc6aa75ba7..85a8cb28a4893e764a5c2b017034eb372c49aaac 100644 (file)
@@ -212,11 +212,18 @@ static void ice_vsi_set_num_qs(struct ice_vsi *vsi)
                                                 vsi->alloc_txq));
                break;
        case ICE_VSI_SWITCHDEV_CTRL:
-               /* The number of queues for ctrl VSI is equal to number of VFs.
+               /* 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
                 */
-               vsi->alloc_txq = ice_get_num_vfs(pf);
-               vsi->alloc_rxq = vsi->alloc_txq;
+               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: