Hi! This set makes all drivers use a new tc_cls_can_offload_and_chain0() helper which will set extack in case TC hw offload flag is disabled.
I chose to keep the new helper which also looks at the chain but renamed it more appropriately. The rationale being that most drivers don't accept chains other than 0 and since we have to pass extack to the helper we can as well pass the entire struct tc_cls_common_offload and perform the most common checks. This code makes the assumption that type_data in the callback can be interpreted as struct tc_cls_common_offload, i.e. the real offload structure has common part as the first member. This allows us to make the check once for all classifier types if driver supports more than one. v1: - drop the type validation in nfp and netdevsim. v2: - reorder checks in patch 1; - split other changes from patch 1; - add the i40e patch in; - add one more test case - for chain 0 extack. Jakub Kicinski (11): pkt_cls: add new tc cls helper to check offload flag and chain index netdevsim: use tc_cls_can_offload_and_chain0() nfp: use tc_cls_can_offload_and_chain0() cxgb4: use tc_cls_can_offload_and_chain0() mlx5: use tc_cls_can_offload_and_chain0() bnxt: use tc_cls_can_offload_and_chain0() ixgbe: use tc_cls_can_offload_and_chain0() i40e: use tc_cls_can_offload_and_chain0() mlxsw: use tc_cls_can_offload_and_chain0() selftests/bpf: check for spurious extacks from the driver selftests/bpf: check for chain-non-0 extack message drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +- drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 3 -- drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c | 3 +- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 8 +--- drivers/net/ethernet/intel/i40e/i40e_main.c | 8 ++-- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 5 +-- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 +-- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 5 +-- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 6 +-- drivers/net/ethernet/netronome/nfp/bpf/main.c | 4 +- .../net/ethernet/netronome/nfp/flower/offload.c | 7 ++-- drivers/net/netdevsim/bpf.c | 5 +-- include/net/pkt_cls.h | 14 +++++++ tools/testing/selftests/bpf/test_offload.py | 43 ++++++++++++++++++++-- 14 files changed, 72 insertions(+), 47 deletions(-) -- 2.15.1