From: Stanislaw Gruszka <sgruszka@redhat.com>
To: Helmut Schaa <helmut.schaa@googlemail.com>,
Amir Hedayaty <hedayaty@gmail.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
linux-wireless@vger.kernel.org, Ivo van Doorn <IvDoorn@gmail.com>,
Gertjan van Wingerde <gwingerde@gmail.com>
Subject: Re: [PATCH] rt2800pci: handle spurious interrupts
Date: Wed, 23 Nov 2011 11:51:07 +0100 [thread overview]
Message-ID: <20111123105106.GA7943@redhat.com> (raw)
In-Reply-To: <CAGXE3d-HE8MWV5Xv9e407iDn83UFvjua52mYGEJuJnQuQvnyog@mail.gmail.com>
On Wed, Nov 23, 2011 at 09:51:38AM +0100, Helmut Schaa wrote:
> Are we 100% sure that the rt2800pci device is generating the interrupts?
No, good point. There is also usb_hcd_irq() registered on that line.
I wonder if there is method to control irq routing. I don't know
about any that could allow to control assignment of individual irq's.
There are nomsi, acpi=noirq and noacpi kernel parameters which influence
irq routing, so perhaps with a bit of luck they could cause exclusively
Ralink device will be assigned to irq line>
Amir, could you configure system to assure Ralink device have
assigned exclusive (non shared) irq line. Interrupts assignment
can be seen in /proc/interrupts. If above kernel parameters do not
achieve that, you can try disabling USB in BIOS and (if possible)
changing pci slot of Ralink device.
> Just a shot in the dark but instead of masking out interrupts we don't handle
> just enable all device interrupts. Mind to try the below patch?
Amir, the best way is to test it on top of compat wireless, if you will
be unable to do this, I'll prepare fedora koji build with patch.
Thanks
Stanislaw
> ---
> diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c
> b/drivers/net/wireless/rt2x00/rt2800pci.c
> index 4dc2d0f..c0badec 100644
> --- a/drivers/net/wireless/rt2x00/rt2800pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
> @@ -437,24 +437,24 @@ static void rt2800pci_toggle_irq(struct
> rt2x00_dev *rt2x00dev,
>
> spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags);
> rt2x00pci_register_read(rt2x00dev, INT_MASK_CSR, ®);
> - rt2x00_set_field32(®, INT_MASK_CSR_RXDELAYINT, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_TXDELAYINT, 0);
> + rt2x00_set_field32(®, INT_MASK_CSR_RXDELAYINT, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_TXDELAYINT, mask);
> rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, mask);
> - rt2x00_set_field32(®, INT_MASK_CSR_AC0_DMA_DONE, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_AC1_DMA_DONE, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_AC2_DMA_DONE, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_AC3_DMA_DONE, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_HCCA_DMA_DONE, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_MGMT_DMA_DONE, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_MCU_COMMAND, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_RXTX_COHERENT, 0);
> + rt2x00_set_field32(®, INT_MASK_CSR_AC0_DMA_DONE, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_AC1_DMA_DONE, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_AC2_DMA_DONE, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_AC3_DMA_DONE, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_HCCA_DMA_DONE, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_MGMT_DMA_DONE, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_MCU_COMMAND, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_RXTX_COHERENT, mask);
> rt2x00_set_field32(®, INT_MASK_CSR_TBTT, mask);
> rt2x00_set_field32(®, INT_MASK_CSR_PRE_TBTT, mask);
> rt2x00_set_field32(®, INT_MASK_CSR_TX_FIFO_STATUS, mask);
> rt2x00_set_field32(®, INT_MASK_CSR_AUTO_WAKEUP, mask);
> - rt2x00_set_field32(®, INT_MASK_CSR_GPTIMER, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_RX_COHERENT, 0);
> - rt2x00_set_field32(®, INT_MASK_CSR_TX_COHERENT, 0);
> + rt2x00_set_field32(®, INT_MASK_CSR_GPTIMER, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_RX_COHERENT, mask);
> + rt2x00_set_field32(®, INT_MASK_CSR_TX_COHERENT, mask);
> rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg);
> spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags);
next prev parent reply other threads:[~2011-11-23 10:48 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-16 10:09 [PATCH] rt2800pci: handle spurious interrupts Stanislaw Gruszka
2011-11-16 10:14 ` Ivo Van Doorn
2011-11-16 11:17 ` Stanislaw Gruszka
2011-11-16 11:45 ` Ivo Van Doorn
2011-11-16 10:46 ` Helmut Schaa
2011-11-16 10:52 ` Ivo Van Doorn
2011-11-16 11:01 ` Helmut Schaa
2011-11-22 20:33 ` Michael Basse
2011-11-22 22:10 ` Helmut Schaa
2011-11-23 6:25 ` Michael Basse
[not found] ` <20111123073500.GA9833@redhat.com>
2011-11-23 15:50 ` Michael Basse
2011-11-22 21:49 ` John W. Linville
2011-11-23 8:05 ` Stanislaw Gruszka
2011-11-23 8:50 ` Ivo Van Doorn
2011-11-23 8:51 ` Helmut Schaa
2011-11-23 10:51 ` Stanislaw Gruszka [this message]
[not found] ` <CAHJ2optb4E2r6W2w21oswptZh=_Q9kB+RbQ=F0TWg9zHGjXwZA@mail.gmail.com>
2011-11-23 14:40 ` Stanislaw Gruszka
2011-11-23 14:45 ` Luis Correia
[not found] ` <CAN6fvj2=EhimZUy-DKtpzAKq1mpvBt03KtX9vCi0dBTCXWVsRg@mail.gmail.com>
2011-11-23 15:14 ` Stanislaw Gruszka
2011-11-23 15:44 ` Stanislaw Gruszka
2011-11-23 17:00 ` Stanislaw Gruszka
2011-11-23 20:47 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111123105106.GA7943@redhat.com \
--to=sgruszka@redhat.com \
--cc=IvDoorn@gmail.com \
--cc=gwingerde@gmail.com \
--cc=hedayaty@gmail.com \
--cc=helmut.schaa@googlemail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.