net/bpf_jit: SPARC: split VLAN_PRESENT bit handling from VLAN_TCI
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
3955dec537
Коммит
4b50d23179
|
@ -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);
|
||||
#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);
|
||||
} else {
|
||||
emit_loadimm(~VLAN_TAG_PRESENT, r_TMP);
|
||||
emit_and(r_A, r_TMP, r_A);
|
||||
}
|
||||
break;
|
||||
case BPF_LD | BPF_W | BPF_LEN:
|
||||
emit_skb_load32(len, r_A);
|
||||
|
|
Загрузка…
Ссылка в новой задаче