Hello Xiaolong, On Thu, Apr 11, 2019 at 4:30 AM Ye Xiaolong <xiaolong...@intel.com> wrote:
> On 04/10, David Marchand wrote: > >If we reserve N slots, but only submit n slots, we end up with an > incorrect > >opinion of the number of available slots later. > >Either xsk_ring_prod__submit should also update cached_prod (but I am not > >sure it was the intent of this api), or we must ensure that both reserve > >and submit are consistent. > > I think you are right, current design does have the flaw, I haven't > thought of > it before :( So in order to make sure both reserve and submit are > consistent, what > about we check the valid count of mbuf at the beginning, then reserve the > valid > count slots? > > Ok, I can see other places to inspect in the driver: reserve_fill_queue() for the same issue, and eth_af_xdp_rx() for a similar issue but with xsk_ring_cons__peek()/xsk_ring_cons__release() ? Validating the needed slots count before reserving/peeking in the prod/cons rings seems the most simple fix. -- David Marchand