From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 DD9AE22B5B8 for ; Mon, 21 Apr 2025 22:28:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745274526; cv=none; b=pBI50HZ7FbZyqRCCOMHnOfLhdzqGyELjQRhPb2HH/tFWp7nZa/qpktyCIw2ogNgpZgi2xPuiCs9qnR40qFcjJCkeIUbU31o6rMiWZxGT2/U0FAUDLZbTWoSS5y7qziQl0U9txuKw/4pn69MohGFxbknPWYBfpp4o6/t78Jr12I4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745274526; c=relaxed/simple; bh=ogmDCzWfER/npFf6rd4iKr84a/1TPMhX5bV8UDdw36E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UstExkbDearAZKQjx9IFYkYy+xLMhO++IsbtC3N8TYMZFIeB2trS1PDef5Rprt9aeOCHVx1DxzPo9wQRR/m3k5w/AtMZSNJUb1paSZh/9gBGcUy9GeePaPdOYn4WodX7UeBBsgv3QMNGGUGo0M78fssubkeCfclLFTx6Glmi6hM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VGb9Ra0T; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VGb9Ra0T" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49ADDC4CEEE; Mon, 21 Apr 2025 22:28:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1745274526; bh=ogmDCzWfER/npFf6rd4iKr84a/1TPMhX5bV8UDdw36E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VGb9Ra0TY659JofbFNGL3APNFXJFKgu6QufCN4YUOTlNU6idjY7hBe6PoypvaJMPW grk0vUvwa8Cejo4LqlboyF+8v6RjMt12/51ha8D3/K0LDkMbjST3/fx3FHy17xHjwA smp6XAXIkkYfjPE+qvF9kfWo0qDECnSkxqTIOmzgXMGN02u3tvdHziAvBpcaKTmlE8 +Wi1BZVQ7LGC9Mri21E4tcxHiWbAfU4su+d0sQWxEFDnUPfSb8TSF7C518YnTLtGrA mL7iSEStK9VjXXAq/KrPRhzX/1lxhNfLTKNNDINOTWLB9uuPVeXHvwXuipsNZcmVsJ Urcwb9L+9fyLA== From: Jakub Kicinski To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com, andrew+netdev@lunn.ch, horms@kernel.org, donald.hunter@gmail.com, sdf@fomichev.me, almasrymina@google.com, dw@davidwei.uk, asml.silence@gmail.com, ap420073@gmail.com, jdamato@fastly.com, dtatulea@nvidia.com, michael.chan@broadcom.com, Jakub Kicinski Subject: [RFC net-next 20/22] eth: bnxt: support per queue configuration of rx-buf-len Date: Mon, 21 Apr 2025 15:28:25 -0700 Message-ID: <20250421222827.283737-21-kuba@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250421222827.283737-1-kuba@kernel.org> References: <20250421222827.283737-1-kuba@kernel.org> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Now that the rx_buf_len is stored and validated per queue allow it being set differently for different queues. Instead of copying the device setting for each queue ask the core for the config via netdev_queue_config(). Signed-off-by: Jakub Kicinski --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index a772ffaf3e5b..141acfed0f91 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -4280,6 +4280,7 @@ static void bnxt_init_ring_struct(struct bnxt *bp) for (i = 0; i < bp->cp_nr_rings; i++) { struct bnxt_napi *bnapi = bp->bnapi[i]; + struct netdev_queue_config qcfg; struct bnxt_ring_mem_info *rmem; struct bnxt_cp_ring_info *cpr; struct bnxt_rx_ring_info *rxr; @@ -4302,7 +4303,8 @@ static void bnxt_init_ring_struct(struct bnxt *bp) if (!rxr) goto skip_rx; - rxr->rx_page_size = bp->rx_page_size; + netdev_queue_config(bp->dev, i, &qcfg); + rxr->rx_page_size = qcfg.rx_buf_len; ring = &rxr->rx_ring_struct; rmem = &ring->ring_mem; @@ -15771,6 +15773,7 @@ static int bnxt_queue_mem_alloc(struct net_device *dev, clone->rx_agg_prod = 0; clone->rx_sw_agg_prod = 0; clone->rx_next_cons = 0; + clone->rx_page_size = qcfg->rx_buf_len; clone->need_head_pool = false; rc = bnxt_alloc_rx_page_pool(bp, clone, rxr->page_pool->p.nid); @@ -15877,6 +15880,8 @@ static void bnxt_copy_rx_ring(struct bnxt *bp, src_ring = &src->rx_ring_struct; src_rmem = &src_ring->ring_mem; + dst->rx_page_size = src->rx_page_size; + WARN_ON(dst_rmem->nr_pages != src_rmem->nr_pages); WARN_ON(dst_rmem->page_size != src_rmem->page_size); WARN_ON(dst_rmem->flags != src_rmem->flags); @@ -16088,6 +16093,7 @@ bnxt_queue_cfg_defaults(struct net_device *dev, int idx, } static const struct netdev_queue_mgmt_ops bnxt_queue_mgmt_ops = { + .supported_ring_params = ETHTOOL_RING_USE_RX_BUF_LEN, .ndo_queue_mem_size = sizeof(struct bnxt_rx_ring_info), .ndo_queue_cfg_defaults = bnxt_queue_cfg_defaults, -- 2.49.0