XDP for idpf is currently 5 chapters: * convert Rx to libeth; * convert Tx completion to libeth (this); * generic XDP and XSk code changes; * actual XDP for idpf via libeth_xdp; * XSk for idpf (^).
Part II does the following: * adds generic libeth Tx completion routines; * converts idpf to use generic libeth Tx comp routines; * fixes Tx queue timeouts and robustifies Tx completion in general; * fixes Tx event/descriptor flushes (writebacks). Most idpf patches again remove more lines than adds. Generic Tx completion helpers and structs are needed as libeth_xdp (Ch. III) makes use of them. WB_ON_ITR is needed since XDPSQs don't want to work without it at all. Tx queue timeouts fixes are needed since without them, it's way easier to catch a Tx timeout event when WB_ON_ITR is enabled. Alexander Lobakin (3): libeth: add Tx buffer completion helpers idpf: convert to libeth Tx buffer completion netdevice: add netdev_tx_reset_subqueue() shorthand Joshua Hay (2): idpf: refactor Tx completion routines idpf: enable WB_ON_ITR Michal Kubiak (1): idpf: fix netdev Tx queue stop/wake include/net/libeth/types.h | 25 ++ drivers/net/ethernet/intel/idpf/idpf_txrx.h | 92 ++-- include/linux/netdevice.h | 13 +- include/net/libeth/tx.h | 129 ++++++ drivers/net/ethernet/intel/idpf/idpf_dev.c | 2 + .../ethernet/intel/idpf/idpf_singleq_txrx.c | 110 +++-- drivers/net/ethernet/intel/idpf/idpf_txrx.c | 394 ++++++++---------- drivers/net/ethernet/intel/idpf/idpf_vf_dev.c | 2 + 8 files changed, 441 insertions(+), 326 deletions(-) create mode 100644 include/net/libeth/types.h create mode 100644 include/net/libeth/tx.h --- >From v1[0]: * drop the stats implementation. It's not generic, uses old Ethtool interfaces and is written using macro templates which made it barely readable (Kuba). I'll be rewriting it separately. * replace `/* <multi-line comment>` with `/*\n * <multi-line comment>` since the special rule for netdev was removed. [0] https://lore.kernel.org/netdev/20240819223442.48013-1-anthony.l.ngu...@intel.com -- 2.46.0