On Fri, Jan 2, 2015 at 3:03 PM, Ben Pfaff <b...@nicira.com> wrote: > Pravin, you already acked this on netdev. This is the crossport to > the OVS tree. I didn't know whether the netdev ack was good enough to > just push to OVS too, so to play it safe I separately posted it for > review here. >
It is good idea to post the cross port on ovs-dev, specially compat code is involved. > On Fri, Jan 02, 2015 at 02:54:50PM -0800, Ben Pfaff wrote: >> Until now, when VLAN acceleration was in use, the bytes of the VLAN header >> were not included in port or flow byte counters. They were however >> included when VLAN acceleration was not used. This commit corrects the >> inconsistency, by always including the VLAN header in byte counters. >> >> Previous discussion at >> http://openvswitch.org/pipermail/dev/2014-December/049521.html >> >> Already committed to upstream Linux netdev tree as >> 24cc59d1ebaac54d933dc0b30abcd8bd86193eef. >> >> Reported-by: Motonori Shindo <mshi...@vmware.com> >> Signed-off-by: Ben Pfaff <b...@nicira.com> >> Reviewed-by: Flavio Leitner <f...@sysclose.org> >> Acked-by: Pravin B Shelar <pshe...@nicira.com> >> --- >> datapath/flow.c | 5 +++-- >> datapath/vport.c | 2 +- >> 2 files changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/datapath/flow.c b/datapath/flow.c >> index 69b13b3..b3a59e7 100644 >> --- a/datapath/flow.c >> +++ b/datapath/flow.c >> @@ -71,6 +71,7 @@ void ovs_flow_stats_update(struct sw_flow *flow, __be16 >> tcp_flags, >> { >> struct flow_stats *stats; >> int node = numa_node_id(); >> + int len = skb->len + (vlan_tx_tag_present(skb) ? VLAN_HLEN : 0); >> >> stats = rcu_dereference(flow->stats[node]); >> >> @@ -106,7 +107,7 @@ void ovs_flow_stats_update(struct sw_flow *flow, __be16 >> tcp_flags, >> if (likely(new_stats)) { >> new_stats->used = jiffies; >> new_stats->packet_count = 1; >> - new_stats->byte_count = skb->len; >> + new_stats->byte_count = len; >> new_stats->tcp_flags = tcp_flags; >> spin_lock_init(&new_stats->lock); >> >> @@ -121,7 +122,7 @@ void ovs_flow_stats_update(struct sw_flow *flow, __be16 >> tcp_flags, >> >> stats->used = jiffies; >> stats->packet_count++; >> - stats->byte_count += skb->len; >> + stats->byte_count += len; >> stats->tcp_flags |= tcp_flags; >> unlock: >> spin_unlock(&stats->lock); >> diff --git a/datapath/vport.c b/datapath/vport.c >> index e3f495e..06560fa 100644 >> --- a/datapath/vport.c >> +++ b/datapath/vport.c >> @@ -453,7 +453,7 @@ void ovs_vport_receive(struct vport *vport, struct >> sk_buff *skb, >> stats = this_cpu_ptr(vport->percpu_stats); >> u64_stats_update_begin(&stats->syncp); >> stats->rx_packets++; >> - stats->rx_bytes += skb->len; >> + stats->rx_bytes += skb->len + (vlan_tx_tag_present(skb) ? VLAN_HLEN : >> 0); >> u64_stats_update_end(&stats->syncp); >> >> ovs_skb_init_inner_protocol(skb); >> -- >> 1.7.10.4 >> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev