Revert "xsk: Document ability to redirect to any socket bound to the same umem"

This reverts commit 968595a936.

Reported-by: Yuval El-Hanany <YuvalE@radware.com>
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/xdp-newbies/8100DBDC-0B7C-49DB-9995-6027F6E63147@radware.com
Link: https://lore.kernel.org/bpf/20240604122927.29080-3-magnus.karlsson@gmail.com
This commit is contained in:
Magnus Karlsson 2024-06-04 14:29:26 +02:00 committed by Daniel Borkmann
parent 7fcf26b315
commit 03e38d315f
1 changed files with 13 additions and 18 deletions

View File

@ -329,24 +329,23 @@ XDP_SHARED_UMEM option and provide the initial socket's fd in the
sxdp_shared_umem_fd field as you registered the UMEM on that sxdp_shared_umem_fd field as you registered the UMEM on that
socket. These two sockets will now share one and the same UMEM. socket. These two sockets will now share one and the same UMEM.
In this case, it is possible to use the NIC's packet steering There is no need to supply an XDP program like the one in the previous
capabilities to steer the packets to the right queue. This is not case where sockets were bound to the same queue id and
possible in the previous example as there is only one queue shared device. Instead, use the NIC's packet steering capabilities to steer
among sockets, so the NIC cannot do this steering as it can only steer the packets to the right queue. In the previous example, there is only
between queues. one queue shared among sockets, so the NIC cannot do this steering. It
can only steer between queues.
In libxdp (or libbpf prior to version 1.0), you need to use the In libbpf, you need to use the xsk_socket__create_shared() API as it
xsk_socket__create_shared() API as it takes a reference to a FILL ring takes a reference to a FILL ring and a COMPLETION ring that will be
and a COMPLETION ring that will be created for you and bound to the created for you and bound to the shared UMEM. You can use this
shared UMEM. You can use this function for all the sockets you create, function for all the sockets you create, or you can use it for the
or you can use it for the second and following ones and use second and following ones and use xsk_socket__create() for the first
xsk_socket__create() for the first one. Both methods yield the same one. Both methods yield the same result.
result.
Note that a UMEM can be shared between sockets on the same queue id Note that a UMEM can be shared between sockets on the same queue id
and device, as well as between queues on the same device and between and device, as well as between queues on the same device and between
devices at the same time. It is also possible to redirect to any devices at the same time.
socket as long as it is bound to the same umem with XDP_SHARED_UMEM.
XDP_USE_NEED_WAKEUP bind flag XDP_USE_NEED_WAKEUP bind flag
----------------------------- -----------------------------
@ -823,10 +822,6 @@ A: The short answer is no, that is not supported at the moment. The
switch, or other distribution mechanism, in your NIC to direct switch, or other distribution mechanism, in your NIC to direct
traffic to the correct queue id and socket. traffic to the correct queue id and socket.
Note that if you are using the XDP_SHARED_UMEM option, it is
possible to switch traffic between any socket bound to the same
umem.
Q: My packets are sometimes corrupted. What is wrong? Q: My packets are sometimes corrupted. What is wrong?
A: Care has to be taken not to feed the same buffer in the UMEM into A: Care has to be taken not to feed the same buffer in the UMEM into