summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/neterion
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-06-20 11:36:54 +0200
committerClark Williams <williams@redhat.com>2012-04-04 09:14:27 -0500
commit99f427994c966cba231b8ec5d1f7bf16754aa832 (patch)
tree0f331050467baf073d90b4dd85dbfda2f5d8bc8a /drivers/net/ethernet/neterion
parent99e13d49984ba61429e96cffc1e9b6ca6db7cf44 (diff)
drivers/net: fix livelock issues
Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro optimization. The reason is that the softirq thread is rescheduling itself on that return value. Depending on priorities it starts to monoplize the CPU and livelock on UP systems. Remove it. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/net/ethernet/neterion')
-rw-r--r--drivers/net/ethernet/neterion/s2io.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index c27fb3dda9f4..462427825cdd 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -4090,12 +4090,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev)
[skb->priority & (MAX_TX_FIFOS - 1)];
fifo = &mac_control->fifos[queue];
- if (do_spin_lock)
- spin_lock_irqsave(&fifo->tx_lock, flags);
- else {
- if (unlikely(!spin_trylock_irqsave(&fifo->tx_lock, flags)))
- return NETDEV_TX_LOCKED;
- }
+ spin_lock_irqsave(&fifo->tx_lock, flags);
if (sp->config.multiq) {
if (__netif_subqueue_stopped(dev, fifo->fifo_no)) {