lkml.org 
[lkml]   [2008]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Improvev netconsole support for RTL8139 NIC driver
yshi wrote:
> 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

This is bogus -- you should never need to slow down the hot path in such
a way.

Add a local_irq_save()/restore() to rtl8139_poll_controller() or a
similar solution, putting the burden on the netpoll/netconsole layer.

Jeff





\
 
 \ /
  Last update: 2008-03-26 03:25    [W:0.089 / U:0.352 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site