From: Alexei Starovoitov Date: Tue, 16 Sep 2014 19:35:35 +0000 (-0700) Subject: sparc: bpf_jit: add SKF_AD_PKTTYPE support to JIT X-Git-Tag: firefly_0821_release~176^2~3043^2~39 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=709f6c58d4dcd2b300c914ec17b297acae4cb998;p=firefly-linux-kernel-4.4.55.git sparc: bpf_jit: add SKF_AD_PKTTYPE support to JIT commit 233577a22089 ("net: filter: constify detection of pkt_type_offset") allows us to implement simple PKTTYPE support in sparc JIT Signed-off-by: Alexei Starovoitov Signed-off-by: David S. Miller --- diff --git a/arch/sparc/net/bpf_jit_comp.c b/arch/sparc/net/bpf_jit_comp.c index b2ad9dc5425e..2dde48bdcc42 100644 --- a/arch/sparc/net/bpf_jit_comp.c +++ b/arch/sparc/net/bpf_jit_comp.c @@ -579,16 +579,11 @@ void bpf_jit_compile(struct bpf_prog *fp) case BPF_ANC | SKF_AD_PROTOCOL: emit_skb_load16(protocol, r_A); break; -#if 0 - /* GCC won't let us take the address of - * a bit field even though we very much - * know what we are doing here. - */ case BPF_ANC | SKF_AD_PKTTYPE: - __emit_skb_load8(pkt_type, r_A); + __emit_skb_load8(__pkt_type_offset, r_A); + emit_andi(r_A, PKT_TYPE_MAX, r_A); emit_alu_K(SRL, 5); break; -#endif case BPF_ANC | SKF_AD_IFINDEX: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0);