]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
octeontx2-pf: fix page_pool creation fail for rings > 32k
authorRatheesh Kannoth <rkannoth@marvell.com>
Thu, 24 Aug 2023 03:03:01 +0000 (08:33 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jun 2025 12:40:22 +0000 (14:40 +0200)
commit 49fa4b0d06705a24a81bb8be6eb175059b77f0a7 upstream.

octeontx2 driver calls page_pool_create() during driver probe()
and fails if queue size > 32k. Page pool infra uses these buffers
as shock absorbers for burst traffic. These pages are pinned down
over time as working sets varies, due to the recycling nature
of page pool, given page pool (currently) don't have a shrinker
mechanism, the pages remain pinned down in ptr_ring.
Instead of clamping page_pool size to 32k at
most, limit it even more to 2k to avoid wasting memory.

This have been tested on octeontx2 CN10KA hardware.
TCP and UDP tests using iperf shows no performance regressions.

Fixes: b2e3406a38f0 ("octeontx2-pf: Add support for page pool")
Suggested-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
Acked-by: Jesper Dangaard Brouer <hawk@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h

index 59a7e6f376f478d0c7aa16a90347609a10212752..3fca896f8f9052c71932e233f22c16529cbd9d94 100644 (file)
@@ -1434,7 +1434,7 @@ int otx2_pool_init(struct otx2_nic *pfvf, u16 pool_id,
        }
 
        pp_params.flags = PP_FLAG_PAGE_FRAG | PP_FLAG_DMA_MAP;
-       pp_params.pool_size = numptrs;
+       pp_params.pool_size = min(OTX2_PAGE_POOL_SZ, numptrs);
        pp_params.nid = NUMA_NO_NODE;
        pp_params.dev = pfvf->dev;
        pp_params.dma_dir = DMA_FROM_DEVICE;
index b5d689eeff80b8d331c9509ebf9310b02d3256fa..9e3bfbe5c480946da799ae02adff5e489afb0b10 100644 (file)
@@ -23,6 +23,8 @@
 #define        OTX2_ETH_HLEN           (VLAN_ETH_HLEN + VLAN_HLEN)
 #define        OTX2_MIN_MTU            60
 
+#define OTX2_PAGE_POOL_SZ      2048
+
 #define OTX2_MAX_GSO_SEGS      255
 #define OTX2_MAX_FRAGS_IN_SQE  9