Fri, Oct 13, 2017 at 03:08:24AM CEST, jakub.kicin...@netronome.com wrote: >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... :(
Okay. But currently, why is it a problem? You don't need the checks for xdp path.