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

Reply via email to