[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1429890701-30052-15-git-send-email-jiri@resnulli.us>
Date: Fri, 24 Apr 2015 17:51:40 +0200
From: Jiri Pirko <jiri@...nulli.us>
To: netdev@...r.kernel.org
Cc: davem@...emloft.net, jhs@...atatu.com, tgraf@...g.ch,
jesse@...ira.com, kaber@...sh.net, therbert@...gle.com,
edumazet@...gle.com, alexander.h.duyck@...hat.com,
hannes@...essinduktion.org, ast@...mgrid.com, daniel@...earbox.net,
herbert@...dor.apana.org.au, cwang@...pensource.com,
john.fastabend@...il.com
Subject: [patch net-next v4 RFC 14/15] flow_dissector: change port array into src,dst tuple
Signed-off-by: Jiri Pirko <jiri@...nulli.us>
---
drivers/net/ethernet/cisco/enic/enic_clsf.c | 4 ++--
drivers/net/ethernet/cisco/enic/enic_ethtool.c | 4 ++--
include/net/flow_dissector.h | 9 ++++++---
include/net/ip.h | 4 ++--
include/net/ipv6.h | 4 ++--
net/core/flow_dissector.c | 4 ++--
net/sched/cls_flow.c | 4 ++--
7 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/cisco/enic/enic_clsf.c b/drivers/net/ethernet/cisco/enic/enic_clsf.c
index d3d25c7..6739ebc 100644
--- a/drivers/net/ethernet/cisco/enic/enic_clsf.c
+++ b/drivers/net/ethernet/cisco/enic/enic_clsf.c
@@ -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);
diff --git a/drivers/net/ethernet/cisco/enic/enic_ethtool.c b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
index 7588f8d..117c096 100644
--- a/drivers/net/ethernet/cisco/enic/enic_ethtool.c
+++ b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
@@ -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;
diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h
index 1fa625b..f7bebb4 100644
--- a/include/net/flow_dissector.h
+++ b/include/net/flow_dissector.h
@@ -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;
+ };
};
};
diff --git a/include/net/ip.h b/include/net/ip.h
index b0443d4..0ed6d76 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -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);
}
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 14cd04f..54d03a6 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -698,8 +698,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);
}
diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
index b5e260e..aa48eea 100644
--- a/net/core/flow_dissector.c
+++ b/net/core/flow_dissector.c
@@ -386,9 +386,9 @@ static inline u32 __flow_hash_from_keys(struct flow_keys *keys)
/* 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,
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c
index 4b3e3e3..b435992 100644
--- a/net/sched/cls_flow.c
+++ b/net/sched/cls_flow.c
@@ -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);
}
--
1.9.3
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists