[dpdk-users] A question about the function __mempool_get_bulk() of dpdk-16.04

Wiles, Keith keith.wiles at intel.com
Wed Jun 8 00:30:24 CEST 2016


On 6/7/16, 3:52 PM, "users on behalf of Wu, Xiaoban" <users-bounces at dpdk.org on behalf of Xiaoban_Wu at student.uml.edu> wrote:

>Dear DPDK Users,
>
>
>I have been reading the pktgen-3.0.02 source codes with dpdk-16.04.
>
>
>In the pktgen.c, function pktgen_send_pkts(), line 1098, it calls function wr_pktmbuf_alloc_bulk_noreset().  Then it calls the function rte_mempool_get_bulk() which calls the function __mempool_get_bulk().
>
>
>Since in the function rte_pktmbuf_pool_create(), the "flags" is set to zero in default, this leads to that when calling __mempool_get_bulk(), the input parameter"is_mc==1". Hence the function __mempool_get_bulk() will execute the line 961-992 except that when "ret" is less that 0.

I checked out dpdk v16.04 and could not get your line numbers to workout, maybe you are on a slightly different version then release 16.04??

>
>
>My question is why at line 992, this has to return 0? In the line 941, the comment says that  ">=0: Success; number of objects supplied." I am confused by this comment, since in line 985-990, we can see that the input parameter "obj_table" is supplied by new values and the number of the new values is "n". Does this means that we need to "return n;" instead of "return 0;"?

The statement “>=0 number of objects supplied” also confused me some, but routines rte_ring_mc/sc_dequeue_bulk() returns zero on success when all requested objects are return not the number of objects returned. It seems it would be nice to have the number of objects returned, but as it is always ‘n’ it is best to return  < 0 on error. The _bulk allocate will not return a les then ‘n’ objects, this is why the code in pktgen tests for zero and not something greater then zero. The code in pktgen could test for ret >= 0 but the results are the same. 
>
>
>Am I missing something here? Thank you so much for your help.
>
>
>All the best,
>
>Xiaoban
>





More information about the users mailing list