[dpdk-dev] Regarding changing RTE_RING_SZ_MASK to 0x7FFFFFFF

Olivier MATZ olivier.matz at 6wind.com
Wed Sep 6 17:07:35 CEST 2017


Hi Venky,

Sorry for the late reply.

On Mon, Aug 14, 2017 at 11:01:38AM -0700, Venkatesh Nuthula wrote:
> Hi all,
> 
>   I am a newbie to DPDK and in one of the applications I am building , I am
> trying to capture more than 150M packets and save them to file. I noticed
> that with packet count > 134M, the check 'count > RTE_RING_SZ_MASK' fails
> as RTE_RING_SZ_MASK is set to 0x0FFFFFFF. So I tried changing
> RTE_RING_SZ_MASK to 0x7FFFFFFF and it took me past the check
> 'count > RTE_RING_SZ_MASK' and the DPDK booted successfully. No error
> messages. But when I try to save the packets captured in memory pool into
> the file, I notice that it fails(my application exits without any error
> message) to write beyond a number of packets.
> 
> I noticed that this failure to write packets happens only when I change the
> RTE_RING_SZ_MASK to 0x7FFFFFFF from original value 0x0FFFFFFF. I have below
> questions to understand this further.
> 
> 
> 
> *1) Why is RTE_RING_SZ_MASK set to 0x0FFFFFFF. Why are the 4 bits left
> unused? Is it because ring size shouldn't exceed 2 power 32?2) If yes to
> above question, can anybody please explain why ring size can't exceed 2
> power 32 as ssize_t can hold more than 2 power 32?  *

I don't see any good reason today to limit the size of the ring to
0x0FFFFFFF. Looking in the history, this was probably done to keep
some room for flags. See 50d769054872 ("ring: add burst API").

The only flag used (RTE_RING_QUOT_EXCEED) has been removed recently
in commit 77dd3064270c ("ring: remove watermark support").

So I think there is no issue to change the max size to 0x7FFFFFFF.
I don't think it would be straightforward to increase it more,
since ring->size is an uint32_t.

I will submit a patch for this.

Thanks,
Olivier


More information about the dev mailing list