Progress: @dsahern (David Ahern) have started an email thread on the subject: consistency for statistics with XDP mode
Some drivers are not updating the “ifconfig” stats counters, when in XDP mode. This makes receive or send via XDP invisible to sysadm/management tools. This for-sure is going to cause confusion.
Closer look at other drivers.
- ixgbe driver is doing the right thing.
- i40e had a bug, where RX/TX stats are swapped (fixed in commit cdec2141c24e(v4.20-rc1) (“i40e: report correct statistics when XDP is enabled”)).
- mlx5 driver is not updating the regular RX/TX counters, but A LOT of other ethtool stats counters (which are the ones I usually monitor when testing).
Need to have an upstream discussion, on what is the semantic. IHMO the regular RX/TX counters must be updated even for XDP frames.
Very few drivers support XDP_REDIRECT.
HW drivers: ixgbe, i40e, mlx5
SW drivers: veth, tun (tuntap), virtio_net
Driver resources needed to handle a ndo_xdp_xmit() is currently tied to the driver having loaded an RX XDP program. This is strange, as allocating these Driver TX HW resources is independend.
This can quickly lead to exhausting HW resources, like IRQs lines or NIC TX HW queues, given it is assumed a TX queue is alloc/dedicated for each CPU core.
The samples/bpf programs xdp_redirect + xdp_redirect_map are very user unfriendly. #1 they use raw ifindex’es as input + output. #2 the pkt/s number count RX packets, not TX’ed packets which can be dropped silently.
Red Hat QA, got very confused by #2.
Waiting for tracing people to work out the details of BTF.