On Wed, Sep 30, 2020 at 05:41:57PM +0200, Lorenzo Bianconi wrote: > From: Sameeh Jubran <sameehj@xxxxxxxxxx> > > The implementation is based on this [0] draft by Jesper D. Brouer. > > Provided two new helpers: > > * bpf_xdp_get_frag_count() > * bpf_xdp_get_frags_total_size() > > [0] xdp mb design - https://github.com/xdp-project/xdp-project/blob/master/areas/core/xdp-multi-buffer01-design.org > Signed-off-by: Sameeh Jubran <sameehj@xxxxxxxxxx> > Co-developed-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > --- > include/uapi/linux/bpf.h | 14 ++++++++++++ > net/core/filter.c | 42 ++++++++++++++++++++++++++++++++++ > tools/include/uapi/linux/bpf.h | 14 ++++++++++++ > 3 files changed, 70 insertions(+) > > diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > index a22812561064..6f97dce8cccf 100644 > --- a/include/uapi/linux/bpf.h > +++ b/include/uapi/linux/bpf.h > @@ -3586,6 +3586,18 @@ union bpf_attr { > * the data in *dst*. This is a wrapper of **copy_from_user**\ (). > * Return > * 0 on success, or a negative error in case of failure. > + * > + * int bpf_xdp_get_frag_count(struct xdp_buff *xdp_md) > + * Description > + * Get the number of fragments for a given xdp multi-buffer. > + * Return > + * The number of fragments > + * > + * int bpf_xdp_get_frags_total_size(struct xdp_buff *xdp_md) > + * Description > + * Get the total size of fragments for a given xdp multi-buffer. > + * Return > + * The total size of fragments for a given xdp multi-buffer. > */ > #define __BPF_FUNC_MAPPER(FN) \ > FN(unspec), \ > @@ -3737,6 +3749,8 @@ union bpf_attr { > FN(inode_storage_delete), \ > FN(d_path), \ > FN(copy_from_user), \ > + FN(xdp_get_frag_count), \ > + FN(xdp_get_frags_total_size), \ > /* */ Please route the set via bpf-next otherwise merge conflicts will be severe.