XDP for idpf is currently 5 chapters: * convert Rx to libeth; * convert Tx completion and stats to libeth (this); * generic XDP and XSk code changes; * actual XDP for idpf via libeth_xdp; * XSk for idpf (^).
Part II does the following: * introduces generic libeth per-queue stats infra; * 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); * fully switches idpf per-queue stats to libeth. Most idpf patches again remove more lines than adds. The perf difference is not visible by eye in common scenarios, but the stats are now more complete and reliable, and also survive ifups-ifdowns. Alexander Lobakin (6): unroll: add generic loop unroll helpers libeth: add common queue stats libie: add Tx buffer completion helpers idpf: convert to libie Tx buffer completion netdevice: add netdev_tx_reset_subqueue() shorthand idpf: switch to libeth generic statistics Joshua Hay (2): idpf: refactor Tx completion routines idpf: enable WB_ON_ITR Michal Kubiak (1): idpf: fix netdev Tx queue stop/wake drivers/net/ethernet/intel/libeth/Makefile | 4 +- include/net/libeth/types.h | 247 ++++++++ drivers/net/ethernet/intel/idpf/idpf.h | 21 +- drivers/net/ethernet/intel/idpf/idpf_txrx.h | 144 ++--- drivers/net/ethernet/intel/idpf/virtchnl2.h | 33 +- drivers/net/ethernet/intel/libeth/priv.h | 21 + include/linux/netdevice.h | 13 +- include/linux/unroll.h | 50 ++ include/net/libeth/netdev.h | 31 + include/net/libeth/stats.h | 141 +++++ include/net/libeth/tx.h | 127 +++++ drivers/net/ethernet/intel/idpf/idpf_dev.c | 2 + .../net/ethernet/intel/idpf/idpf_ethtool.c | 498 ++-------------- drivers/net/ethernet/intel/idpf/idpf_lib.c | 32 +- .../ethernet/intel/idpf/idpf_singleq_txrx.c | 172 +++--- drivers/net/ethernet/intel/idpf/idpf_txrx.c | 538 +++++++++--------- drivers/net/ethernet/intel/idpf/idpf_vf_dev.c | 2 + .../net/ethernet/intel/idpf/idpf_virtchnl.c | 37 +- drivers/net/ethernet/intel/libeth/netdev.c | 157 +++++ drivers/net/ethernet/intel/libeth/rx.c | 5 - drivers/net/ethernet/intel/libeth/stats.c | 360 ++++++++++++ 21 files changed, 1633 insertions(+), 1002 deletions(-) create mode 100644 include/net/libeth/types.h create mode 100644 drivers/net/ethernet/intel/libeth/priv.h create mode 100644 include/linux/unroll.h create mode 100644 include/net/libeth/netdev.h create mode 100644 include/net/libeth/stats.h create mode 100644 include/net/libeth/tx.h create mode 100644 drivers/net/ethernet/intel/libeth/netdev.c create mode 100644 drivers/net/ethernet/intel/libeth/stats.c -- 2.45.2