Revert "ipv6: omit traffic class when calculating flow hash"
authorDavid S. Miller <davem@davemloft.net>
Mon, 4 Jun 2018 17:20:38 +0000 (13:20 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Jun 2018 17:20:38 +0000 (13:20 -0400)
This reverts commit 87ae68c8b4944d142447b88875c9c412c714434f.

Applied the wrong version of this fix, correct version
coming up.

Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ipv6.h
net/core/flow_dissector.c
net/ipv6/route.c

index 6dcc473fbe51d65f5e04fc911f9a57a5bfb8fecd..798558fd16817f540e4e6923f5385fc193197c1e 100644 (file)
@@ -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
  */
index 6497b815e7a2704979fabcfc049a7a8e3d43dfe2..4fc1e84d77ec1d8469903463e2226fe667d4ece1 100644 (file)
@@ -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);
index 06593781b59a5e1844d937bfe2c538344d0a4a7f..22c4de2317d0694db21193a94394bddeb50dd5c9 100644 (file)
@@ -1981,7 +1981,7 @@ out:
        } 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;