mirror of
https://github.com/joel16/android_kernel_sony_msm8994.git
synced 2025-01-05 19:49:06 +00:00
[PKT_SCHED]: vlan tag match
Provide a way to use tc filters on vlan tag even if tag is buried in skb due to hardware acceleration. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
dded91611a
commit
3113e88c3c
@ -459,7 +459,8 @@ enum
|
||||
#define TCF_EM_U32 3
|
||||
#define TCF_EM_META 4
|
||||
#define TCF_EM_TEXT 5
|
||||
#define TCF_EM_MAX 5
|
||||
#define TCF_EM_VLAN 6
|
||||
#define TCF_EM_MAX 6
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -81,6 +81,7 @@ enum
|
||||
TCF_META_ID_SK_SNDTIMEO,
|
||||
TCF_META_ID_SK_SENDMSG_OFF,
|
||||
TCF_META_ID_SK_WRITE_PENDING,
|
||||
TCF_META_ID_VLAN_TAG,
|
||||
__TCF_META_ID_MAX
|
||||
};
|
||||
#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
|
||||
|
@ -65,6 +65,7 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/random.h>
|
||||
#include <linux/if_vlan.h>
|
||||
#include <linux/tc_ematch/tc_em_meta.h>
|
||||
#include <net/dst.h>
|
||||
#include <net/route.h>
|
||||
@ -169,6 +170,21 @@ META_COLLECTOR(var_dev)
|
||||
*err = var_dev(skb->dev, dst);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* vlan tag
|
||||
**************************************************************************/
|
||||
|
||||
META_COLLECTOR(int_vlan_tag)
|
||||
{
|
||||
unsigned short tag;
|
||||
if (vlan_get_tag(skb, &tag) < 0)
|
||||
*err = -1;
|
||||
else
|
||||
dst->value = tag;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* skb attributes
|
||||
**************************************************************************/
|
||||
@ -520,6 +536,7 @@ static struct meta_ops __meta_ops[TCF_META_TYPE_MAX+1][TCF_META_ID_MAX+1] = {
|
||||
[META_ID(SK_SNDTIMEO)] = META_FUNC(int_sk_sndtimeo),
|
||||
[META_ID(SK_SENDMSG_OFF)] = META_FUNC(int_sk_sendmsg_off),
|
||||
[META_ID(SK_WRITE_PENDING)] = META_FUNC(int_sk_write_pend),
|
||||
[META_ID(VLAN_TAG)] = META_FUNC(int_vlan_tag),
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user