Re: AF_XDP finding descriptor room for XDP-hints metadata size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux