aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMark Huth <mhuth@mvista.com>2007-03-06 11:57:26 -0500
committerJeff Garzik <jeff@garzik.org>2007-04-26 02:22:41 -0400
commitf50393fe869ba457cd75569c74c0f9bd2e7f7a0f (patch)
tree3a34c6206c138d27b5188cfdc238a33d0f4119d8 /drivers
parent31d76442f719af834718cbf5bf866370acc36093 (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')
-rw-r--r--drivers/net/e1000/e1000_main.c5
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 */