Signed-off-by: Paul Blakey <[email protected]>
---
include/uapi/linux/tc_ematch/tc_em_meta.h | 1 +
net/sched/em_meta.c | 8 ++++++++
2 files changed, 9 insertions(+)
diff --git a/include/uapi/linux/tc_ematch/tc_em_meta.h
b/include/uapi/linux/tc_ematch/tc_em_meta.h
index cf30b5b..25a6fb8 100644
--- a/include/uapi/linux/tc_ematch/tc_em_meta.h
+++ b/include/uapi/linux/tc_ematch/tc_em_meta.h
@@ -81,6 +81,7 @@ enum {
TCF_META_ID_SK_WRITE_PENDING,
TCF_META_ID_VLAN_TAG,
TCF_META_ID_RXHASH,
+ TCF_META_ID_TCRECIRC,
__TCF_META_ID_MAX
};
#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c
index d6e9711..041e0b3 100644
--- a/net/sched/em_meta.c
+++ b/net/sched/em_meta.c
@@ -245,6 +245,13 @@ static inline int var_dev(struct net_device *dev, struct
meta_obj *dst)
dst->value = skb->tc_index;
}
+META_COLLECTOR(int_tcrecirc)
+{
+ uint32_t *recirc = skb_ext_find(skb, SKB_EXT_TC_RECIRC_ID);
+
+ dst->value = recirc? *recirc : 0;
+}
+
/**************************************************************************
* Routing
**************************************************************************/
@@ -638,6 +645,7 @@ struct meta_ops {
[META_ID(MACLEN)] = META_FUNC(int_maclen),
[META_ID(NFMARK)] = META_FUNC(int_mark),
[META_ID(TCINDEX)] = META_FUNC(int_tcindex),
+ [META_ID(TCRECIRC)] = META_FUNC(int_tcrecirc),
[META_ID(RTCLASSID)] = META_FUNC(int_rtclassid),
[META_ID(RTIIF)] = META_FUNC(int_rtiif),
[META_ID(SK_FAMILY)] = META_FUNC(int_sk_family),
--
1.8.3.1