From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E72763E1231 for ; Fri, 8 May 2026 12:59:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.17 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778245195; cv=none; b=YgGq3A8nXHs57OIFWRcFqjyFY7i3Y2Ol5JC8qRg86liT0JatYi0mcC+F9CDRullhhKR/cQMmwdsiIjELEKWvtuRMaO7WxjCo/UPyGi9LT2ceCDnY6f5p8QEYyg/bGydMey1DmN4N0uAI9/kssV8mwpz1LqnVXa9Z+QrJF+zQ6ic= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778245195; c=relaxed/simple; bh=D6sHTXOwRISUOkGFVYubhhRrI1S3E+/geB5s2+H2ZGY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KHAUsrsow4idNHHA31oC+6kOvyoJZcL30L4yvrNzPUCJr9yhJQGeHa7RTCxK9JJD0DNxatSRDIKQN8os/K3BXfX7Jxsj+lVRVFercDopM46FyKQFyrlO4j4GkoYJ78h2KIr2zlMcKkkO1yY0z8ivtKq3FRcorHyhAU86+oDZ1o8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=edkTfM21; arc=none smtp.client-ip=198.175.65.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="edkTfM21" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1778245194; x=1809781194; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=D6sHTXOwRISUOkGFVYubhhRrI1S3E+/geB5s2+H2ZGY=; b=edkTfM21AnrFDLhyc3gLRjhPh8o4MwhMa58n7ma4efzB2BbCDv/h3qRB xvQHFwr6dq9KJND9MPnlnKHieQnRfhuvYKUkB3oLQ2OwSIDjEqis2WemJ X8UrN9UnIVnuEJjDwzK4/S4poATM2IDXrn65+ShmF2od+yWLFgiKVYHMx SXyVB101vDjH3GAvIGq0QwklCpiejAuE4WReO/tQPFdvKxzKphO1ZgaEA OoMOZCm4E6QY+OnIohcYduXWOy/GlZjNfruG3OC1KOLYIYiqNOvp6i4Vx CxClf/pIlhieOXPEVUn/O9/yaazPUd+i77L1Qa0nubJK+HL/DLcGESzZK Q==; X-CSE-ConnectionGUID: 2wLaWLXoTSOVcjpoR6v60Q== X-CSE-MsgGUID: VlHP8p2RRx6KTxWhdS6Kzg== X-IronPort-AV: E=McAfee;i="6800,10657,11779"; a="79199914" X-IronPort-AV: E=Sophos;i="6.23,223,1770624000"; d="scan'208";a="79199914" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 May 2026 05:59:54 -0700 X-CSE-ConnectionGUID: FP5WnMWuRY2vboPLL5fzBQ== X-CSE-MsgGUID: Fvg1oQeLREyFcsuil4kBhQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,223,1770624000"; d="scan'208";a="241730127" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmviesa005.fm.intel.com with ESMTP; 08 May 2026 05:59:47 -0700 Received: from vecna.igk.intel.com (vecna.igk.intel.com [10.123.220.17]) by irvmail002.ir.intel.com (Postfix) with ESMTP id D23C12FC43; Fri, 8 May 2026 13:59:45 +0100 (IST) From: Przemek Kitszel To: intel-wired-lan@lists.osuosl.org, Michal Schmidt , Jakub Kicinski , Jiri Pirko Cc: netdev@vger.kernel.org, Simon Horman , Tony Nguyen , Michal Swiatkowski , bruce.richardson@intel.com, Vladimir Medvedkin , padraig.j.connolly@intel.com, ananth.s@intel.com, timothy.miskell@intel.com, Jacob Keller , Lukasz Czapnik , Aleksandr Loktionov , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Saeed Mahameed , Leon Romanovsky , Tariq Toukan , Mark Bloch , Przemek Kitszel , Jedrzej Jagielski Subject: [PATCH iwl-next v1 07/15] ice: bump to 256qs for VF Date: Fri, 8 May 2026 14:42:00 +0200 Message-Id: <20260508124208.11622-8-przemyslaw.kitszel@intel.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20260508124208.11622-1-przemyslaw.kitszel@intel.com> References: <20260508124208.11622-1-przemyslaw.kitszel@intel.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Adjust all bitmaps and arrays in ice to accept 256 VF queues. Extend struct ice_vf::num_req_qs width to allow 256 queues. Keep old/legacy size for virtchnl opcodes that were designed to accept only up to 16 queues. Reviewed-by: Jedrzej Jagielski Signed-off-by: Przemek Kitszel --- drivers/net/ethernet/intel/ice/ice_lag.h | 2 +- drivers/net/ethernet/intel/ice/ice_vf_lib.h | 9 +++++---- drivers/net/ethernet/intel/ice/ice_lib.c | 2 +- drivers/net/ethernet/intel/ice/ice_sriov.c | 4 ++-- drivers/net/ethernet/intel/ice/ice_vf_lib.c | 8 ++++---- drivers/net/ethernet/intel/ice/virt/queues.c | 14 +++++++------- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_lag.h b/drivers/net/ethernet/intel/ice/ice_lag.h index 4bfffecbdc97..39f6a6cc844d 100644 --- a/drivers/net/ethernet/intel/ice/ice_lag.h +++ b/drivers/net/ethernet/intel/ice/ice_lag.h @@ -52,7 +52,7 @@ struct ice_lag { u8 bond_lport_sec; /* lport values for secondary PF */ /* q_home keeps track of which interface the q is currently on */ - u8 q_home[ICE_MAX_SRIOV_VFS][ICE_MAX_QS_PER_VF_VCV1]; + u8 q_home[ICE_MAX_SRIOV_VFS][ICE_MAX_QS_PER_VF]; /* placeholder VSI for hanging VF queues from on secondary interface */ struct ice_vsi *sec_vf[ICE_MAX_SRIOV_VFS]; diff --git a/drivers/net/ethernet/intel/ice/ice_vf_lib.h b/drivers/net/ethernet/intel/ice/ice_vf_lib.h index 36dbe5412336..1b56f7150eb7 100644 --- a/drivers/net/ethernet/intel/ice/ice_vf_lib.h +++ b/drivers/net/ethernet/intel/ice/ice_vf_lib.h @@ -21,6 +21,7 @@ /* VF resource constraints */ /* for "old" virtchnl opcodes that accept up to 16 queues */ #define ICE_MAX_QS_PER_VF_VCV1 16 +#define ICE_MAX_QS_PER_VF 256 struct ice_pf; struct ice_vf; @@ -162,8 +163,8 @@ struct ice_vf { u8 dev_lan_addr[ETH_ALEN]; u8 hw_lan_addr[ETH_ALEN]; struct ice_time_mac legacy_last_added_umac; - DECLARE_BITMAP(txq_ena, ICE_MAX_QS_PER_VF_VCV1); - DECLARE_BITMAP(rxq_ena, ICE_MAX_QS_PER_VF_VCV1); + DECLARE_BITMAP(txq_ena, ICE_MAX_QS_PER_VF); + DECLARE_BITMAP(rxq_ena, ICE_MAX_QS_PER_VF); struct ice_vlan port_vlan_info; /* Port VLAN ID, QoS, and TPID */ struct virtchnl_vlan_caps vlan_v2_caps; struct ice_mbx_vf_info mbx_info; @@ -185,7 +186,7 @@ struct ice_vf { DECLARE_BITMAP(vf_states, ICE_VF_STATES_NBITS); /* VF runtime states */ unsigned long vf_caps; /* VF's adv. capabilities */ - u8 num_req_qs; /* num of queue pairs requested by VF */ + u16 num_req_qs; /* num of queue pairs requested by VF */ u16 num_mac; u16 num_mac_lldp; u16 num_vf_qs; /* num of queue configured per VF */ @@ -206,7 +207,7 @@ struct ice_vf { u16 lldp_recipe_id; u16 lldp_rule_id; - struct ice_vf_qs_bw qs_bw[ICE_MAX_QS_PER_VF_VCV1]; + struct ice_vf_qs_bw qs_bw[ICE_MAX_QS_PER_VF]; }; /* Flags for controlling behavior of ice_reset_vf */ diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c index 09e1dcab2179..2ac4e23f30b5 100644 --- a/drivers/net/ethernet/intel/ice/ice_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_lib.c @@ -925,7 +925,7 @@ static void ice_vsi_set_rss_params(struct ice_vsi *vsi) * For VSI_LUT, LUT size should be set to 64 bytes. */ vsi->rss_table_size = ICE_LUT_VSI_SIZE; - vsi->rss_size = ICE_MAX_QS_PER_VF_VCV1; + vsi->rss_size = ICE_MAX_QS_PER_VF; vsi->rss_lut_type = ICE_LUT_VSI; break; case ICE_VSI_LB: diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.c b/drivers/net/ethernet/intel/ice/ice_sriov.c index 0482454f453b..28f9e68f46cd 100644 --- a/drivers/net/ethernet/intel/ice/ice_sriov.c +++ b/drivers/net/ethernet/intel/ice/ice_sriov.c @@ -398,15 +398,15 @@ static int ice_set_per_vf_res(struct ice_pf *pf, u16 num_vfs) } num_txq = min_t(u16, num_msix_per_vf - ICE_NONQ_VECS_VF, - ICE_MAX_QS_PER_VF_VCV1); + ICE_MAX_QS_PER_VF); avail_qs = ice_get_avail_txq_count(pf) / num_vfs; if (!avail_qs) num_txq = 0; else if (num_txq > avail_qs) num_txq = rounddown_pow_of_two(avail_qs); num_rxq = min_t(u16, num_msix_per_vf - ICE_NONQ_VECS_VF, - ICE_MAX_QS_PER_VF_VCV1); + ICE_MAX_QS_PER_VF); avail_qs = ice_get_avail_rxq_count(pf) / num_vfs; if (!avail_qs) num_rxq = 0; diff --git a/drivers/net/ethernet/intel/ice/ice_vf_lib.c b/drivers/net/ethernet/intel/ice/ice_vf_lib.c index 8e88ab8547ab..55ad03085bc9 100644 --- a/drivers/net/ethernet/intel/ice/ice_vf_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_vf_lib.c @@ -535,8 +535,8 @@ static void ice_vf_rebuild_host_cfg(struct ice_vf *vf) static void ice_set_vf_state_qs_dis(struct ice_vf *vf) { /* Clear Rx/Tx enabled queues flag */ - bitmap_zero(vf->txq_ena, ICE_MAX_QS_PER_VF_VCV1); - bitmap_zero(vf->rxq_ena, ICE_MAX_QS_PER_VF_VCV1); + bitmap_zero(vf->txq_ena, ICE_MAX_QS_PER_VF); + bitmap_zero(vf->rxq_ena, ICE_MAX_QS_PER_VF); clear_bit(ICE_VF_STATE_QS_ENA, vf->vf_states); } @@ -1222,8 +1222,8 @@ bool ice_is_vf_trusted(struct ice_vf *vf) */ bool ice_vf_has_no_qs_ena(struct ice_vf *vf) { - return bitmap_empty(vf->rxq_ena, ICE_MAX_QS_PER_VF_VCV1) && - bitmap_empty(vf->txq_ena, ICE_MAX_QS_PER_VF_VCV1); + return bitmap_empty(vf->rxq_ena, ICE_MAX_QS_PER_VF) && + bitmap_empty(vf->txq_ena, ICE_MAX_QS_PER_VF); } /** diff --git a/drivers/net/ethernet/intel/ice/virt/queues.c b/drivers/net/ethernet/intel/ice/virt/queues.c index 7b165ee11a90..1d9f69026d1b 100644 --- a/drivers/net/ethernet/intel/ice/virt/queues.c +++ b/drivers/net/ethernet/intel/ice/virt/queues.c @@ -658,7 +658,7 @@ int ice_vc_cfg_q_bw(struct ice_vf *vf, u8 *msg) goto err; } - if (qbw->num_queues > ICE_MAX_QS_PER_VF_VCV1 || + if (qbw->num_queues > ICE_MAX_QS_PER_VF || qbw->num_queues > min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)) { dev_err(ice_pf_to_dev(vf->pf), "VF-%d trying to configure more than allocated number of queues: %d\n", vf->vf_id, min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)); @@ -750,7 +750,7 @@ int ice_vc_cfg_q_quanta(struct ice_vf *vf, u8 *msg) goto err; } - if (end_qid > ICE_MAX_QS_PER_VF_VCV1 || + if (end_qid > ICE_MAX_QS_PER_VF || end_qid > min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)) { dev_err(ice_pf_to_dev(vf->pf), "VF-%d trying to configure more than allocated number of queues: %d\n", vf->vf_id, min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)); @@ -818,7 +818,7 @@ int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg) if (!vsi) goto error_param; - if (qci->num_queue_pairs > ICE_MAX_QS_PER_VF_VCV1 || + if (qci->num_queue_pairs > ICE_MAX_QS_PER_VF || qci->num_queue_pairs > min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)) { dev_err(ice_pf_to_dev(pf), "VF-%d requesting more than supported number of queues: %d\n", vf->vf_id, min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)); @@ -996,16 +996,16 @@ int ice_vc_request_qs_msg(struct ice_vf *vf, u8 *msg) if (!req_queues) { dev_err(dev, "VF %d tried to request 0 queues. Ignoring.\n", vf->vf_id); - } else if (req_queues > ICE_MAX_QS_PER_VF_VCV1) { + } else if (req_queues > ICE_MAX_QS_PER_VF) { dev_err(dev, "VF %d tried to request more than %d queues.\n", - vf->vf_id, ICE_MAX_QS_PER_VF_VCV1); - vfres->num_queue_pairs = ICE_MAX_QS_PER_VF_VCV1; + vf->vf_id, ICE_MAX_QS_PER_VF); + vfres->num_queue_pairs = ICE_MAX_QS_PER_VF; } else if (req_queues > cur_queues && req_queues - cur_queues > tx_rx_queue_left) { dev_warn(dev, "VF %d requested %u more queues, but only %u left.\n", vf->vf_id, req_queues - cur_queues, tx_rx_queue_left); vfres->num_queue_pairs = min_t(u16, max_allowed_vf_queues, - ICE_MAX_QS_PER_VF_VCV1); + ICE_MAX_QS_PER_VF); } else { /* request is successful, then reset VF */ vf->num_req_qs = req_queues; -- 2.39.3