From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (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 41A634DD6DB for ; Fri, 9 Oct 2026 12:15:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791548142; cv=none; b=tsBKffzStE1DtkS3r5jTJpPb4ksXGikI5ot5gwOutaK8Q2pns74oEVIJf0swXYSSqGBT3MllUBIvZoyzF2s00QUr1pRJHfRXNSStRtjsqAouUWXaerb0g2rRZT0m8J0PUssQyLMnm+4WqxUyP0z3SknbcWhSORP7cqsE+hw0Udk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791548142; c=relaxed/simple; bh=RG1SwPGWFGqPnGDKptI3PY64nF94VTae+e07ogWdYRQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Aw47Y8799enpGT+YgZQIISUqovuzUIaexxgaLK7TN0EF2jTe71a3WH2IIkO3l/6TDi20L9BNC4ugtzg/9RVWARLdr/k6yLygpG6HFjgAsrs9dnj3+pDGiPGZzaXjwnryc0pNW53YFrI6RnJQq6RQ8D+2CzipV00LT9N32JYq4sI= 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=BnbQGDel; arc=none smtp.client-ip=192.198.163.10 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="BnbQGDel" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1791548130; x=1823084130; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RG1SwPGWFGqPnGDKptI3PY64nF94VTae+e07ogWdYRQ=; b=BnbQGDelrv9OWyUwDi/bSHFKMNo5vcgJStLUFVPqi/J3jvqIjbNXmPYE tnFsF9ozGRvJRoAcrBBzRBccBjJi44YtGFGRxht617Cj5Mr9+KbnZHV+Z Bu2+W0gs45ZFTKOqtF6A9OEgX2v16ZFDId8jWbKZ3PqBLVfAIUbXsOhhY on4pRBYjPEuLp+QIIaD14xvkRQoLQj2VpbTm8EQsUcYI0Y7ksUNryd9t4 mzH47Rt1T0Yt7YFdHkI0jq9JBShjN684yO6XQmijH92gjWsKpJtteI6SL NR1e4x4e3UxR/lsSI/GvdrgsVuIV/3xmChiYu6PtvQsQQev/6thBcMsYI w==; X-CSE-ConnectionGUID: pxEhIISgRSmV2n7f3U1mJA== X-CSE-MsgGUID: NmoygljFQ7eKj1mEXUJCcA== X-IronPort-AV: E=McAfee;i="6800,10657,11929"; a="251197" X-IronPort-AV: E=Sophos;i="6.27,148,1787036400"; d="scan'208";a="251197" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2026 05:15:05 -0700 X-CSE-ConnectionGUID: /ooeTN/2RGesoPH3NYD6ng== X-CSE-MsgGUID: uHy21p44QHSZgW0cSaOLog== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,148,1787036400"; d="scan'208";a="420493" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmviesa002.fm.intel.com with ESMTP; 09 Oct 2026 05:15:00 -0700 Received: from pkitszel-desk.tendawifi.com (unknown [10.245.245.238]) by irvmail002.ir.intel.com (Postfix) with ESMTP id D923C2FC43; Fri, 9 Oct 2026 13:14:55 +0100 (IST) From: Przemek Kitszel To: netdev@vger.kernel.org, Jakub Kicinski , Jiri Pirko Cc: Tony Nguyen , Aleksandr Loktionov , Michal Schmidt , intel-wired-lan@lists.osuosl.org, edumazet@kernel.org, horms@kernel.org, pabeni@redhat.com, davem@davemloft.net, Jonathan Corbet , skhan@linuxfoundation.org, rdunlap@infradead.org, andrew+netdev@lunn.ch, saeedm@nvidia.com, tariqt@nvidia.com, leon@kernel.org, mbloch@nvidia.com, jacob.e.keller@intel.com, jedrzej.jagielski@intel.com, anzaki@gmail.com, brett.creeley@amd.com, jtornosm@redhat.com, ohartoov@nvidia.com, Przemek Kitszel Subject: [PATCH net-next v2 09/14] iavf: increase max number of queues to 256 Date: Fri, 9 Oct 2026 14:04:20 +0200 Message-ID: <20261009121433.30347-10-przemyslaw.kitszel@intel.com> X-Mailer: git-send-email 2.51.1 In-Reply-To: <20261009121433.30347-1-przemyslaw.kitszel@intel.com> References: <20261009121433.30347-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 Increase the max number of queues that driver will handle to 256. Use old legacy limit in the virtchnl handling of iavf_map_queues(). Reviewed-by: Jedrzej Jagielski Signed-off-by: Przemek Kitszel --- v2: * change iavf_q_vector::num_ringpairs to u16 (Sashiko) * drop the stale "_i=0...15" range from IAVF_Q{R,T}X_TAIL1() --- drivers/net/ethernet/intel/iavf/iavf.h | 6 ++++-- drivers/net/ethernet/intel/iavf/iavf_register.h | 4 ++-- drivers/net/ethernet/intel/iavf/iavf_main.c | 4 ++-- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 15 ++++++++------- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/intel/iavf/iavf.h b/drivers/net/ethernet/intel/iavf/iavf.h index 94ee18058115..47236d5f3961 100644 --- a/drivers/net/ethernet/intel/iavf/iavf.h +++ b/drivers/net/ethernet/intel/iavf/iavf.h @@ -87,8 +87,10 @@ struct iavf_vsi { #define IAVF_TX_DESC(R, i) (&(((struct iavf_tx_desc *)((R)->desc))[i])) #define IAVF_TX_CTXTDESC(R, i) \ (&(((struct iavf_tx_context_desc *)((R)->desc))[i])) + /* for "old" virtchnl opcodes that accept up to 16 queues */ #define IAVF_MAX_REQ_QUEUES_VCV1 16 +#define IAVF_MAX_REQ_QUEUES 256 #define IAVF_HKEY_ARRAY_SIZE ((IAVF_VFQF_HKEY_MAX_INDEX + 1) * 4) #define IAVF_HLUT_ARRAY_SIZE ((IAVF_VFQF_HLUT_MAX_INDEX + 1) * 4) @@ -108,9 +110,9 @@ struct iavf_q_vector { struct napi_struct napi; struct iavf_ring_container rx; struct iavf_ring_container tx; - u32 ring_mask; + DECLARE_BITMAP(ring_mask, IAVF_MAX_REQ_QUEUES); u8 itr_countdown; /* when 0 should adjust adaptive ITR */ - u8 num_ringpairs; /* total number of ring pairs in vector */ + u16 num_ringpairs; /* total number of ring pairs in vector */ u16 v_idx; /* index in the vsi->q_vector array. */ u16 reg_idx; /* register index of the interrupt */ char name[IFNAMSIZ + 15]; diff --git a/drivers/net/ethernet/intel/iavf/iavf_register.h b/drivers/net/ethernet/intel/iavf/iavf_register.h index a19e88898a0b..11043e330de8 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_register.h +++ b/drivers/net/ethernet/intel/iavf/iavf_register.h @@ -56,8 +56,8 @@ #define IAVF_VFINT_ICR0_ENA1_RSVD_SHIFT 31 #define IAVF_VFINT_ICR01 0x00004800 /* Reset: CORER */ #define IAVF_VFINT_ITRN1(_i, _INTVF) (0x00002800 + ((_i) * 64 + (_INTVF) * 4)) /* _i=0...2, _INTVF=0...15 */ /* Reset: VFR */ -#define IAVF_QRX_TAIL1(_Q) (0x00002000 + ((_Q) * 4)) /* _i=0...15 */ /* Reset: CORER */ -#define IAVF_QTX_TAIL1(_Q) (0x00000000 + ((_Q) * 4)) /* _i=0...15 */ /* Reset: PFR */ +#define IAVF_QRX_TAIL1(_Q) (0x00002000 + ((_Q) * 4)) /* Reset: CORER */ +#define IAVF_QTX_TAIL1(_Q) (0x00000000 + ((_Q) * 4)) /* Reset: PFR */ #define IAVF_VFQF_HENA(_i) (0x0000C400 + ((_i) * 4)) /* _i=0...1 */ /* Reset: CORER */ #define IAVF_VFQF_HKEY(_i) (0x0000CC00 + ((_i) * 4)) /* _i=0...12 */ /* Reset: CORER */ #define IAVF_VFQF_HKEY_MAX_INDEX 12 diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index bb239e99e450..8059e855dc09 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -439,7 +439,7 @@ iavf_map_vector_to_rxq(struct iavf_adapter *adapter, int v_idx, int r_idx) q_vector->rx.count++; q_vector->rx.next_update = jiffies + 1; q_vector->rx.target_itr = ITR_TO_REG(rx_ring->itr_setting); - q_vector->ring_mask |= BIT(r_idx); + set_bit(r_idx, q_vector->ring_mask); wr32(hw, IAVF_VFINT_ITRN1(IAVF_RX_ITR, q_vector->reg_idx), q_vector->rx.current_itr >> 1); q_vector->rx.current_itr = q_vector->rx.target_itr; @@ -5370,7 +5370,7 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) pci_set_master(pdev); netdev = alloc_etherdev_mq(sizeof(struct iavf_adapter), - IAVF_MAX_REQ_QUEUES_VCV1); + IAVF_MAX_REQ_QUEUES); if (!netdev) { err = -ENOMEM; goto err_alloc_etherdev; diff --git a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c index 630a551c7566..3b9545d2c021 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +++ b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c @@ -268,19 +268,19 @@ int iavf_send_vf_ptp_caps_msg(struct iavf_adapter *adapter) **/ static void iavf_validate_num_queues(struct iavf_adapter *adapter) { - if (adapter->vf_res->num_queue_pairs > IAVF_MAX_REQ_QUEUES_VCV1) { + if (adapter->vf_res->num_queue_pairs > IAVF_MAX_REQ_QUEUES) { struct virtchnl_vsi_resource *vsi_res; int i; dev_info(&adapter->pdev->dev, "Received %d queues, but can only have a max of %d\n", adapter->vf_res->num_queue_pairs, - IAVF_MAX_REQ_QUEUES_VCV1); + IAVF_MAX_REQ_QUEUES); dev_info(&adapter->pdev->dev, "Fixing by reducing queues to %d\n", - IAVF_MAX_REQ_QUEUES_VCV1); - adapter->vf_res->num_queue_pairs = IAVF_MAX_REQ_QUEUES_VCV1; + IAVF_MAX_REQ_QUEUES); + adapter->vf_res->num_queue_pairs = IAVF_MAX_REQ_QUEUES; for (i = 0; i < adapter->vf_res->num_vsis; i++) { vsi_res = &adapter->vf_res->vsi_res[i]; - vsi_res->num_queue_pairs = IAVF_MAX_REQ_QUEUES_VCV1; + vsi_res->num_queue_pairs = IAVF_MAX_REQ_QUEUES; } } } @@ -583,8 +583,9 @@ void iavf_map_queues(struct iavf_adapter *adapter) vecmap->vsi_id = adapter->vsi_res->vsi_id; vecmap->vector_id = v_idx + NONQ_VECS; - vecmap->txq_map = q_vector->ring_mask; - vecmap->rxq_map = q_vector->ring_mask; + vecmap->txq_map = bitmap_read(q_vector->ring_mask, 0, + IAVF_MAX_REQ_QUEUES_VCV1); + vecmap->rxq_map = vecmap->txq_map; vecmap->rxitr_idx = IAVF_RX_ITR; vecmap->txitr_idx = IAVF_TX_ITR; } -- 2.51.1