Signed-off-by: Pravin B Shelar <pshe...@nicira.com>
---
 datapath/vport.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/datapath/vport.c b/datapath/vport.c
index 6fe6042..a6b686c 100644
--- a/datapath/vport.c
+++ b/datapath/vport.c
@@ -459,16 +459,18 @@ void vport_receive(struct vport *vport, struct sk_buff 
*skb)
  */
 int vport_send(struct vport *vport, struct sk_buff *skb)
 {
-       struct vport_percpu_stats *stats;
        int sent = vport->ops->send(vport, skb);
 
-       stats = per_cpu_ptr(vport->percpu_stats, smp_processor_id());
+       if (likely(sent)) {
+               struct vport_percpu_stats *stats;
 
-       write_seqcount_begin(&stats->seqlock);
-       stats->tx_packets++;
-       stats->tx_bytes += sent;
-       write_seqcount_end(&stats->seqlock);
+               stats = per_cpu_ptr(vport->percpu_stats, smp_processor_id());
 
+               write_seqcount_begin(&stats->seqlock);
+               stats->tx_packets++;
+               stats->tx_bytes += sent;
+               write_seqcount_end(&stats->seqlock);
+       }
        return sent;
 }
 
-- 
1.7.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to