Lorenzo Bianconi wrote: > From: Eelco Chaudron <echaudro@xxxxxxxxxx> > > This change adds support for tail growing and shrinking for XDP multi-buff. > > When called on a multi-buffer packet with a grow request, it will work > on the last fragment of the packet. So the maximum grow size is the > last fragments tailroom, i.e. no new buffer will be allocated. > A XDP mb capable driver is expected to set frag_size in xdp_rxq_info data > structure to notify the XDP core the fragment size. frag_size set to 0 is > interpreted by the XDP core as tail growing is not allowed. > Introduce __xdp_rxq_info_reg utility routine to initialize frag_size field. > > When shrinking, it will work from the last fragment, all the way down to > the base buffer depending on the shrinking size. It's important to mention > that once you shrink down the fragment(s) are freed, so you can not grow > again to the original size. > > Acked-by: Jakub Kicinski <kuba@xxxxxxxxxx> > Co-developed-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > Signed-off-by: Eelco Chaudron <echaudro@xxxxxxxxxx> > --- > drivers/net/ethernet/marvell/mvneta.c | 3 +- > include/net/xdp.h | 16 ++++++- > net/core/filter.c | 65 +++++++++++++++++++++++++++ > net/core/xdp.c | 12 ++--- > 4 files changed, 88 insertions(+), 8 deletions(-) > LGTM Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>