Messages in this thread Patch in this message | | | Date | Wed, 26 Mar 2008 10:12:37 +0800 | From | yshi <> | Subject | [PATCH] Improvev netconsole support for RTL8139 NIC driver |
| |
In current RTL8139 NIC driver, spin_lock()/spin_unlock() is used for irq handler. But for netconsole/netpoll, it prefers spin_lock_irqsave()/spin_unlcok_irqrestore(). So this patch fixed this problem to improve netconsole/netpoll support.
Signed-off-by: Yang Shi <yang.shi@windriver.com> --- b/drivers/net/8139too.c | 9 +++++++++ 1 file changed, 9 insertions(+) ---
--- a/drivers/net/8139too.c +++ b/drivers/net/8139too.c @@ -2136,8 +2136,13 @@ static irqreturn_t rtl8139_interrupt (in u16 status, ackstat; int link_changed = 0; /* avoid bogus "uninit" warning */ int handled = 0; +#ifdef CONFIG_NET_POLL_CONTROLLER + unsigned long flags;
+ spin_lock_irqsave (&tp->lock, flags); +#else spin_lock (&tp->lock); +#endif status = RTL_R16 (IntrStatus);
/* shared irq? */ @@ -2185,7 +2190,11 @@ static irqreturn_t rtl8139_interrupt (in RTL_W16 (IntrStatus, TxErr); } out: +#ifdef CONFIG_NET_POLL_CONTROLLER + spin_unlock_irqrestore (&tp->lock, flags); +#else spin_unlock (&tp->lock); +#endif
DPRINTK ("%s: exiting interrupt, intr_status=%#4.4x.\n", dev->name, RTL_R16 (IntrStatus));
| |