> -----Original Message----- > From: Magnus Karlsson [mailto:magnus.karlsson@xxxxxxxxx] > Sent: Monday, November 23, 2020 5:40 PM > To: Li,Rongqing <lirongqing@xxxxxxxxx> > Cc: Network Development <netdev@xxxxxxxxxxxxxxx>; bpf > <bpf@xxxxxxxxxxxxxxx> > Subject: Re: [PATCH] libbpf: add support for canceling cached_cons advance > > On Sun, Nov 22, 2020 at 2:21 PM Li RongQing <lirongqing@xxxxxxxxx> wrote: > > > > It is possible to fail receiving packets after calling > > xsk_ring_cons__peek, at this condition, cached_cons has been advanced, > > should be cancelled. > > Thanks RongQing, > > I have needed this myself in various situations, so I think we should add this. > But your motivation in the commit message is somewhat confusing. How about > something like this? > > Add a new function for returning descriptors the user received after an > xsk_ring_cons__peek call. After the application has gotten a number of > descriptors from a ring, it might not be able to or want to process them all for > various reasons. Therefore, it would be useful to have an interface for returning > or cancelling a number of them so that they are returned to the ring. This patch > adds a new function called xsk_ring_cons__cancel that performs this operation > on nb descriptors counted from the end of the batch of descriptors that was > received through the peek call. > > Replace your commit message with this, fix the bug below, send a v2 and then I > am happy to ack this. Thank you very much > > /Magnus > > > Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx> > > --- > > tools/lib/bpf/xsk.h | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/tools/lib/bpf/xsk.h b/tools/lib/bpf/xsk.h index > > 1069c46364ff..4128215c246b 100644 > > --- a/tools/lib/bpf/xsk.h > > +++ b/tools/lib/bpf/xsk.h > > @@ -153,6 +153,12 @@ static inline size_t xsk_ring_cons__peek(struct > xsk_ring_cons *cons, > > return entries; > > } > > > > +static inline void xsk_ring_cons__cancel(struct xsk_ring_cons *cons, > > + size_t nb) { > > + rx->cached_cons -= nb; > > cons-> not rx->. Please make sure the v2 compiles and passes checkpatch. > Sorry for building error I will send V2 Thanks -Li > > +} > > + > > static inline void xsk_ring_cons__release(struct xsk_ring_cons *cons, > > size_t nb) { > > /* Make sure data has been read before indicating we are done > > -- > > 2.17.3 > >