summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-11-01 05:08:18 +0300
committerDavid S. Miller <davem@davemloft.net>2017-11-01 05:08:18 +0300
commite8a8d8672824474720f86b91e30eeec2a258bc42 (patch)
tree666a8d68c30f68fb6d6f439515194ef9c55464cc /include
parent170b8ffa71412eeacb20589b807f4bc75a61e507 (diff)
parent2f4b411a3d6766e6362ffbf00e0495a2dfe92507 (diff)
downloadlinux-e8a8d8672824474720f86b91e30eeec2a258bc42.tar.xz
Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
Jeff Kirsher says: ==================== 40GbE Intel Wired LAN Driver Updates 2017-10-31 This series contains updates to i40e, i40evf and net/sched. Arnd Bergmann cleans up the power management code to resolve a build warning. Shannon Nelson fixes i40e to only redistribute our vectors when we did not get the full count that we requested. Alex reverts a previous commit because it potentially causes a memory leak when combined with the current page recycling scheme. Amritha enables configuring cloud filters in i40e using the tc-flower classifier. The classification function of the filter is to match a packet to a traffic class. cls_flower is extended to offload classid to hardware. Hardware traffic classes are identified using classid values reserved in the range :ffe0 - :ffef. The cloud filters are added for a VSI and are cleaned up when the VSI is deleted. The filters that match on L4 ports needs enhanced admin queue functions with big buffer support for extended fields in cloud filter commands. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/net/pkt_cls.h1
-rw-r--r--include/net/sch_generic.h7
2 files changed, 8 insertions, 0 deletions
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h
index bf73e1675519..37c5ef766655 100644
--- a/include/net/pkt_cls.h
+++ b/include/net/pkt_cls.h
@@ -666,6 +666,7 @@ struct tc_cls_flower_offload {
struct fl_flow_key *mask;
struct fl_flow_key *key;
struct tcf_exts *exts;
+ u32 classid;
};
enum tc_matchall_command {
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 07c179dab478..c23e938f5b19 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -411,6 +411,13 @@ qdisc_class_find(const struct Qdisc_class_hash *hash, u32 id)
return NULL;
}
+static inline int tc_classid_to_hwtc(struct net_device *dev, u32 classid)
+{
+ u32 hwtc = TC_H_MIN(classid) - TC_H_MIN_PRIORITY;
+
+ return (hwtc < netdev_get_num_tc(dev)) ? hwtc : -EINVAL;
+}
+
int qdisc_class_hash_init(struct Qdisc_class_hash *);
void qdisc_class_hash_insert(struct Qdisc_class_hash *,
struct Qdisc_class_common *);