[PATCH v2 01/10] net/ngbe: fix Rx buffer size in configure register

Ferruh Yigit ferruh.yigit at amd.com
Wed Feb 8 11:28:07 CET 2023


On 2/2/2023 9:21 AM, Jiawen Wu wrote:
> When buffer size is less than 1K, round down makes it 0, which is an
> error value.
> 
> Fixes: 62fc35e63d0e ("net/ngbe: support Rx queue start/stop")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Jiawen Wu <jiawenwu at trustnetic.com>
> ---
>  drivers/net/ngbe/ngbe_rxtx.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c
> index 9fd24fa444..9a646cb6a7 100644
> --- a/drivers/net/ngbe/ngbe_rxtx.c
> +++ b/drivers/net/ngbe/ngbe_rxtx.c
> @@ -2944,7 +2944,10 @@ ngbe_dev_rx_init(struct rte_eth_dev *dev)
>  		 */
>  		buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rxq->mb_pool) -
>  			RTE_PKTMBUF_HEADROOM);
> -		buf_size = ROUND_DOWN(buf_size, 0x1 << 10);
> +		if (buf_size < 1024)
> +			buf_size = ROUND_UP(buf_size, 0x1 << 10);

Back to original problem statement in previous version, can't this cause
HW to receive packets exceeding the buffer size?

If HW accepts buffer size in multiple of 1K, does this mean any buffer
size less than 1K is an error condition for this HW?

> +		else
> +			buf_size = ROUND_DOWN(buf_size, 0x1 << 10);
>  		srrctl |= NGBE_RXCFG_PKTLEN(buf_size);
>  
>  		wr32(hw, NGBE_RXCFG(rxq->reg_idx), srrctl);



More information about the dev mailing list