Commit:     62bc060b8ed5fcdafd87da5ab17bdd59a39ebcc9
Parent:     3ce54450461bad18bbe1f9f5aa3ecd2f8e8d1235
Author:     Mattias Nissler <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 12 15:03:12 2007 +0100
Committer:  John W. Linville <[EMAIL PROTECTED]>
CommitDate: Thu Jan 10 16:18:24 2008 -0500

    rt2x00: Allow rt61 to catch up after a missing tx report
    Sometimes it happens in the tx path that an entry given to the hardware 
    reported in the txdone handler. This ultimately led to the dreaded "non-free
    entry in the non-full queue" message and the stopping of the tx queue. Work
    around this issue by allowing the driver to also clear out previos entries 
    the txdone handler.
    Signed-off-by: Mattias Nissler <[EMAIL PROTECTED]>
    Signed-off-by: Ivo van Doorn <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
 drivers/net/wireless/rt2x00/rt61pci.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt61pci.c 
index 01dbef1..ecae968 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -1738,6 +1738,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
        struct data_ring *ring;
        struct data_entry *entry;
+       struct data_entry *entry_done;
        struct data_desc *txd;
        u32 word;
        u32 reg;
@@ -1791,6 +1792,17 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
                    !rt2x00_get_field32(word, TXD_W0_VALID))
+               entry_done = rt2x00_get_data_entry_done(ring);
+               while (entry != entry_done) {
+                       /* Catch up. Just report any entries we missed as
+                        * failed. */
+                       WARNING(rt2x00dev,
+                               "TX status report missed for entry %p\n",
+                               entry_done);
+                       rt2x00lib_txdone(entry_done, TX_FAIL_OTHER, 0);
+                       entry_done = rt2x00_get_data_entry_done(ring);
+               }
                 * Obtain the status about this packet.
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to