lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5e481c98-bf82-283f-e826-82802a2bd7d6@intel.com>
Date: Thu, 10 Aug 2023 19:09:21 +0200
From: Alexander Lobakin <aleksander.lobakin@...el.com>
To: Ratheesh Kannoth <rkannoth@...vell.com>
CC: <netdev@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
	<sgoutham@...vell.com>, <lcherian@...vell.com>, <gakula@...vell.com>,
	<jerinj@...vell.com>, <hkelam@...vell.com>, <sbhatta@...vell.com>,
	<davem@...emloft.net>, <edumazet@...gle.com>, <kuba@...nel.org>,
	<pabeni@...hat.com>
Subject: Re: [PATCH net] octeontx2-pf: Set page pool size

From: Ratheesh Kannoth <rkannoth@...vell.com>
Date: Thu, 10 Aug 2023 08:14:22 +0530

> page pool infra does direct recycling aggressively.
> This would often keep ptr_ring left unused. Save
> memory by configuring ptr_ring to a constant value(2K).
> 
> Please find discussion at
> https://lore.kernel.org/netdev/
> 	15d32b22-22b0-64e3-a49e-88d780c24616@...nel.org/T/
> 
> Fixes: b2e3406a38f0 ("octeontx2-pf: Add support for page pool")

Now the commit message doesn't explain why this is a fix.
The subject is also ambigous.
In the subject, you need to say clearly what you're fixing. E.g. "fix
page_pool creation fail for rings > 32k".
In the commitmsg, provide the actual kernel warning/error and explain
some implementation details, like: "instead of clamping page_pool size
to 32k at most, limit it even more to 2k to avoid wasting memory on much
less used now ptr_ring".

> Suggested-by: Alexander Lobakin <aleksander.lobakin@...el.com>
> Signed-off-by: Ratheesh Kannoth <rkannoth@...vell.com>
> ---
>  drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 3 ++-
>  1 file changed, 2 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..123348a9e19e 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
> +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
> @@ -1432,7 +1432,8 @@ 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;
> +#define OTX2_PAGE_POOL_SZ 2048
> +	pp_params.pool_size = OTX2_PAGE_POOL_SZ;

And if the ring size is e.g. 256 or 512 or even 1024, why have Page Pool
with 2048 elements? Should be something like

min(numptrs, OTX2_PAGE_POOL_MAX_SZ)

And please place the definition somewhere next to other definitions at
the top of the file or in some header, dunno. Placing it inside the
function almost guarantees you won't be able to find it one day.

>  	pp_params.nid = NUMA_NO_NODE;
>  	pp_params.dev = pfvf->dev;
>  	pp_params.dma_dir = DMA_FROM_DEVICE;

Thanks,
Olek

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ