Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[firefly-linux-kernel-4.4.55.git] / net / sched / cls_flow.c
index 4b3e3e30bf4dba36210706a5d79b9e710c403610..76bc3a20ffdb31bb4c9b51942de74c64928c2a3a 100644 (file)
@@ -68,15 +68,21 @@ static inline u32 addr_fold(void *addr)
 
 static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow)
 {
-       if (flow->addrs.src)
-               return ntohl(flow->addrs.src);
+       __be32 src = flow_get_u32_src(flow);
+
+       if (src)
+               return ntohl(src);
+
        return addr_fold(skb->sk);
 }
 
 static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow)
 {
-       if (flow->addrs.dst)
-               return ntohl(flow->addrs.dst);
+       __be32 dst = flow_get_u32_dst(flow);
+
+       if (dst)
+               return ntohl(dst);
+
        return addr_fold(skb_dst(skb)) ^ (__force u16) tc_skb_protocol(skb);
 }
 
@@ -88,7 +94,7 @@ static u32 flow_get_proto(const struct sk_buff *skb, const struct flow_keys *flo
 static u32 flow_get_proto_src(const struct sk_buff *skb, const struct flow_keys *flow)
 {
        if (flow->ports.ports)
-               return ntohs(flow->ports.port16[0]);
+               return ntohs(flow->ports.src);
 
        return addr_fold(skb->sk);
 }
@@ -96,7 +102,7 @@ static u32 flow_get_proto_src(const struct sk_buff *skb, const struct flow_keys
 static u32 flow_get_proto_dst(const struct sk_buff *skb, const struct flow_keys *flow)
 {
        if (flow->ports.ports)
-               return ntohs(flow->ports.port16[1]);
+               return ntohs(flow->ports.dst);
 
        return addr_fold(skb_dst(skb)) ^ (__force u16) tc_skb_protocol(skb);
 }