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

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

parent 9c212255
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -379,18 +379,20 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
							  hash));
			break;
		case BPF_ANC | SKF_AD_VLAN_TAG:
		case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2);
			BUILD_BUG_ON(VLAN_TAG_PRESENT != 0x1000);

			PPC_LHZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
							  vlan_tci));
			if (code == (BPF_ANC | SKF_AD_VLAN_TAG)) {
#ifdef VLAN_TAG_PRESENT
			PPC_ANDI(r_A, r_A, ~VLAN_TAG_PRESENT);
			} else {
				PPC_ANDI(r_A, r_A, VLAN_TAG_PRESENT);
				PPC_SRWI(r_A, r_A, 12);
			}
#endif
			break;
		case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:
			PPC_LBZ_OFFS(r_A, r_skb, PKT_VLAN_PRESENT_OFFSET());
			if (PKT_VLAN_PRESENT_BIT)
				PPC_SRWI(r_A, r_A, PKT_VLAN_PRESENT_BIT);
			if (PKT_VLAN_PRESENT_BIT < 7)
				PPC_ANDI(r_A, r_A, 1);
			break;
		case BPF_ANC | SKF_AD_QUEUE:
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff,