Hi, > -----Original Message----- > From: users [mailto:users-bounces at dpdk.org] On Behalf Of Wu, Xiaoban > Sent: Wednesday, June 08, 2016 2:22 AM > To: users at dpdk.org > Subject: [dpdk-users] A question about the function __mempool_get_bulk() of > dpdk-16.04 > > 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 too observed this issue a few days back. [I ended up changing DPDK code to get around it - some use-case I don't recall now]. > > > 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;"? Probably, what is happening is that all calls to __mempool_get_bulk in DPDK code base are not worrying about a return value stating number of objects/buffers handled. They just require a positive number and are satisfied with '0'. Reading through the API itself, I was not sure if it indeed should return the count or not. Given the pktgen use-case, 'count' looks more probable. And even if modified, it wouldn't break any call flow - AFAIK. Probably guys on devel@ can help us. > > > Am I missing something here? Thank you so much for your help. > > > All the best, > > Xiaoban - Shreyansh
