diff options
author | Mark Huth <mhuth@mvista.com> | 2007-03-06 11:57:26 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-04-26 02:22:41 -0400 |
commit | f50393fe869ba457cd75569c74c0f9bd2e7f7a0f (patch) | |
tree | 3a34c6206c138d27b5188cfdc238a33d0f4119d8 /drivers/net/e1000/e1000_main.c | |
parent | 31d76442f719af834718cbf5bf866370acc36093 (diff) |
e1000: FIX: Stop raw interrupts disabled nag from RT
Current e1000_xmit_frame spews raw interrupt disabled nag messages when
used with RT kernel patches. This patch uses spin_trylock_irqsave,
which allows RT patches to properly manage the irq semantics.
Signed-off-by: Mark Huth <mhuth@mvista.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/e1000/e1000_main.c')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index dd66f8816b2f..eb3ff1ff746e 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -3378,12 +3378,9 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
3378 | (adapter->hw.mac_type == e1000_82573)) | 3378 | (adapter->hw.mac_type == e1000_82573)) |
3379 | e1000_transfer_dhcp_info(adapter, skb); | 3379 | e1000_transfer_dhcp_info(adapter, skb); |
3380 | 3380 | ||
3381 | local_irq_save(flags); | 3381 | if (!spin_trylock_irqsave(&tx_ring->tx_lock, flags)) |
3382 | if (!spin_trylock(&tx_ring->tx_lock)) { | ||
3383 | /* Collision - tell upper layer to requeue */ | 3382 | /* Collision - tell upper layer to requeue */ |
3384 | local_irq_restore(flags); | ||
3385 | return NETDEV_TX_LOCKED; | 3383 | return NETDEV_TX_LOCKED; |
3386 | } | ||
3387 | 3384 | ||
3388 | /* need: count + 2 desc gap to keep tail from touching | 3385 | /* need: count + 2 desc gap to keep tail from touching |
3389 | * head, otherwise try next time */ | 3386 | * head, otherwise try next time */ |