sparc: bpf_jit: add SKF_AD_PKTTYPE support to JIT
[linux-2.6-block.git] / 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);