sparc: bpf_jit: add SKF_AD_PKTTYPE support to JIT
authorAlexei Starovoitov <ast@plumgrid.com>
Tue, 16 Sep 2014 19:35:35 +0000 (12:35 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Sep 2014 19:34:40 +0000 (15:34 -0400)
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 <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/net/bpf_jit_comp.c

index b2ad9dc5425e261fd580232aff0b22b763542d99..2dde48bdcc429639623836fb50776dd90fce3dac 100644 (file)
@@ -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);