[v4,0/7] net/tap: queue flow action RSS using BPF redo

Message ID 20240208190827.332368-1-stephen@networkplumber.org (mailing list archive)
Headers
Series net/tap: queue flow action RSS using BPF redo |

Message

Stephen Hemminger Feb. 8, 2024, 7:05 p.m. UTC
The support of doing RSS for rte_flow_action was a cool idea
but it has been broken for several releases of DPDK as the
kernel and BPF infrastructure changed.

This series cleans up the BPF program, implements several
features that were never completed in the original code
and changes to use the current BPF toolchain.

The result should be easier to read and maintain.
The build process checks for the required components
and if not there will stub out to not supported.

This patch series is mostly the same as the original RFC,
most of the changes are to split it up and always build
the BPF from source.

v4 - remove accidental inclusion of tap_bpf_program.o
     split number of queues from the number of RSS queue flows
     define number of queues one place

Stephen Hemminger (7):
  net/tap: remove unused RSS hash types
  net/tap: validate and setup parameters for BPF RSS
  tap: stop "vendoring" linux bpf headers
  net/tap: rewrite the RSS BPF program
  net/tap: use libbpf to load new BPF program
  net/tap: remove no longer used files
  MAINTAINERS: add maintainer for TAP device

 .gitignore                            |    3 -
 MAINTAINERS                           |    1 +
 drivers/net/tap/bpf/Makefile          |   19 -
 drivers/net/tap/bpf/README            |   12 +
 drivers/net/tap/bpf/bpf_api.h         |  276 ----
 drivers/net/tap/bpf/bpf_elf.h         |   53 -
 drivers/net/tap/bpf/bpf_extract.py    |   86 --
 drivers/net/tap/bpf/meson.build       |   82 ++
 drivers/net/tap/bpf/tap_bpf_program.c |  255 ----
 drivers/net/tap/bpf/tap_rss.c         |  272 ++++
 drivers/net/tap/meson.build           |   29 +-
 drivers/net/tap/rte_eth_tap.c         |    2 +
 drivers/net/tap/rte_eth_tap.h         |    9 +-
 drivers/net/tap/tap_bpf.h             |  121 --
 drivers/net/tap/tap_bpf_api.c         |  190 ---
 drivers/net/tap/tap_bpf_insns.h       | 1743 -------------------------
 drivers/net/tap/tap_flow.c            |  521 +++-----
 drivers/net/tap/tap_flow.h            |   16 +-
 drivers/net/tap/tap_rss.h             |   21 +-
 drivers/net/tap/tap_tcmsgs.h          |    4 +-
 20 files changed, 543 insertions(+), 3172 deletions(-)
 delete mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/README
 delete mode 100644 drivers/net/tap/bpf/bpf_api.h
 delete mode 100644 drivers/net/tap/bpf/bpf_elf.h
 delete mode 100644 drivers/net/tap/bpf/bpf_extract.py
 create mode 100644 drivers/net/tap/bpf/meson.build
 delete mode 100644 drivers/net/tap/bpf/tap_bpf_program.c
 create mode 100644 drivers/net/tap/bpf/tap_rss.c
 delete mode 100644 drivers/net/tap/tap_bpf.h
 delete mode 100644 drivers/net/tap/tap_bpf_api.c
 delete mode 100644 drivers/net/tap/tap_bpf_insns.h
  

Comments

Stephen Hemminger Feb. 12, 2024, 4:47 p.m. UTC | #1
On Thu,  8 Feb 2024 11:05:48 -0800
Stephen Hemminger <stephen@networkplumber.org> wrote:

> The support of doing RSS for rte_flow_action was a cool idea
> but it has been broken for several releases of DPDK as the
> kernel and BPF infrastructure changed.
> 
> This series cleans up the BPF program, implements several
> features that were never completed in the original code
> and changes to use the current BPF toolchain.
> 
> The result should be easier to read and maintain.
> The build process checks for the required components
> and if not there will stub out to not supported.
> 
> This patch series is mostly the same as the original RFC,
> most of the changes are to split it up and always build
> the BPF from source.
> 
> v4 - remove accidental inclusion of tap_bpf_program.o
>      split number of queues from the number of RSS queue flows
>      define number of queues one place

Please hold this until after 24.03 release.
Would like to get some tests and documentation in place.