sky2: Flow control frames recorded as dropped packets
authorStephen Hemminger <shemminger@linux-foundation.org>
Wed, 3 Feb 2010 08:31:12 +0000 (08:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 Feb 2010 04:32:29 +0000 (20:32 -0800)
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>
drivers/net/sky2.c

index 72c9249..7443622 100644 (file)
@@ -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) {