Hi, this set starts by converting cls_matchall to the new flow offload infrastructure. It so happens that all drivers implementing cls_matchall offload today also offload cls_flower, so its a little easier for them to handle the actions in unified flow_rule format, even though in cls_matchall there is no flow to speak of. If a driver ever appears which would prefer the old, direct access to TC exts, we can add the pointer in the offload structure back and support both.
Next the act_police is added to actions supported by flow offload API. NFP support for act_police offload is added as the final step. The flower firmware is configured to perform TX rate limiting in a way which matches act_police's behaviour. It does not use DMA.IN back pressure, and instead drops packets after they had been already DMAed into the NIC. IOW it uses our standard traffic policing implementation, future patches will extend it to other ports and traffic directions. Pieter Jansen van Vuuren (13): net/sched: add sample action to the hardware intermediate representation net/sched: use the hardware intermediate representation for matchall mlxsw: use intermediate representation for matchall offload net/dsa: use intermediate representation for matchall offload net/sched: remove unused functions for matchall offload net/sched: move police action structures to header net/sched: add police action to the hardware intermediate representation net/sched: extend matchall offload for hardware statistics net/sched: allow stats updates from offloaded police actions net/sched: add block pointer to tc_cls_common_offload structure nfp: flower: add qos offload framework nfp: flower: add qos offload install and remove functionality. nfp: flower: add qos offload stats request and reply .../net/ethernet/mellanox/mlxsw/spectrum.c | 38 +- drivers/net/ethernet/netronome/nfp/Makefile | 3 +- .../net/ethernet/netronome/nfp/flower/cmsg.c | 3 + .../net/ethernet/netronome/nfp/flower/cmsg.h | 3 + .../net/ethernet/netronome/nfp/flower/main.c | 6 + .../net/ethernet/netronome/nfp/flower/main.h | 29 ++ .../ethernet/netronome/nfp/flower/offload.c | 3 + .../ethernet/netronome/nfp/flower/qos_conf.c | 366 ++++++++++++++++++ include/net/flow_offload.h | 23 ++ include/net/pkt_cls.h | 36 +- include/net/tc_act/tc_police.h | 70 ++++ net/dsa/slave.c | 16 +- net/sched/act_police.c | 52 +-- net/sched/cls_api.c | 14 + net/sched/cls_bpf.c | 7 +- net/sched/cls_flower.c | 11 +- net/sched/cls_matchall.c | 65 +++- net/sched/cls_u32.c | 17 +- 18 files changed, 654 insertions(+), 108 deletions(-) create mode 100644 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c create mode 100644 include/net/tc_act/tc_police.h -- 2.21.0