From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
To: Kal Cutter Conley <kal.conley@dectris.com>
Cc: "Toke Høiland-Jørgensen" <toke@redhat.com>,
"Björn Töpel" <bjorn@kernel.org>,
"Magnus Karlsson" <magnus.karlsson@intel.com>,
"Jonathan Lemon" <jonathan.lemon@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Jesper Dangaard Brouer" <hawk@kernel.org>,
"John Fastabend" <john.fastabend@gmail.com>,
netdev@vger.kernel.org, bpf@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH bpf-next v3 1/3] xsk: Support UMEM chunk_size > PAGE_SIZE
Date: Fri, 21 Apr 2023 11:37:37 +0200 [thread overview]
Message-ID: <ZEJZYa8WT6A9VpOJ@boxer> (raw)
In-Reply-To: <CAHApi-kcaMRPj4mEPs87_4Z6iO5qEpzOOcbVza7vxURqCtpz=Q@mail.gmail.com>
On Tue, Apr 18, 2023 at 01:12:00PM +0200, Kal Cutter Conley wrote:
Hi there,
> > >> In addition, presumably when using this mode, the other XDP actions
> > >> (XDP_PASS, XDP_REDIRECT to other targets) would stop working unless we
> > >> add special handling for that in the kernel? We'll definitely need to
> > >> handle that somehow...
> > >
> > > I am not familiar with all the details here. Do you know a reason why
> > > these cases would stop working / why special handling would be needed?
> > > For example, if I have a UMEM that uses hugepages and XDP_PASS is
> > > returned, then the data is just copied into an SKB right? SKBs can
> > > also be created directly from hugepages AFAIK. So I don't understand
> > > what the issue would be. Can someone explain this concern?
> >
> > Well, I was asking :) It may well be that the SKB path just works; did
> > you test this? Pretty sure XDP_REDIRECT to another device won't, though?
for XDP_PASS we have to allocate a new buffer and copy the contents from
current xdp_buff that was backed by xsk_buff_pool and give the current one
back to pool. I am not sure if __napi_alloc_skb() is always capable of
handling len > PAGE_SIZE - i believe there might a particular combination
of settings that allows it, but if not we should have a fallback path that
would iterate over data and copy this to a certain (linear + frags) parts.
This implies non-zero effort that is needed for jumbo frames ZC support.
I can certainly test this out and play with it - maybe this just works, I
didn't check yet. Even if it does, then we need some kind of temporary
mechanism that will forbid loading ZC jumbo frames due to what Toke
brought up.
> >
>
> I was also asking :-)
>
> I tested that the SKB path is usable today with this patch.
> Specifically, sending and receiving large jumbo packets with AF_XDP
> and that a non-multi-buffer XDP program could access the whole packet.
> I have not specifically tested XDP_REDIRECT to another device or
> anything with ZC since that is not possible without driver support.
>
> My feeling is, there wouldn't be non-trivial issues here since this
> patchset changes nothing except allowing the maximum chunk size to be
> larger. The driver either supports larger MTUs with XDP enabled or it
> doesn't. If it doesn't, the frames are dropped anyway. Also, chunk
> size mismatches between two XSKs (e.g. with XDP_REDIRECT) would be
> something supported or not supported irrespective of this patchset.
Here is the comparison between multi-buffer and jumbo frames that I did
for ZC ice driver. Configured MTU was 8192 as this is the frame size for
aligned mode when working with huge pages. I am presenting plain numbers
over here from xdpsock.
Mbuf, packet size = 8192 - XDP_PACKET_HEADROOM
885,705pps - rxdrop frame_size=4096
806,307pps - l2fwd frame_size=4096
877,989pps - rxdrop frame_size=2048
773,331pps - l2fwd frame_size=2048
Jumbo, packet size = 8192 - XDP_PACKET_HEADROOM
893,530pps - rxdrop frame_size=8192
841,860pps - l2fwd frame_size=8192
Kal might say that multi-buffer numbers are imaginary as these patches
were never shown to the public ;) but now that we have extensive test
suite I am fixing some last issues that stand out, so we are asking for
some more patience over here... overall i was expecting that they will be
much worse when compared to jumbo frames, but then again i believe this
implementation is not ideal and can be improved. Nevertheless, jumbo
frames support has its value.
next prev parent reply other threads:[~2023-04-21 9:38 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-06 13:02 [PATCH bpf-next v3 0/3] xsk: Support UMEM chunk_size > PAGE_SIZE Kal Conley
2023-04-06 13:02 ` [PATCH bpf-next v3 1/3] " Kal Conley
2023-04-06 18:38 ` Toke Høiland-Jørgensen
2023-04-07 16:28 ` Maciej Fijalkowski
2023-04-08 17:38 ` Kal Cutter Conley
2023-04-12 13:34 ` Toke Høiland-Jørgensen
2023-04-12 13:55 ` Magnus Karlsson
2023-04-12 22:49 ` Toke Høiland-Jørgensen
2023-04-13 10:56 ` Kal Cutter Conley
2023-04-13 11:08 ` Toke Høiland-Jørgensen
2023-04-13 12:43 ` Kal Cutter Conley
2023-04-13 20:49 ` Toke Høiland-Jørgensen
2023-04-13 22:06 ` Kal Cutter Conley
2023-04-13 22:28 ` Toke Høiland-Jørgensen
2023-04-14 9:08 ` Kal Cutter Conley
2023-04-17 12:13 ` Magnus Karlsson
2023-04-17 12:40 ` Toke Høiland-Jørgensen
2023-04-17 13:46 ` Kal Cutter Conley
2023-04-14 16:36 ` Kal Cutter Conley
2023-04-18 10:16 ` Toke Høiland-Jørgensen
2023-04-18 11:12 ` Kal Cutter Conley
2023-04-21 9:37 ` Maciej Fijalkowski [this message]
2023-04-21 9:54 ` Toke Høiland-Jørgensen
2023-04-21 12:27 ` Magnus Karlsson
2023-04-21 12:17 ` Magnus Karlsson
2023-04-21 15:27 ` Kal Cutter Conley
2023-04-06 13:02 ` [PATCH bpf-next v3 2/3] selftests: xsk: Use hugepages when umem->frame_size " Kal Conley
2023-04-06 13:02 ` [PATCH bpf-next v3 3/3] selftests: xsk: Add tests for 8K and 9K frame sizes Kal Conley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZEJZYa8WT6A9VpOJ@boxer \
--to=maciej.fijalkowski@intel.com \
--cc=ast@kernel.org \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=jonathan.lemon@gmail.com \
--cc=kal.conley@dectris.com \
--cc=kuba@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=magnus.karlsson@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=toke@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.