We already extract the TCP flags for the key, might as well use that for stats.
Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> --- datapath/flow.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/datapath/flow.c b/datapath/flow.c index 6ed5250..3a6d424 100644 --- a/datapath/flow.c +++ b/datapath/flow.c @@ -65,17 +65,16 @@ u64 ovs_flow_used_time(unsigned long flow_jiffies) void ovs_flow_stats_update(struct sw_flow *flow, struct sk_buff *skb) { struct flow_stats *stats; - __be16 tcp_flags = 0; + __be16 tcp_flags; #if MAX_NUMNODES > 1 int node; #endif - if ((flow->key.eth.type == htons(ETH_P_IP) || - flow->key.eth.type == htons(ETH_P_IPV6)) && - flow->key.ip.frag != OVS_FRAG_TYPE_LATER && - flow->key.ip.proto == IPPROTO_TCP && - likely(skb->len >= skb_transport_offset(skb) + sizeof(struct tcphdr))) { - tcp_flags = TCP_FLAGS_BE16(tcp_hdr(skb)); - } + + tcp_flags = likely(flow->key.ip.proto == IPPROTO_TCP) + ? (likely(flow->key.eth.type == htons(ETH_P_IP)) + ? flow->key.ipv4.tp.flags + : flow->key.ipv6.tp.flags) + : 0; #if !(MAX_NUMNODES > 1) stats = flow->stats[0]; -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev