AF_XDP finding descriptor room for XDP-hints metadata size

2 messages, 2 authors, 2021-08-18 · open the first message on its own page

AF_XDP finding descriptor room for XDP-hints metadata size

From: Jesper Dangaard Brouer <hidden>
Date: 2021-08-18 11:54:47

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.

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.

-Jesper

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

From: Magnus Karlsson <hidden>
Date: 2021-08-18 12:50:13

On Wed, Aug 18, 2021 at 1:55 PM Jesper Dangaard Brouer
[off-list ref] 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help