diff options
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r-- | drivers/net/sky2.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index e1733aa17790..54947ae99482 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -1081,11 +1081,16 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev) | |||
1081 | return NETDEV_TX_LOCKED; | 1081 | return NETDEV_TX_LOCKED; |
1082 | 1082 | ||
1083 | if (unlikely(tx_avail(sky2) < tx_le_req(skb))) { | 1083 | if (unlikely(tx_avail(sky2) < tx_le_req(skb))) { |
1084 | netif_stop_queue(dev); | 1084 | /* There is a known but harmless race with lockless tx |
1085 | * and netif_stop_queue. | ||
1086 | */ | ||
1087 | if (!netif_queue_stopped(dev)) { | ||
1088 | netif_stop_queue(dev); | ||
1089 | printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", | ||
1090 | dev->name); | ||
1091 | } | ||
1085 | spin_unlock(&sky2->tx_lock); | 1092 | spin_unlock(&sky2->tx_lock); |
1086 | 1093 | ||
1087 | printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", | ||
1088 | dev->name); | ||
1089 | return NETDEV_TX_BUSY; | 1094 | return NETDEV_TX_BUSY; |
1090 | } | 1095 | } |
1091 | 1096 | ||