[PATCH] af_xdp: use standard hierarchy for FAQs

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

 



af_xdp: use standard hierarchy for FAQs

The formatting of the AF_XDP FAQ section led to nasty
HTML. Adopt the scheme used in netdev-FAQ.rst, which
exploits the standard rst hierarchy.

Signed-off-by: nick black <nickblack@xxxxxxxxx>
---
 Documentation/networking/af_xdp.rst | 110 ++++++++++++++--------------
 1 file changed, 56 insertions(+), 54 deletions(-)

diff --git Documentation/networking/af_xdp.rst Documentation/networking/af_xdp.rst
index 60b217b436be..f049d7d61c04 100644
--- Documentation/networking/af_xdp.rst
+++ Documentation/networking/af_xdp.rst
@@ -560,60 +560,62 @@ code in tools/lib/bpf/xsk.[ch].
 FAQ
 =======
 
-Q: I am not seeing any traffic on the socket. What am I doing wrong?
-
-A: When a netdev of a physical NIC is initialized, Linux usually
-   allocates one RX and TX queue pair per core. So on a 8 core system,
-   queue ids 0 to 7 will be allocated, one per core. In the AF_XDP
-   bind call or the xsk_socket__create libbpf function call, you
-   specify a specific queue id to bind to and it is only the traffic
-   towards that queue you are going to get on you socket. So in the
-   example above, if you bind to queue 0, you are NOT going to get any
-   traffic that is distributed to queues 1 through 7. If you are
-   lucky, you will see the traffic, but usually it will end up on one
-   of the queues you have not bound to.
-
-   There are a number of ways to solve the problem of getting the
-   traffic you want to the queue id you bound to. If you want to see
-   all the traffic, you can force the netdev to only have 1 queue, queue
-   id 0, and then bind to queue 0. You can use ethtool to do this::
-
-     sudo ethtool -L <interface> combined 1
-
-   If you want to only see part of the traffic, you can program the
-   NIC through ethtool to filter out your traffic to a single queue id
-   that you can bind your XDP socket to. Here is one example in which
-   UDP traffic to and from port 4242 are sent to queue 2::
-
-     sudo ethtool -N <interface> rx-flow-hash udp4 fn
-     sudo ethtool -N <interface> flow-type udp4 src-port 4242 dst-port \
-     4242 action 2
-
-   A number of other ways are possible all up to the capabilities of
-   the NIC you have.
-
-Q: Can I use the XSKMAP to implement a switch betwen different umems
-   in copy mode?
-
-A: The short answer is no, that is not supported at the moment. The
-   XSKMAP can only be used to switch traffic coming in on queue id X
-   to sockets bound to the same queue id X. The XSKMAP can contain
-   sockets bound to different queue ids, for example X and Y, but only
-   traffic goming in from queue id Y can be directed to sockets bound
-   to the same queue id Y. In zero-copy mode, you should use the
-   switch, or other distribution mechanism, in your NIC to direct
-   traffic to the correct queue id and socket.
-
-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
-   more than one ring at the same time. If you for example feed the
-   same buffer into the FILL ring and the TX ring at the same time, the
-   NIC might receive data into the buffer at the same time it is
-   sending it. This will cause some packets to become corrupted. Same
-   thing goes for feeding the same buffer into the FILL rings
-   belonging to different queue ids or netdevs bound with the
-   XDP_SHARED_UMEM flag.
+I am not seeing any traffic on the socket. What am I doing wrong?
+-----------------------------------------------------------------
+
+When a netdev of a physical NIC is initialized, Linux usually
+allocates one RX and TX queue pair per core. So on a 8 core system,
+queue ids 0 to 7 will be allocated, one per core. In the AF_XDP
+bind call or the xsk_socket__create libbpf function call, you
+specify a specific queue id to bind to and it is only the traffic
+towards that queue you are going to get on you socket. So in the
+example above, if you bind to queue 0, you are NOT going to get any
+traffic that is distributed to queues 1 through 7. If you are
+lucky, you will see the traffic, but usually it will end up on one
+of the queues you have not bound to.
+
+There are a number of ways to solve the problem of getting the
+traffic you want to the queue id you bound to. If you want to see
+all the traffic, you can force the netdev to only have 1 queue, queue
+id 0, and then bind to queue 0. You can use ethtool to do this::
+
+  sudo ethtool -L <interface> combined 1
+
+If you want to only see part of the traffic, you can program the
+NIC through ethtool to filter out your traffic to a single queue id
+that you can bind your XDP socket to. Here is one example in which
+UDP traffic to and from port 4242 are sent to queue 2::
+
+  sudo ethtool -N <interface> rx-flow-hash udp4 fn
+  sudo ethtool -N <interface> flow-type udp4 src-port 4242 dst-port \
+  4242 action 2
+
+A number of other ways are possible all up to the capabilities of
+the NIC you have.
+
+Can I use the XSKMAP to implement a switch betwen different umems in copy mode?
+-------------------------------------------------------------------------------
+
+The short answer is no, that is not supported at the moment. The
+XSKMAP can only be used to switch traffic coming in on queue id X
+to sockets bound to the same queue id X. The XSKMAP can contain
+sockets bound to different queue ids, for example X and Y, but only
+traffic goming in from queue id Y can be directed to sockets bound
+to the same queue id Y. In zero-copy mode, you should use the
+switch, or other distribution mechanism, in your NIC to direct
+traffic to the correct queue id and socket.
+
+My packets are sometimes corrupted. What is wrong?
+--------------------------------------------------
+
+Care has to be taken not to feed the same buffer in the UMEM into
+more than one ring at the same time. If you for example feed the
+same buffer into the FILL ring and the TX ring at the same time, the
+NIC might receive data into the buffer at the same time it is
+sending it. This will cause some packets to become corrupted. Same
+thing goes for feeding the same buffer into the FILL rings
+belonging to different queue ids or netdevs bound with the
+XDP_SHARED_UMEM flag.
 
 Credits
 =======
-- 
2.35.1




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux