PPC: net: bpf_jit_comp: add VLAN instructions for BPF JIT
Subsystems (5)
PATCH 2/2 PPC: net: bpf_jit_comp: add VLAN instructions for BPF JIT
This patch is a follow-up for patch "net: filter: add vlan tag access" to support the new VLAN_TAG/VLAN_TAG_PRESENT accessors in BPF JIT.
---
Disclaimer: uncompiled and untested, since I don't have a PPC machine, but it should (hopefully) integrate cleanly; impl. after PPC instruction reference.
arch/powerpc/net/bpf_jit_comp.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
arch/powerpc/net/bpf_jit_comp.c +14 -0
@@ -13,6 +13,8 @@#include <asm/cacheflush.h> #include <linux/netdevice.h> #include <linux/filter.h> +#include <linux/if_vlan.h> +#include "bpf_jit.h" #ifndef __BIG_ENDIAN
@@ -89,6 +91,8 @@ static void bpf_jit_build_prologue(struct sk_filter *fp, u32 *image,case BPF_S_ANC_IFINDEX :case BPF_S_ANC_MARK :case BPF_S_ANC_RXHASH : +case BPF_S_ANC_VLAN_TAG : +case BPF_S_ANC_VLAN_TAG_PRESENT :case BPF_S_ANC_CPU :case BPF_S_ANC_QUEUE :case BPF_S_LD_W_ABS :
@@ -382,6 +386,16 @@ static int bpf_jit_build_body(struct sk_filter *fp, u32 *image,PPC_LWZ_OFFS (r_A, r_skb, offsetof(struct sk_buff , rxhash));break ; +case BPF_S_ANC_VLAN_TAG : +case BPF_S_ANC_VLAN_TAG_PRESENT : + BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2); +PPC_LHZ_OFFS (r_A, r_skb, offsetof(struct sk_buff , + vlan_tci)); +if (filter[i].code ==BPF_S_ANC_VLAN_TAG ) +PPC_ANDI (r_A, r_A,VLAN_VID_MASK ); +else +PPC_ANDI (r_A, r_A,VLAN_TAG_PRESENT ); +break ;case BPF_S_ANC_QUEUE :BUILD_BUG_ON (FIELD_SIZEOF (struct sk_buff , queue_mapping) != 2);
Hi,
Quoted 10 lines · Daniel Borkmann
This patch is a follow-up for patch "net: filter: add vlan tag access" to support the new VLAN_TAG/VLAN_TAG_PRESENT accessors in BPF JIT.
Signed-off-by Daniel Borkmann <[email protected]>Cc Matt Evans <[email protected]>Cc Benjamin Herrenschmidt <[email protected]>---
Disclaimer: uncompiled and untested, since I don't have a PPC machine, but it should (hopefully) integrate cleanly; impl. after PPC instruction reference.
And for this too,
Sorry for the delay in reviewing this!
Thanks,
Matt
Quoted 43 lines
arch/powerpc/net/bpf_jit_comp.c| 14 ++++++++++++++1 files changed, 14 insertions(+), 0 deletions(-)arch/powerpc/net/bpf_jit_comp.c +14
-0@@ -13,6 +13,8 @@#include <asm/cacheflush.h> #include <linux/netdevice.h> #include <linux/filter.h> +#include <linux/if_vlan.h> +#include "bpf_jit.h" #ifndef __BIG_ENDIAN@@ -89,6 +91,8 @@ static void bpf_jit_build_prologue(struct sk_filter *fp, u32 *image,case BPF_S_ANC_IFINDEX :case BPF_S_ANC_MARK :case BPF_S_ANC_RXHASH : +case BPF_S_ANC_VLAN_TAG : +case BPF_S_ANC_VLAN_TAG_PRESENT :case BPF_S_ANC_CPU :case BPF_S_ANC_QUEUE :case BPF_S_LD_W_ABS :@@ -382,6 +386,16 @@ static int bpf_jit_build_body(struct sk_filter *fp, u32 *image,PPC_LWZ_OFFS (r_A, r_skb, offsetof(struct sk_buff , rxhash));break ; +case BPF_S_ANC_VLAN_TAG : +case BPF_S_ANC_VLAN_TAG_PRESENT : + BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2); +PPC_LHZ_OFFS (r_A, r_skb, offsetof(struct sk_buff , + vlan_tci)); +if (filter[i].code ==BPF_S_ANC_VLAN_TAG ) +PPC_ANDI (r_A, r_A,VLAN_VID_MASK ); +else +PPC_ANDI (r_A, r_A,VLAN_TAG_PRESENT ); +break ;case BPF_S_ANC_QUEUE :BUILD_BUG_ON (FIELD_SIZEOF (struct sk_buff , queue_mapping) != 2);
From: Matt Evans <[email protected]>
Date: Sat, 17 Nov 2012 00:06:03 +0000
Quoted 15 lines
Hi,
Quoted 10 lines · Daniel Borkmann
This patch is a follow-up for patch "net: filter: add vlan tag access" to support the new VLAN_TAG/VLAN_TAG_PRESENT accessors in BPF JIT.
Signed-off-by Daniel Borkmann <[email protected]>Cc Matt Evans <[email protected]>Cc Benjamin Herrenschmidt <[email protected]>---
Disclaimer: uncompiled and untested, since I don't have a PPC machine, but it should (hopefully) integrate cleanly; impl. after PPC instruction reference.
Quoted 5 lines
And for this too,
Acked-by Matt Evans <[email protected]>Sorry for the delay in reviewing this!
Applied, thanks for reviewing.