On Thu, 12 Oct 2017 19:18:16 +0200, Jiri Pirko wrote: > diff --git a/drivers/net/ethernet/netronome/nfp/bpf/offload.c > b/drivers/net/ethernet/netronome/nfp/bpf/offload.c > index a88bb5b..9e9af88 100644 > --- a/drivers/net/ethernet/netronome/nfp/bpf/offload.c > +++ b/drivers/net/ethernet/netronome/nfp/bpf/offload.c > @@ -246,6 +246,10 @@ int nfp_net_bpf_offload(struct nfp_net *nn, struct > tc_cls_bpf_offload *cls_bpf) > void *code; > int err; > > + if (cls_bpf->common.protocol != htons(ETH_P_ALL) || > + cls_bpf->common.chain_index) > + return -EOPNOTSUPP; > + > max_instr = nn_readw(nn, NFP_NET_CFG_BPF_MAX_LEN); > > switch (cls_bpf->command) {
It is certainly very ugly but I send a fake struct tc_cls_bpf_offload here for XDP. Refactoring this mess is pretty high on my priority list but one way or the other this function will be called from XDP so TC checks must stay in the TC handler... :(