* [PATCH] rt2x00: handle spurious pci interrupts
@ 2011-11-16 12:58 Stanislaw Gruszka
2011-11-16 13:02 ` Ivo Van Doorn
0 siblings, 1 reply; 2+ messages in thread
From: Stanislaw Gruszka @ 2011-11-16 12:58 UTC (permalink / raw)
To: John W. Linville
Cc: linux-wireless, Ivo van Doorn, Gertjan van Wingerde, Helmut Schaa
We have documented case of very bad performance issue on rt2800pci
device, because it generate spurious interrupt, what cause irq line
is disabled: https://bugzilla.redhat.com/show_bug.cgi?id=658451
We already address that problem in separate patch by returning
IRQ_HANDLED from interrupt handler. We think similar fix is needed for
other rt2x00 PCI devices, because users report performance problems on
these devices too.
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/rt2x00/rt2400pci.c | 2 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 2 +-
drivers/net/wireless/rt2x00/rt61pci.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 3a6b402..676c765 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1380,7 +1380,7 @@ static irqreturn_t rt2400pci_interrupt(int irq, void *dev_instance)
rt2x00pci_register_write(rt2x00dev, CSR7, reg);
if (!reg)
- return IRQ_NONE;
+ return IRQ_HANDLED;
if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
return IRQ_HANDLED;
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index dcc0e1f..d0b627c 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1512,7 +1512,7 @@ static irqreturn_t rt2500pci_interrupt(int irq, void *dev_instance)
rt2x00pci_register_write(rt2x00dev, CSR7, reg);
if (!reg)
- return IRQ_NONE;
+ return IRQ_HANDLED;
if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
return IRQ_HANDLED;
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index bf55b4a..9d83e70 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2337,7 +2337,7 @@ static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance)
rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
if (!reg && !reg_mcu)
- return IRQ_NONE;
+ return IRQ_HANDLED;
if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
return IRQ_HANDLED;
--
1.7.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] rt2x00: handle spurious pci interrupts
2011-11-16 12:58 [PATCH] rt2x00: handle spurious pci interrupts Stanislaw Gruszka
@ 2011-11-16 13:02 ` Ivo Van Doorn
0 siblings, 0 replies; 2+ messages in thread
From: Ivo Van Doorn @ 2011-11-16 13:02 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: John W. Linville, linux-wireless, Gertjan van Wingerde,
Helmut Schaa
On Wed, Nov 16, 2011 at 1:58 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> We have documented case of very bad performance issue on rt2800pci
> device, because it generate spurious interrupt, what cause irq line
> is disabled: https://bugzilla.redhat.com/show_bug.cgi?id=658451
>
> We already address that problem in separate patch by returning
> IRQ_HANDLED from interrupt handler. We think similar fix is needed for
> other rt2x00 PCI devices, because users report performance problems on
> these devices too.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2400pci.c | 2 +-
> drivers/net/wireless/rt2x00/rt2500pci.c | 2 +-
> drivers/net/wireless/rt2x00/rt61pci.c | 2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
> index 3a6b402..676c765 100644
> --- a/drivers/net/wireless/rt2x00/rt2400pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2400pci.c
> @@ -1380,7 +1380,7 @@ static irqreturn_t rt2400pci_interrupt(int irq, void *dev_instance)
> rt2x00pci_register_write(rt2x00dev, CSR7, reg);
>
> if (!reg)
> - return IRQ_NONE;
> + return IRQ_HANDLED;
>
> if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
> return IRQ_HANDLED;
> diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
> index dcc0e1f..d0b627c 100644
> --- a/drivers/net/wireless/rt2x00/rt2500pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2500pci.c
> @@ -1512,7 +1512,7 @@ static irqreturn_t rt2500pci_interrupt(int irq, void *dev_instance)
> rt2x00pci_register_write(rt2x00dev, CSR7, reg);
>
> if (!reg)
> - return IRQ_NONE;
> + return IRQ_HANDLED;
>
> if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
> return IRQ_HANDLED;
> diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
> index bf55b4a..9d83e70 100644
> --- a/drivers/net/wireless/rt2x00/rt61pci.c
> +++ b/drivers/net/wireless/rt2x00/rt61pci.c
> @@ -2337,7 +2337,7 @@ static irqreturn_t rt61pci_interrupt(int irq, void *dev_instance)
> rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
>
> if (!reg && !reg_mcu)
> - return IRQ_NONE;
> + return IRQ_HANDLED;
>
> if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
> return IRQ_HANDLED;
> --
> 1.7.1
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-11-16 13:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-16 12:58 [PATCH] rt2x00: handle spurious pci interrupts Stanislaw Gruszka
2011-11-16 13:02 ` Ivo Van Doorn
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.