Patch "octeontx2-pf: fix page_pool creation fail for rings > 32k" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    octeontx2-pf: fix page_pool creation fail for rings > 32k

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     octeontx2-pf-fix-page_pool-creation-fail-for-rings-3.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2a8957fb21334f5b05906a315a73d6d9263ef266
Author: Ratheesh Kannoth <rkannoth@xxxxxxxxxxx>
Date:   Thu Aug 24 08:33:01 2023 +0530

    octeontx2-pf: fix page_pool creation fail for rings > 32k
    
    [ Upstream commit 49fa4b0d06705a24a81bb8be6eb175059b77f0a7 ]
    
    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@xxxxxxxxx>
    Reviewed-by: Sunil Goutham <sgoutham@xxxxxxxxxxx>
    Signed-off-by: Ratheesh Kannoth <rkannoth@xxxxxxxxxxx>
    Acked-by: Jesper Dangaard Brouer <hawk@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index 77c8f650f7ac1..3e1c70c746227 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -1432,7 +1432,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;
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h
index b5d689eeff80b..9e3bfbe5c4809 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h
@@ -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
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux