linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] 8139cp: set intr mask after its handler is registered
@ 2012-04-12  8:10 Jason Wang
  2012-04-12 13:45 ` Flavio Leitner
  0 siblings, 1 reply; 3+ messages in thread
From: Jason Wang @ 2012-04-12  8:10 UTC (permalink / raw)
  To: netdev, davem, linux-kernel

We set intr mask before its handler is registered, this does not work well when
8139cp is sharing irq line with other devices. As the irq could be enabled by
the device before 8139cp's hander is registered which may lead unhandled
irq. Fix this by introducing an helper cp_irq_enable() and call it after
request_irq().

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 drivers/net/ethernet/realtek/8139cp.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
index abc7907..b3287c0 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -958,6 +958,11 @@ static inline void cp_start_hw (struct cp_private *cp)
 	cpw8(Cmd, RxOn | TxOn);
 }
 
+static void cp_enable_irq(struct cp_private *cp)
+{
+	cpw16_f(IntrMask, cp_intr_mask);
+}
+
 static void cp_init_hw (struct cp_private *cp)
 {
 	struct net_device *dev = cp->dev;
@@ -997,8 +1002,6 @@ static void cp_init_hw (struct cp_private *cp)
 
 	cpw16(MultiIntr, 0);
 
-	cpw16_f(IntrMask, cp_intr_mask);
-
 	cpw8_f(Cfg9346, Cfg9346_Lock);
 }
 
@@ -1130,6 +1133,8 @@ static int cp_open (struct net_device *dev)
 	if (rc)
 		goto err_out_hw;
 
+	cp_enable_irq(cp);
+
 	netif_carrier_off(dev);
 	mii_check_media(&cp->mii_if, netif_msg_link(cp), true);
 	netif_start_queue(dev);
@@ -2031,6 +2036,7 @@ static int cp_resume (struct pci_dev *pdev)
 	/* FIXME: sh*t may happen if the Rx ring buffer is depleted */
 	cp_init_rings_index (cp);
 	cp_init_hw (cp);
+	cp_enable_irq(cp);
 	netif_start_queue (dev);
 
 	spin_lock_irqsave (&cp->lock, flags);


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] 8139cp: set intr mask after its handler is registered
  2012-04-12  8:10 [PATCH] 8139cp: set intr mask after its handler is registered Jason Wang
@ 2012-04-12 13:45 ` Flavio Leitner
  2012-04-13 17:42   ` David Miller
  0 siblings, 1 reply; 3+ messages in thread
From: Flavio Leitner @ 2012-04-12 13:45 UTC (permalink / raw)
  To: Jason Wang; +Cc: netdev, davem, linux-kernel

On Thu, 12 Apr 2012 16:10:54 +0800
Jason Wang <jasowang@redhat.com> wrote:

> We set intr mask before its handler is registered, this does not work well when
> 8139cp is sharing irq line with other devices. As the irq could be enabled by
> the device before 8139cp's hander is registered which may lead unhandled
> irq. Fix this by introducing an helper cp_irq_enable() and call it after
> request_irq().
> 
> Signed-off-by: Jason Wang <jasowang@redhat.com>

Reviewed-by: Flavio Leitner <fbl@redhat.com>

fbl

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] 8139cp: set intr mask after its handler is registered
  2012-04-12 13:45 ` Flavio Leitner
@ 2012-04-13 17:42   ` David Miller
  0 siblings, 0 replies; 3+ messages in thread
From: David Miller @ 2012-04-13 17:42 UTC (permalink / raw)
  To: fbl; +Cc: jasowang, netdev, linux-kernel

From: Flavio Leitner <fbl@redhat.com>
Date: Thu, 12 Apr 2012 10:45:29 -0300

> On Thu, 12 Apr 2012 16:10:54 +0800
> Jason Wang <jasowang@redhat.com> wrote:
> 
>> We set intr mask before its handler is registered, this does not work well when
>> 8139cp is sharing irq line with other devices. As the irq could be enabled by
>> the device before 8139cp's hander is registered which may lead unhandled
>> irq. Fix this by introducing an helper cp_irq_enable() and call it after
>> request_irq().
>> 
>> Signed-off-by: Jason Wang <jasowang@redhat.com>
> 
> Reviewed-by: Flavio Leitner <fbl@redhat.com>

Applied, and queued up for -stable, thanks.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-04-13 17:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-12  8:10 [PATCH] 8139cp: set intr mask after its handler is registered Jason Wang
2012-04-12 13:45 ` Flavio Leitner
2012-04-13 17:42   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).