Re: [PATCH bpf-next v5 07/17] bpf: XDP metadata RX kfuncs

David Vernet
2023-01-03T22:35:45Z

On Tue, Jan 03, 2023 at 02:23:59PM -0800, Stanislav Fomichev wrote:
> On Tue, Dec 27, 2022 at 12:33 PM David Vernet <void@manifault.com> wrote:
> >
> > On Tue, Dec 20, 2022 at 02:20:33PM -0800, Stanislav Fomichev wrote:
> >
> > Hey Stanislav,
> >
> > [...]
> >
> > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> > > index aad12a179e54..b41d18490595 100644
> > > --- a/include/linux/netdevice.h
> > > +++ b/include/linux/netdevice.h
> > > @@ -74,6 +74,7 @@ struct udp_tunnel_nic_info;
> > > struct udp_tunnel_nic;
> > > struct bpf_prog;
> > > struct xdp_buff;
> > > +struct xdp_md;
> > >
> > > void synchronize_net(void);
> > > void netdev_set_default_ethtool_ops(struct net_device *dev,
> > > @@ -1618,6 +1619,11 @@ struct net_device_ops {
> > > bool cycles);
> > > };
> > >
> > > +struct xdp_metadata_ops {
> > > + int (*xmo_rx_timestamp)(const struct xdp_md *ctx, u64 *timestamp);
> > > + int (*xmo_rx_hash)(const struct xdp_md *ctx, u32 *hash);
> > > +};
> > > +
> > > /**
> > > * enum netdev_priv_flags - &struct net_device priv_flags
> > > *
> > > @@ -2050,6 +2056,7 @@ struct net_device {
> > > unsigned int flags;
> > > unsigned long long priv_flags;
> > > const struct net_device_ops *netdev_ops;
> > > + const struct xdp_metadata_ops *xdp_metadata_ops;
> >
> > You need to document this field above the struct, or the docs build will
> > complain:
> >
> > SPHINX htmldocs -->
> > <redacted>
> > make[2]: Nothing to be done for 'html'.
> > Using sphinx_rtd_theme theme
> > source directory: networking
> > ./include/linux/netdevice.h:2371: warning: Function parameter or
> > member 'xdp_metadata_ops' not described in 'net_device'
> >
> > > int ifindex;
> > > unsigned short gflags;
> > > unsigned short hard_header_len;
>
> Thanks, I will try to actually build the doc. Last time I tried it
> took too long and I gave up :-)

FYI the docs build system supports building specific subdirectories,
e.g.:

make -j SPHINXDIRS="networking" htmldocs

That should take O(seconds) instead of O(timeout) :-)

- David