netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pavel Begunkov <asml.silence@gmail.com>
To: Jakub Kicinski <kuba@kernel.org>, netdev@vger.kernel.org
Cc: asml.silence@gmail.com, Eric Dumazet <edumazet@google.com>,
	Willem de Bruijn <willemb@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	andrew+netdev@lunn.ch, horms@kernel.org, davem@davemloft.net,
	sdf@fomichev.me, almasrymina@google.com, dw@davidwei.uk,
	michael.chan@broadcom.com, dtatulea@nvidia.com,
	ap420073@gmail.com, linux-kernel@vger.kernel.org
Subject: [RFC v2 08/24] eth: bnxt: set page pool page order based on rx_page_size
Date: Fri,  8 Aug 2025 15:54:31 +0100	[thread overview]
Message-ID: <ab19a69b57617b89201a1442c3ae8c5db498313b.1754657711.git.asml.silence@gmail.com> (raw)
In-Reply-To: <cover.1754657711.git.asml.silence@gmail.com>

From: Jakub Kicinski <kuba@kernel.org>

If user decides to increase the buffer size for agg ring
we need to ask the page pool for higher order pages.
There is no need to use larger pages for header frags,
if user increase the size of agg ring buffers switch
to separate header page automatically.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
[pavel: calculate adjust max_len]
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 7d35e9a8869b..869c15d4dc34 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -3818,12 +3818,14 @@ static int bnxt_alloc_rx_page_pool(struct bnxt *bp,
 	pp.pool_size = bp->rx_agg_ring_size / agg_size_fac;
 	if (BNXT_RX_PAGE_MODE(bp))
 		pp.pool_size += bp->rx_ring_size / rx_size_fac;
+
+	pp.order = get_order(bp->rx_page_size);
 	pp.nid = numa_node;
 	pp.napi = &rxr->bnapi->napi;
 	pp.netdev = bp->dev;
 	pp.dev = &bp->pdev->dev;
 	pp.dma_dir = bp->rx_dir;
-	pp.max_len = PAGE_SIZE;
+	pp.max_len = PAGE_SIZE << pp.order;
 	pp.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV |
 		   PP_FLAG_ALLOW_UNREADABLE_NETMEM;
 	pp.queue_idx = rxr->bnapi->index;
@@ -3834,7 +3836,10 @@ static int bnxt_alloc_rx_page_pool(struct bnxt *bp,
 	rxr->page_pool = pool;
 
 	rxr->need_head_pool = page_pool_is_unreadable(pool);
+	rxr->need_head_pool |= !!pp.order;
 	if (bnxt_separate_head_pool(rxr)) {
+		pp.order = 0;
+		pp.max_len = PAGE_SIZE;
 		pp.pool_size = min(bp->rx_ring_size / rx_size_fac, 1024);
 		pp.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
 		pool = page_pool_create(&pp);
-- 
2.49.0


  parent reply	other threads:[~2025-08-08 14:53 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-08 14:54 [RFC v2 00/24] Per queue configs and large rx buffer support for zcrx Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 01/24] net: page_pool: sanitise allocation order Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 02/24] docs: ethtool: document that rx_buf_len must control payload lengths Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 03/24] net: ethtool: report max value for rx-buf-len Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 04/24] net: use zero value to restore rx_buf_len to default Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 05/24] net: clarify the meaning of netdev_config members Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 06/24] net: add rx_buf_len to netdev config Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 07/24] eth: bnxt: read the page size from the adapter struct Pavel Begunkov
2025-08-08 14:54 ` Pavel Begunkov [this message]
2025-08-08 14:54 ` [RFC v2 09/24] eth: bnxt: support setting size of agg buffers via ethtool Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 10/24] net: move netdev_config manipulation to dedicated helpers Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 11/24] net: reduce indent of struct netdev_queue_mgmt_ops members Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 12/24] net: allocate per-queue config structs and pass them thru the queue API Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 13/24] net: pass extack to netdev_rx_queue_restart() Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 14/24] net: add queue config validation callback Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 15/24] eth: bnxt: always set the queue mgmt ops Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 16/24] eth: bnxt: store the rx buf size per queue Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 17/24] eth: bnxt: adjust the fill level of agg queues with larger buffers Pavel Begunkov
2025-08-08 18:03   ` Stanislav Fomichev
2025-08-08 21:05     ` Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 18/24] netdev: add support for setting rx-buf-len per queue Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 19/24] net: wipe the setting of deactived queues Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 20/24] eth: bnxt: use queue op config validate Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 21/24] eth: bnxt: support per queue configuration of rx-buf-len Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 22/24] net: let pp memory provider to specify rx buf len Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 23/24] net: validate driver supports passed qcfg params Pavel Begunkov
2025-08-08 14:54 ` [RFC v2 24/24] io_uring/zcrx: implement large rx buffer support Pavel Begunkov
2025-08-13 15:39 ` [RFC v2 00/24] Per queue configs and large rx buffer support for zcrx Dragos Tatulea
2025-08-14 10:46   ` Pavel Begunkov
2025-08-15 16:44     ` Dragos Tatulea
2025-08-15 20:15       ` Pavel Begunkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab19a69b57617b89201a1442c3ae8c5db498313b.1754657711.git.asml.silence@gmail.com \
    --to=asml.silence@gmail.com \
    --cc=almasrymina@google.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=ap420073@gmail.com \
    --cc=davem@davemloft.net \
    --cc=dtatulea@nvidia.com \
    --cc=dw@davidwei.uk \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.chan@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@fomichev.me \
    --cc=willemb@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).