From a925ab48dacbc9ad470a9ca4c761601ee07e476c Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 4 Jun 2018 13:20:38 -0400 Subject: [PATCH] Revert "ipv6: omit traffic class when calculating flow hash" This reverts commit 87ae68c8b4944d142447b88875c9c412c714434f. Applied the wrong version of this fix, correct version coming up. Signed-off-by: David S. Miller --- include/net/ipv6.h | 5 ----- net/core/flow_dissector.c | 2 +- net/ipv6/route.c | 4 ++-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 6dcc473fbe51..798558fd1681 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -907,11 +907,6 @@ static inline __be32 ip6_make_flowinfo(unsigned int tclass, __be32 flowlabel) return htonl(tclass << IPV6_TCLASS_SHIFT) | flowlabel; } -static inline u32 flowi6_get_flowlabel(const struct flowi6 *fl6) -{ - return (__force u32)(fl6->flowlabel & IPV6_FLOWLABEL_MASK); -} - /* * Prototypes exported by ipv6 */ diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 6497b815e7a2..4fc1e84d77ec 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -1334,7 +1334,7 @@ __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys) keys->ports.src = fl6->fl6_sport; keys->ports.dst = fl6->fl6_dport; keys->keyid.keyid = fl6->fl6_gre_key; - keys->tags.flow_label = flowi6_get_flowlabel(fl6); + keys->tags.flow_label = (__force u32)fl6->flowlabel; keys->basic.ip_proto = fl6->flowi6_proto; return flow_hash_from_keys(keys); diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 06593781b59a..22c4de2317d0 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1981,7 +1981,7 @@ static void ip6_multipath_l3_keys(const struct sk_buff *skb, } else { keys->addrs.v6addrs.src = key_iph->saddr; keys->addrs.v6addrs.dst = key_iph->daddr; - keys->tags.flow_label = ip6_flowlabel(key_iph); + keys->tags.flow_label = ip6_flowinfo(key_iph); keys->basic.ip_proto = key_iph->nexthdr; } } @@ -2002,7 +2002,7 @@ u32 rt6_multipath_hash(const struct net *net, const struct flowi6 *fl6, } else { hash_keys.addrs.v6addrs.src = fl6->saddr; hash_keys.addrs.v6addrs.dst = fl6->daddr; - hash_keys.tags.flow_label = flowi6_get_flowlabel(fl6); + hash_keys.tags.flow_label = (__force u32)fl6->flowlabel; hash_keys.basic.ip_proto = fl6->flowi6_proto; } break; -- GitLab