From: Ivo van Doorn <ivdoorn@gmail.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
rt2x00 Users List <users@rt2x00.serialmonkey.com>,
linux-wireless@vger.kernel.org,
Gertjan van Wingerde <gwingerde@gmail.com>
Subject: [PATCH 12/14] rt2x00: Limit TX done looping to number of TX ring entries
Date: Mon, 14 Jun 2010 22:13:37 +0200 [thread overview]
Message-ID: <201006142213.38654.IvDoorn@gmail.com> (raw)
In-Reply-To: <201006142213.16315.IvDoorn@gmail.com>
From: Ivo van Doorn <IvDoorn@gmail.com>
Similar to rt2800pci, remove the check for duplicate
register reading, and instead limit the for-loop to
the maximum number of TX entries inside a queue.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
---
drivers/net/wireless/rt2x00/rt61pci.c | 23 +++++++++--------------
1 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index d127011..f7ee31e 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2052,29 +2052,24 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
struct txdone_entry_desc txdesc;
u32 word;
u32 reg;
- u32 old_reg;
int type;
int index;
+ int i;
/*
- * During each loop we will compare the freshly read
- * STA_CSR4 register value with the value read from
- * the previous loop. If the 2 values are equal then
- * we should stop processing because the chance is
- * quite big that the device has been unplugged and
- * we risk going into an endless loop.
+ * TX_STA_FIFO is a stack of X entries, hence read TX_STA_FIFO
+ * at most X times and also stop processing once the TX_STA_FIFO_VALID
+ * flag is not set anymore.
+ *
+ * The legacy drivers use X=TX_RING_SIZE but state in a comment
+ * that the TX_STA_FIFO stack has a size of 16. We stick to our
+ * tx ring size for now.
*/
- old_reg = 0;
-
- while (1) {
+ for (i = 0; i < TX_ENTRIES; i++) {
rt2x00pci_register_read(rt2x00dev, STA_CSR4, ®);
if (!rt2x00_get_field32(reg, STA_CSR4_VALID))
break;
- if (old_reg == reg)
- break;
- old_reg = reg;
-
/*
* Skip this entry when it contains an invalid
* queue identication number.
--
1.6.6.1
next prev parent reply other threads:[~2010-06-14 20:15 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-14 20:08 [PATCH 01/14] rt2x00: clarify meaning of txdone flags Ivo van Doorn
2010-06-14 20:09 ` [PATCH 02/14] rt2x00: don't use TXDONE_FALLBACK as success indicator Ivo van Doorn
2010-06-14 20:09 ` [PATCH 03/14] rt2x00: only set TXDONE_FALLBACK in rt2800pci if the frame was retried Ivo van Doorn
2010-06-14 20:10 ` [PATCH 04/14] rt2x00: Fix IEEE80211_TX_CTL_MORE_FRAMES handling Ivo van Doorn
2010-06-14 20:10 ` [PATCH 05/14] rt2x00: Add comment about BBP1_TX_POWER Ivo van Doorn
2010-06-14 20:11 ` [PATCH 06/14] rt2x00: Fix TX_STA_FIFO handling Ivo van Doorn
2010-06-14 20:11 ` [PATCH 07/14] rt2x00: Fix typo in rt2800_config_txpower Ivo van Doorn
2010-06-14 20:12 ` [PATCH 08/14] rt2x00: provide mac80211 a suitable max_rates value Ivo van Doorn
2010-06-14 20:12 ` [PATCH 09/14] rt2x00: Fix tx status reporting when falling back to the lowest rate Ivo van Doorn
2010-06-14 20:12 ` [PATCH 10/14] rt2x00: Enable fallback rates for rt61pci and rt73usb Ivo van Doorn
2010-06-14 20:13 ` [PATCH 11/14] rt2x00: Update author rt2800lib Ivo van Doorn
2010-06-14 20:13 ` Ivo van Doorn [this message]
2010-06-14 20:13 ` [PATCH 13/14] rt2x00: Enable HW crypto by default Ivo van Doorn
2010-06-14 20:14 ` [PATCH 14/14] rt2x00: Synchronize WCID initialization with legacy driver Ivo van Doorn
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=201006142213.38654.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=gwingerde@gmail.com \
--cc=helmut.schaa@googlemail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=users@rt2x00.serialmonkey.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 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).