summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/tehuti
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-06-20 09:36:54 (GMT)
committerScott Wood <scottwood@freescale.com>2013-04-04 22:09:15 (GMT)
commitd135abb1f167eda99cc27d57583ba7c440e2ad02 (patch)
treecbce1d00e9c06c1569323f9e36c4f2313694ea9e /drivers/net/ethernet/tehuti
parente496e6ab6d027163f4948ab062bce951e2f589c1 (diff)
downloadlinux-fsl-qoriq-d135abb1f167eda99cc27d57583ba7c440e2ad02.tar.xz
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/tehuti')
-rw-r--r--drivers/net/ethernet/tehuti/tehuti.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
index 1e4d743..9dfd4f5 100644
--- a/drivers/net/ethernet/tehuti/tehuti.c
+++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -1630,13 +1630,8 @@ static netdev_tx_t bdx_tx_transmit(struct sk_buff *skb,
unsigned long flags;
ENTER;
- local_irq_save(flags);
- if (!spin_trylock(&priv->tx_lock)) {
- local_irq_restore(flags);
- DBG("%s[%s]: TX locked, returning NETDEV_TX_LOCKED\n",
- BDX_DRV_NAME, ndev->name);
- return NETDEV_TX_LOCKED;
- }
+
+ spin_lock_irqsave(&priv->tx_lock, flags);
/* build tx descriptor */
BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */