Messages in this thread | | | From | Jesper Dangaard Brouer <> | Date | Thu, 24 Aug 2023 13:01:39 +0200 | Subject | Re: [PATCH v3 net] octeontx2-pf: fix page_pool creation fail for rings > 32k |
| |
On 24/08/2023 05.03, Ratheesh Kannoth wrote: > 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> > ---
Again
Acked-by: Jesper Dangaard Brouer <hawk@kernel.org>
> ChangeLogs: > > v2->v3: Fix macro aligment and header file changes suggested by > Alexander Lobakin > v1->v2: Commit message changes and typo fixes > v0->v1: Commit message changes. > --- > drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 2 +- > drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h | 2 ++ > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c > index 77c8f650f7ac..3e1c70c74622 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 b5d689eeff80..9e3bfbe5c480 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 >
| |