On Sun, Nov 9, 2014 at 9:59 PM, Denis Kirjanov <k...@linux-powerpc.org> wrote: > Add BPF extension SKF_AD_HATYPE to ppc JIT to check > the hw type of the interface > > Before: > [ 57.723666] test_bpf: #20 LD_HATYPE > [ 57.723675] BPF filter opcode 0020 (@0) unsupported > [ 57.724168] 48 48 PASS > > After: > [ 103.053184] test_bpf: #20 LD_HATYPE 7 6 PASS > > CC: Alexei Starovoitov<alexei.starovoi...@gmail.com> > CC: Daniel Borkmann<dbork...@redhat.com> > CC: Philippe Bergheaud<fe...@linux.vnet.ibm.com> > Signed-off-by: Denis Kirjanov <k...@linux-powerpc.org> > > v2: address Alexei's comments > --- > arch/powerpc/net/bpf_jit_comp.c | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c > index d110e28..d3fa80d 100644 > --- a/arch/powerpc/net/bpf_jit_comp.c > +++ b/arch/powerpc/net/bpf_jit_comp.c > @@ -361,6 +361,11 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 > *image, > protocol)); > break; > case BPF_ANC | SKF_AD_IFINDEX: > + case BPF_ANC | SKF_AD_HATYPE: > + BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, > + ifindex) != 4); > + BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, > + type) != 2); > PPC_LD_OFFS(r_scratch1, r_skb, offsetof(struct > sk_buff, > dev)); > PPC_CMPDI(r_scratch1, 0); > @@ -368,14 +373,18 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 > *image, > PPC_BCC(COND_EQ, addrs[ctx->pc_ret0]); > } else { > /* Exit, returning 0; first pass hits here. */ > - PPC_BCC_SHORT(COND_NE, (ctx->idx*4)+12); > + PPC_BCC_SHORT(COND_NE, ctx->idx * 4 + 12); > PPC_LI(r_ret, 0); > PPC_JMP(exit_addr); > } > - BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, > - ifindex) != 4); > - PPC_LWZ_OFFS(r_A, r_scratch1, > + if (code == (BPF_ANC | SKF_AD_IFINDEX)) { > + PPC_LWZ_OFFS(r_A, r_scratch1, > offsetof(struct net_device, ifindex)); > + } else { > + PPC_LHZ_OFFS(r_A, r_scratch1, > + offsetof(struct net_device, type));
formatting is a bit off here, but that's minor. Acked-by: Alexei Starovoitov <a...@plumgrid.com> _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev