On Wed, Aug 18, 2021 at 1:55 PM Jesper Dangaard Brouer <jbrouer@xxxxxxxxxx> wrote: > > > In previous discussions with AF_XDP maintainers (Magnus+Bjørn), I > understood we have two challenges with metadata and BTF id. > > (1) AF_XDP doesn't know size of metadata area. > (2) No room in xdp_desc to store the BTF-id. > > Below I propose new idea to solve (1) metadata size. > > To follow the discussion this is struct xdp_desc: > > /* Rx/Tx descriptor */ > struct xdp_desc { > __u64 addr; > __u32 len; > __u32 options; > }; > > One option (that was rejected) was to store the BTF-id in 'options' and > deduct the metadata size from BTF-id, but it was rejected as it blocks > future usages of 'options'. > > The proposal by Magnus was to use a single bit in 'options' to say this > descriptor contains metadata described via BTF info. And Bjørn proposed > to store the BTF-id as the last member in metadata, as it would be > accessible via minus-4 byte offset from packet start 'addr'. And again > via BTF-id code can know the size of metadata area. This is basically what Kishen had in his RFC. > My idea is that we could store the metadata size in top-bits of 'len' > member when we have set the 'options' bit for BTF-metadata. What are the main advantages with this proposal compared to the former one when we can get the length of the metadata section from the BTF-id? When do we actually want to use the length of the metadata section for something in user-space instead of just accessing the members directly? Just trying to understand. Thanks: Magnus > -Jesper >