Re: [net-next PATCH 3/7] net: sched: add cls_u32 offload hooks for netdevs
From: Amir Vadai" <hidden>
Date: 2016-02-04 13:15:59
On Wed, Feb 03, 2016 at 01:28:37AM -0800, John Fastabend wrote:
quoted hunk ↗ jump to hunk
This patch allows netdev drivers to consume cls_u32 offloads via the ndo_setup_tc ndo op. This works aligns with how network drivers have been doing qdisc offloads for mqprio. Signed-off-by: John Fastabend <redacted> --- include/linux/netdevice.h | 6 +++- include/net/pkt_cls.h | 33 ++++++++++++++++++++ net/sched/cls_u32.c | 73 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 109 insertions(+), 3 deletions(-)diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 9090ff7..861ce67 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h@@ -778,17 +778,21 @@ static inline bool netdev_phys_item_id_same(struct netdev_phys_item_id *a, typedef u16 (*select_queue_fallback_t)(struct net_device *dev, struct sk_buff *skb); -/* This structure holds attributes of qdisc and classifiers +/* These structures hold the attributes of qdisc and classifiers * that are being passed to the netdevice through the setup_tc op. */ enum { TC_SETUP_MQPRIO, + TC_SETUP_CLSU32, }; +struct tc_cls_u32_offload; + struct tc_to_netdev { unsigned int type; union { u8 tc; + struct tc_cls_u32_offload *cls_u32; }; };diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index bc49967..0bd12cd 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h@@ -358,4 +358,37 @@ tcf_match_indev(struct sk_buff *skb, int ifindex) } #endif /* CONFIG_NET_CLS_IND */ +struct tc_cls_u32_knode { + struct tcf_exts *exts; + u8 fshift; + u32 handle; + u32 val; + u32 mask; + u32 link_handle; + struct tc_u32_sel *sel; +}; + +struct tc_cls_u32_hnode { + u32 handle; + u32 prio; + unsigned int divisor; +}; + +enum { + TC_CLSU32_NEW_KNODE,
TC_CLSU32_NEW_KNODE is never used [...]