summaryrefslogtreecommitdiffstats
path: root/drivers/net/skge.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2005-12-07 00:01:49 +0100
committerJeff Garzik <jgarzik@pobox.com>2005-12-13 05:33:03 +0100
commitee1c81917a0c10f44c1b400482b8372e68238ff8 (patch)
tree987cfbd2134b82bea55c55fa17bd70d29df70458 /drivers/net/skge.c
parentMerge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/... (diff)
downloadlinux-ee1c81917a0c10f44c1b400482b8372e68238ff8.tar.xz
linux-ee1c81917a0c10f44c1b400482b8372e68238ff8.zip
[PATCH] skge: get rid of warning on race
Get rid of warning in case of race with ring full and lockless tx on the skge driver. It is possible to be in the transmit routine with no available slots and already stopped. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/skge.c')
-rw-r--r--drivers/net/skge.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 716467879b9c..8b6e2a11e28d 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2280,11 +2280,13 @@ static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev)
}
if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) {
- netif_stop_queue(dev);
- spin_unlock_irqrestore(&skge->tx_lock, flags);
+ if (!netif_stopped(dev)) {
+ netif_stop_queue(dev);
- printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
- dev->name);
+ printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
+ dev->name);
+ }
+ spin_unlock_irqrestore(&skge->tx_lock, flags);
return NETDEV_TX_BUSY;
}