<snip> > > > > > > > > > > > > 29/03/2019 15:17, Olivier Matz: > > > > > > > Hi, > > > > > > > > > > > > > > On Fri, Mar 15, 2019 at 11:31:25AM +0800, Gavin Hu wrote: > > > > > > > > Currently, the flush is done by dequeuing the ring in a while > > > > > > > > loop. > > It is > > > > > > > > much simpler to flush the queue by resetting the head and > > > > > > > > tail > > indices. > > > > > > > > > > > > > > > > Fixes: af75078fece3 ("first public release") > > > > > > > > Cc: sta...@dpdk.org > > > > > > > > > > > > > > > > Signed-off-by: Gavin Hu <gavin...@arm.com> > > > > > > > > Reviewed-by: Ruifeng Wang <ruifeng.w...@arm.com> > > > > > > > > Reviewed-by: Honnappa Nagarahalli > > <honnappa.nagaraha...@arm.com> > > > > > > > > --- > > > > > > > > --- a/lib/librte_ring/rte_ring_version.map > > > > > > > > +++ b/lib/librte_ring/rte_ring_version.map > > > > > > > > @@ -17,3 +17,10 @@ DPDK_2.2 { > > > > > > > > rte_ring_free; > > > > > > > > > > > > > > > > } DPDK_2.0; > > > > > > > > + > > > > > > > > +EXPERIMENTAL { > > > > > > > > + global: > > > > > > > > + > > > > > > > > + rte_ring_reset; > > > > > > > > + > > > > > > > > +}; > > > > > > > > > > > > > > To me, a static inline function does not need to be added in > > > > > > > rte_ring_version.map (or is it due to a check script > > > > > > > checking the __rte_experimental tag ?). I found at least one > > > > > > > commit where it is not the case: > > > > > > > c277b34c1b3b ("mbuf: add function returning buffer address") > > > > > > > > > > > > > > There are 2 options: > > > > > > > 1- remove the rte_ring_version.map part of the patch. > > > > > > > 2- change the static inline function into a standard function. > > > > > > > > > > > > > > I would prefer 2-, because it allows to keep an api/abi > > > > > > > compat layer in the future. > > > > > > > > > > > > There are no news about this patch. > > > > > > I classify it as changes requested. > > > > > > > > > > > Sorry for missed your comments for long time, I just submitted v8. > > > > > I took the first option as it is in the data path and to keep > > > > > consistent to > > its > > > > neighboring functions. > > > > > > > > Could you give a little more context about why you need to reset > > > > the ring in the data path? I see that it is used in > > > > rte_hash_reset(), but in my thinking, this was more used at init/exit. > > > Sorry,literally it is in the control path, but I was impressed it > > > will impact > > the > > > Data path performance when discussing this patch with Honnappa. > > > > I'm asking this because given the recent discussions about ABI > > stability, I'd like to avoid defining a new static inline if it is not > > required. > > Ok, will take 2nd option in V9, and squash the two patches into one, otherwise > it reports the following error: > "error: ‘rte_ring_reset’ defined but not used [-Werror=unused-function]" Agree, it is a control path function, does not impact any data path performance. It should not be inline.
> > Best regards, > Gavin