Commit 4b50d231 authored by Michał Mirosław's avatar Michał Mirosław Committed by David S. Miller
Browse files

net/bpf_jit: SPARC: split VLAN_PRESENT bit handling from VLAN_TCI

parent 3955dec5
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -552,15 +552,18 @@ void bpf_jit_compile(struct bpf_prog *fp)
				emit_skb_load32(hash, r_A);
				break;
			case BPF_ANC | SKF_AD_VLAN_TAG:
			case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:
				emit_skb_load16(vlan_tci, r_A);
				if (code != (BPF_ANC | SKF_AD_VLAN_TAG)) {
					emit_alu_K(SRL, 12);
					emit_andi(r_A, 1, r_A);
				} else {
#ifdef VLAN_TAG_PRESENT
				emit_loadimm(~VLAN_TAG_PRESENT, r_TMP);
				emit_and(r_A, r_TMP, r_A);
				}
#endif
				break;
			case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:
				__emit_skb_load8(__pkt_vlan_present_offset, r_A);
				if (PKT_VLAN_PRESENT_BIT)
					emit_alu_K(SRL, PKT_VLAN_PRESENT_BIT);
				if (PKT_VLAN_PRESENT_BIT < 7)
					emit_andi(r_A, 1, r_A);
				break;
			case BPF_LD | BPF_W | BPF_LEN:
				emit_skb_load32(len, r_A);