[PATCH net-next,v5 00/12] add flow_rule infrastructure

Pablo Neira Ayuso
2018-12-06T22:40:21Z

Hi,

This is another iteration of the in-kernel intermediate representation
(IR) that allows to express ACL hardware offloads using one unified
representation from the driver side for the ethtool and the tc
frontends [1] [2] [3].

In words of Michal Kubecek:

"... the ethtool interface can apply four types of action to matching
packets:

- put into a specific queue
- discard
- distribute accross the queues according to a RSS context
- use the rule as a wake-on-lan filter"

This new round now supports for these four types, that can be mapped to
the flow_rule representation.

Changes from previous version:

* Michal Kubecek:
- Add support for FLOW_RSS flag to the ethtool_rx_flow_spec
to flow_rule translator.

* Venkat Duvvuru:
- Fix accidental swapping of flow_stats_update() bytes and
packets parameter.

* kbuild robot:
- Fix double kfree in error path from cls_flower, via Julian Lawal.
- Fix enum type mismatch in nfp driver reported by sparse
checks.

Please apply, thanks.

Pablo Neira Ayuso (12):
flow_offload: add flow_rule and flow_match structures and use them
net/mlx5e: support for two independent packet edit actions
flow_offload: add flow action infrastructure
cls_api: add translator to flow_action representation
flow_offload: add statistics retrieval infrastructure and use it
drivers: net: use flow action infrastructure
cls_flower: don't expose TC actions to drivers anymore
flow_offload: add wake-up-on-lan and queue to flow_action
ethtool: add ethtool_rx_flow_spec to flow_rule structure translator
dsa: bcm_sf2: use flow_rule infrastructure
qede: place ethtool_rx_flow_spec after code after TC flower codebase
qede: use ethtool_rx_flow_rule() to remove duplicated parser code

drivers/net/dsa/bcm_sf2_cfp.c | 102 ++-
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 252 +++----
.../net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 450 ++++++-------
drivers/net/ethernet/intel/i40e/i40e_main.c | 178 ++---
drivers/net/ethernet/intel/iavf/iavf_main.c | 195 +++---
drivers/net/ethernet/intel/igb/igb_main.c | 64 +-
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 743 ++++++++++-----------
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c | 2 +-
.../net/ethernet/mellanox/mlxsw/spectrum_flower.c | 258 ++++---
drivers/net/ethernet/netronome/nfp/flower/action.c | 198 +++---
drivers/net/ethernet/netronome/nfp/flower/match.c | 417 ++++++------
.../net/ethernet/netronome/nfp/flower/offload.c | 150 ++---
drivers/net/ethernet/qlogic/qede/qede_filter.c | 572 ++++++----------
include/linux/ethtool.h | 15 +
include/net/flow_offload.h | 202 ++++++
include/net/pkt_cls.h | 18 +-
net/core/Makefile | 2 +-
net/core/ethtool.c | 240 +++++++
net/core/flow_offload.c | 153 +++++
net/sched/cls_api.c | 116 ++++
net/sched/cls_flower.c | 71 +-
21 files changed, 2403 insertions(+), 1995 deletions(-)
create mode 100644 include/net/flow_offload.h
create mode 100644 net/core/flow_offload.c

--
2.11.0