Browse Source

[PATCH] sky2: quiet ring full message in case of race

Don't print ring full message if we lose race.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Stephen Hemminger 19 years ago
parent
commit
8c463ef792
1 changed files with 8 additions and 3 deletions
  1. 8 3
      drivers/net/sky2.c

+ 8 - 3
drivers/net/sky2.c

@@ -1081,11 +1081,16 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
 		return NETDEV_TX_LOCKED;
 		return NETDEV_TX_LOCKED;
 
 
 	if (unlikely(tx_avail(sky2) < tx_le_req(skb))) {
 	if (unlikely(tx_avail(sky2) < tx_le_req(skb))) {
-		netif_stop_queue(dev);
+		/* There is a known but harmless race with lockless tx
+		 * and netif_stop_queue.
+		 */
+		if (!netif_queue_stopped(dev)) {
+			netif_stop_queue(dev);
+			printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
+			       dev->name);
+		}
 		spin_unlock(&sky2->tx_lock);
 		spin_unlock(&sky2->tx_lock);
 
 
-		printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
-		       dev->name);
 		return NETDEV_TX_BUSY;
 		return NETDEV_TX_BUSY;
 	}
 	}