flow_dissector: change port array into src, dst tuple
authorJiri Pirko <jiri@resnulli.us>
Tue, 12 May 2015 12:56:20 +0000 (14:56 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 May 2015 19:19:47 +0000 (15:19 -0400)
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cisco/enic/enic_clsf.c
drivers/net/ethernet/cisco/enic/enic_ethtool.c
include/net/flow_dissector.h
include/net/ip.h
include/net/ipv6.h
net/core/flow_dissector.c
net/sched/cls_flow.c

index d3d25c7e5b96ff802f26d01f157143124449f852..6739ebc08c473f7ac635446b2d1d946f145cc20c 100644 (file)
@@ -35,8 +35,8 @@ int enic_addfltr_5t(struct enic *enic, struct flow_keys *keys, u16 rq)
        data.type = FILTER_IPV4_5TUPLE;
        data.u.ipv4.src_addr = ntohl(keys->addrs.src);
        data.u.ipv4.dst_addr = ntohl(keys->addrs.dst);
-       data.u.ipv4.src_port = ntohs(keys->ports.port16[0]);
-       data.u.ipv4.dst_port = ntohs(keys->ports.port16[1]);
+       data.u.ipv4.src_port = ntohs(keys->ports.src);
+       data.u.ipv4.dst_port = ntohs(keys->ports.dst);
        data.u.ipv4.flags = FILTER_FIELDS_IPV4_5TUPLE;
 
        spin_lock_bh(&enic->devcmd_lock);
index 7588f8dcc890e2c76e476333ca22dbff5d5b6e04..117c0968dd0b4520e42286acce4e67550b2fb745 100644 (file)
@@ -352,10 +352,10 @@ static int enic_grxclsrule(struct enic *enic, struct ethtool_rxnfc *cmd)
        fsp->h_u.tcp_ip4_spec.ip4dst = n->keys.addrs.dst;
        fsp->m_u.tcp_ip4_spec.ip4dst = (__u32)~0;
 
-       fsp->h_u.tcp_ip4_spec.psrc = n->keys.ports.port16[0];
+       fsp->h_u.tcp_ip4_spec.psrc = n->keys.ports.src;
        fsp->m_u.tcp_ip4_spec.psrc = (__u16)~0;
 
-       fsp->h_u.tcp_ip4_spec.pdst = n->keys.ports.port16[1];
+       fsp->h_u.tcp_ip4_spec.pdst = n->keys.ports.dst;
        fsp->m_u.tcp_ip4_spec.pdst = (__u16)~0;
 
        fsp->ring_cookie = n->rq_id;
index 5eac9870689c3bdfa51f8b69c1aef030e7223021..bac9c1421f580a12d313ac1fdbb98d7e96a05d85 100644 (file)
@@ -34,13 +34,16 @@ struct flow_dissector_key_addrs {
 /**
  * flow_dissector_key_tp_ports:
  *     @ports: port numbers of Transport header
- *             port16[0]: src port number
- *             port16[1]: dst port number
+ *             src: source port number
+ *             dst: destination port number
  */
 struct flow_dissector_key_ports {
        union {
                __be32 ports;
-               __be16 port16[2];
+               struct {
+                       __be16 src;
+                       __be16 dst;
+               };
        };
 };
 
index b0443d4fe13f5dbe02aa330969a31b16f1859d26..0ed6d768e606e3e1b28866e5347a3963086a050b 100644 (file)
@@ -362,8 +362,8 @@ static inline void inet_set_txhash(struct sock *sk)
 
        keys.addrs.src = inet->inet_saddr;
        keys.addrs.dst = inet->inet_daddr;
-       keys.ports.port16[0] = inet->inet_sport;
-       keys.ports.port16[1] = inet->inet_dport;
+       keys.ports.src = inet->inet_sport;
+       keys.ports.dst = inet->inet_dport;
 
        sk->sk_txhash = flow_hash_from_keys(&keys);
 }
index 9eed9761dfce9b391819b6c0eed786d3a3294587..aab8190d16e8f33197a53e18be4783a2824700c5 100644 (file)
@@ -700,8 +700,8 @@ static inline void ip6_set_txhash(struct sock *sk)
 
        keys.addrs.src = (__force __be32)ipv6_addr_hash(&np->saddr);
        keys.addrs.dst = (__force __be32)ipv6_addr_hash(&sk->sk_v6_daddr);
-       keys.ports.port16[0] = inet->inet_sport;
-       keys.ports.port16[1] = inet->inet_dport;
+       keys.ports.src = inet->inet_sport;
+       keys.ports.dst = inet->inet_dport;
 
        sk->sk_txhash = flow_hash_from_keys(&keys);
 }
index 7a0b391114a51a0427fa27a52af010e19e1002a5..204d09c425106ecc14e2ec0ad35e0eac65f55d1b 100644 (file)
@@ -385,9 +385,9 @@ static inline u32 __flow_hash_from_keys(struct flow_keys *keys, u32 keyval)
        /* get a consistent hash (same value on both flow directions) */
        if (((__force u32)keys->addrs.dst < (__force u32)keys->addrs.src) ||
            (((__force u32)keys->addrs.dst == (__force u32)keys->addrs.src) &&
-            ((__force u16)keys->ports.port16[1] < (__force u16)keys->ports.port16[0]))) {
+            ((__force u16)keys->ports.dst < (__force u16)keys->ports.src))) {
                swap(keys->addrs.dst, keys->addrs.src);
-               swap(keys->ports.port16[0], keys->ports.port16[1]);
+               swap(keys->ports.src, keys->ports.dst);
        }
 
        hash = __flow_hash_3words((__force u32)keys->addrs.dst,
index 4b3e3e30bf4dba36210706a5d79b9e710c403610..b4359924846c13ca3a99fd06f19bd8d48e7f8819 100644 (file)
@@ -88,7 +88,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 +96,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);
 }