[dpdk-dev] [PATCH] test-pmd fix default mbuf size

Olivier MATZ olivier.matz at 6wind.com
Wed Apr 29 11:54:47 CEST 2015


Hi Konstantin,

On 04/28/2015 03:02 PM, Konstantin Ananyev wrote:
> Latest mbuf changes (priv_size addition and related fixes)
> exposed small problem with testpmd default config:
> testpmd default mbuf size is exaclty 2KB, that causes
> ixgbe PMD to select scattered RX even for configs with 'normal'
> max packet length (max_rx_pkt_len == ETHER_MAX_LEN).
>
> Signed-off-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> ---
>   app/test-pmd/testpmd.h | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
> index 389fc24..037e7ec 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -48,7 +48,8 @@
>    * Default size of the mbuf data buffer to receive standard 1518-byte
>    * Ethernet frames in a mono-segment memory buffer.
>    */
> -#define DEFAULT_MBUF_DATA_SIZE 2048 /**< Default size of mbuf data buffer. */
> +#define DEFAULT_MBUF_DATA_SIZE (2048 + RTE_PKTMBUF_HEADROOM)
> +/**< Default size of mbuf data buffer. */
>
>   /*
>    * The maximum number of segments per packet is used when creating
>

Indeed, this regression is introduced by one of my recent
patch: 
http://dpdk.org/browse/dpdk/commit/?id=dfb03bbe2b39156f0e42e7f29e09c1e6b6def265

Before, m->buf_len was initialized to RTE_PKTMBUF_HEADROOM + 2048.
Now it is set to 2048.

Maybe a line like this should be added in the commit log:
Fixes: dfb03bbe2b ("app/testpmd: use standard functions to initialize 
mbufs and mbuf pool")

Just one question Konstantin: could you just confirm that the
reason of the bug? From what I understand:
- buf_len is 2048
- the rx data size when receiving a packet is 2048 - hdroom = 1920
- at init, the ixgbe driver configures the hw to set the max rx
   data size, but it has to be a power of 2, so 1024 is chosen
- then the initialization code check if a packet of ETHER_MAX_LEN
   fits in max rx size, and if not, it selects the scatter mode.

It makes me wondering 2 things:
- should we add a comment in the test-pmd to explain that? (maybe
   not, as it is driver-specific, and it is just an optimization)
- should we check the other examples to see if the same problem
   exists?

If my understanding is correct,
Acked-by: Olivier Matz <olivier.matz at 6wind.com>

Regards,
Olivier



More information about the dev mailing list