From: Stephen Hemminger <shemminger@linux-foundation.org>
Date: Wed, 3 Feb 2010 08:31:12 +0000 (+0000)
Subject: sky2: Flow control frames recorded as dropped packets
X-Git-Tag: v2.6.34-rc1~233^2~422
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=90c30335a70e96b8b8493b7deb15e6b30e6d9fce;p=users%2Fdwmw2%2Flinux.git

sky2: Flow control frames recorded as dropped packets

Thanks for your patch.  A more general solution would be to move the
rx_dropped up into sky2_receive.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 72c92495a9b3e..744362272e2d2 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -2404,6 +2404,9 @@ okay:
 		skb = receive_copy(sky2, re, length);
 	else
 		skb = receive_new(sky2, re, length);
+
+	dev->stats.rx_dropped += (skb == NULL);
+
 resubmit:
 	sky2_rx_submit(sky2, re);
 
@@ -2515,11 +2518,10 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx)
 		case OP_RXSTAT:
 			total_packets[port]++;
 			total_bytes[port] += length;
+
 			skb = sky2_receive(dev, length, status);
-			if (unlikely(!skb)) {
-				dev->stats.rx_dropped++;
+			if (!skb)
 				break;
-			}
 
 			/* This chip reports checksum status differently */
 			if (hw->flags & SKY2_HW_NEW_LE) {