From 58d01ad97d120506f70809b2302044ff34eb3c7c Mon Sep 17 00:00:00 2001
From: Pravin B Shelar <pshelar@nicira.com>
Date: Tue, 8 Nov 2011 11:16:24 -0800
Subject: [PATCH] datapath: Fix vport tx_packets count.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
---
 datapath/vport.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/datapath/vport.c b/datapath/vport.c
index 6fe6042a..a6b686c8 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;
 }
 
-- 
2.30.2