From: Stanislaw Gruszka <sgruszka@redhat.com>
To: Daniel Golle <daniel@makrotopia.org>
Cc: linux-wireless@vger.kernel.org,
Johannes Berg <johannes@sipsolutions.net>,
roman@advem.lv, michel.stempin@wanadoo.fr, c.mignanti@gmail.com,
evaxige@qq.com, Kalle Valo <kvalo@codeaurora.org>,
Felix Fietkau <nbd@nbd.name>, John Crispin <john@phrozen.org>,
Gabor Juhos <juhosg@openwrt.org>
Subject: Re: [PATCH v2 08/14] rt2x00: rt2800mmio: add a workaround for spurious TX_FIFO_STATUS interrupts
Date: Wed, 18 Jan 2017 16:13:24 +0100 [thread overview]
Message-ID: <20170118151324.GC22837@redhat.com> (raw)
In-Reply-To: <20170118144446.GA22837@redhat.com>
On Wed, Jan 18, 2017 at 03:44:46PM +0100, Stanislaw Gruszka wrote:
> On Mon, Jan 16, 2017 at 04:05:47AM +0100, Daniel Golle wrote:
> > irqreturn_t rt2800mmio_interrupt(int irq, void *dev_instance)
> > {
> > struct rt2x00_dev *rt2x00dev = dev_instance;
> > u32 reg, mask;
> > + u32 txstatus = 0;
> >
> > - /* Read status and ACK all interrupts */
> > + /* Read status */
> > rt2x00mmio_register_read(rt2x00dev, INT_SOURCE_CSR, ®);
> > +
> > + if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) {
> > + /* Due to unknown reason the hardware generates a
> > + * TX_FIFO_STATUS interrupt before the TX_STA_FIFO
> > + * register contain valid data. Read the TX status
> > + * here to see if we have to process the actual
> > + * request.
> > + */
> > + rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &txstatus);
> > + if (rt2800mmio_txstatus_is_spurious(rt2x00dev, txstatus)) {
> > + /* Remove the TX_FIFO_STATUS bit so it won't be
> > + * processed in this turn. The hardware will
> > + * generate another IRQ for us.
> > + */
> > + rt2x00_set_field32(®,
> > + INT_SOURCE_CSR_TX_FIFO_STATUS, 0);
> > + }
> > + }
> > +
> > + /* ACK interrupts */
> > rt2x00mmio_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
>
> I think spurious TX_STA_FIFO problem happen because we first ACK
> interrupt and then read in bulk all statuses from TX_STA_FIFO
> register, while hardware generate new interrupt (as previous
> was ACKed), then in new interrupt we have no more statues to
> read.
>
> This is inherently racy situation and first ACK interrupt and
> then read statuses is safer than reverse order which make risk we
> will have pending status and not get interrupt about that.
>
> Hence I think we should not apply this patch.
Actually patch is safe in regard that we first ACK interrupt
and then read all statuses TX_STA_FIFO. We only do not ACK
interrupt if we do not have valid status in TX_STA_FIFO .
However I don't really see point of the patch, we should get
next interrupt when new status will be places in TX_STA_FIFO
regardless we ACK this interrupt or don't and if we don't
ACK we possibly can get series of spurious interrupts.
Stanislaw
next prev parent reply other threads:[~2017-01-18 15:18 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-13 21:20 [PATCH 04/40] rt2x00: rt2800lib: fix beacon generation on RT3593 Daniel Golle
2017-01-14 17:00 ` Kalle Valo
2017-01-16 2:53 ` [PATCH v2 00/14] rt2x00 patches from OpenWrt.org Daniel Golle
2017-01-16 2:55 ` [PATCH v2 01/14] rt2x00: rt2800lib: move rt2800_drv_data declaration into rt2800lib.h Daniel Golle
2017-01-28 8:48 ` [v2, " Kalle Valo
2017-01-16 2:55 ` [PATCH v2 02/14] rt2x00: rt2800lib: introduce RT2800_HAS_HIGH_SHARED_MEM flag Daniel Golle
2017-01-16 2:58 ` [PATCH v2 03/14] rt2x00: rt2800: serialize shared memory access Daniel Golle
2017-01-16 3:01 ` [PATCH v2 04/14] rt2x00: rt2800lib: fix beacon generation on RT3593 Daniel Golle
2017-01-16 10:04 ` Stanislaw Gruszka
2017-01-16 3:02 ` [PATCH v2 05/14] rt2x00: rt2800lib: add hw_beacon_count field to struct rt2800_drv_data Daniel Golle
2017-01-16 3:03 ` [PATCH v2 06/14] rt2x00: rt2800lib: init additional beacon offset registers Daniel Golle
2017-01-16 3:03 ` [PATCH v2 07/14] rt2x00: rt2800lib: fix max supported beacon count for RT3593 Daniel Golle
2017-01-16 3:05 ` [PATCH v2 08/14] rt2x00: rt2800mmio: add a workaround for spurious TX_FIFO_STATUS interrupts Daniel Golle
2017-01-18 14:44 ` Stanislaw Gruszka
2017-01-18 15:13 ` Stanislaw Gruszka [this message]
2017-01-16 3:06 ` [PATCH v2 09/14] rt2x00: rt2x00pci: set PCI MWI only if supported Daniel Golle
2017-01-16 10:08 ` Stanislaw Gruszka
2017-01-17 1:56 ` Daniel Golle
2017-01-17 7:34 ` John Crispin
2017-01-16 3:08 ` [PATCH v2 10/14] rt2x00: rt2800lib: correctly set HT20/HT40 filter Daniel Golle
2017-01-16 10:12 ` Stanislaw Gruszka
2017-01-19 12:49 ` [v2,10/14] " Kalle Valo
2017-01-16 3:13 ` [PATCH v2 11/14] rt2x00: rt2800lib: fix rf id for RT3352 Daniel Golle
2017-01-16 10:12 ` Stanislaw Gruszka
2017-01-16 3:14 ` [PATCH v2 12/14] rt2x00: rt2800lib: support for for RT3352 with external PA Daniel Golle
2017-01-16 10:14 ` Stanislaw Gruszka
2017-01-16 3:15 ` [PATCH v2 13/14] rt2x00: rt2800lib: add support for RT3352 with 20MHz crystal Daniel Golle
2017-01-18 14:30 ` Stanislaw Gruszka
2017-01-19 13:30 ` Daniel Golle
2017-01-19 20:52 ` Daniel Golle
2017-01-19 23:42 ` [PATCH v3] " Daniel Golle
2017-01-20 13:16 ` Stanislaw Gruszka
2017-01-16 3:17 ` [PATCH v2 14/14] rt2x00: add support for RT5350 WiSoC Daniel Golle
2017-01-16 10:17 ` Stanislaw Gruszka
2017-01-17 1:48 ` Daniel Golle
2017-01-18 14:47 ` Stanislaw Gruszka
2017-01-19 13:38 ` [PATCH v3] " Daniel Golle
2017-01-19 19:08 ` Kalle Valo
2017-01-19 20:37 ` Daniel Golle
2017-01-20 2:21 ` kbuild test robot
2017-01-20 13:19 ` Stanislaw Gruszka
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=20170118151324.GC22837@redhat.com \
--to=sgruszka@redhat.com \
--cc=c.mignanti@gmail.com \
--cc=daniel@makrotopia.org \
--cc=evaxige@qq.com \
--cc=johannes@sipsolutions.net \
--cc=john@phrozen.org \
--cc=juhosg@openwrt.org \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=michel.stempin@wanadoo.fr \
--cc=nbd@nbd.name \
--cc=roman@advem.lv \
/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 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).