Linux v3.5-rc7-81-ga018540
This commit is contained in:
parent
d7721263f2
commit
d124b12e9b
@ -1,43 +0,0 @@
|
|||||||
From e899a84a6e9bec0ce653713a48ca121cd754430c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
||||||
Date: Mon, 2 Jul 2012 09:42:14 +0200
|
|
||||||
Subject: [PATCH] rt2x00usb: fix indexes ordering on RX queue kick
|
|
||||||
|
|
||||||
On rt2x00_dmastart() we increase index specified by Q_INDEX and on
|
|
||||||
rt2x00_dmadone() we increase index specified by Q_INDEX_DONE. So entries
|
|
||||||
between Q_INDEX_DONE and Q_INDEX are those we currently process in the
|
|
||||||
hardware. Entries between Q_INDEX and Q_INDEX_DONE are those we can
|
|
||||||
submit to the hardware.
|
|
||||||
|
|
||||||
According to that fix rt2x00usb_kick_queue(), as we need to submit rx
|
|
||||||
entries that are not processed by the hardware. It worked before only
|
|
||||||
for empty queue, otherwise was broken.
|
|
||||||
|
|
||||||
Note that for TX queues indexes ordering are ok. We need to kick entries
|
|
||||||
that have filled skb, but was not submitted to the hardware, i.e.
|
|
||||||
strted from Q_INDEX_DONE and have ENTRY_DATA_PENDING bit set.
|
|
||||||
|
|
||||||
From practical standpoint this patch fixes AP mode connection hangs.
|
|
||||||
|
|
||||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/rt2x00/rt2x00usb.c | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
|
|
||||||
index d357d1e..74ecc33 100644
|
|
||||||
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
|
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
|
|
||||||
@@ -436,8 +436,8 @@ void rt2x00usb_kick_queue(struct data_queue *queue)
|
|
||||||
case QID_RX:
|
|
||||||
if (!rt2x00queue_full(queue))
|
|
||||||
rt2x00queue_for_each_entry(queue,
|
|
||||||
- Q_INDEX_DONE,
|
|
||||||
Q_INDEX,
|
|
||||||
+ Q_INDEX_DONE,
|
|
||||||
NULL,
|
|
||||||
rt2x00usb_kick_rx_entry);
|
|
||||||
break;
|
|
||||||
--
|
|
||||||
1.7.1
|
|
||||||
|
|
2
sources
2
sources
@ -1,3 +1,3 @@
|
|||||||
967f72983655e2479f951195953e8480 linux-3.4.tar.xz
|
967f72983655e2479f951195953e8480 linux-3.4.tar.xz
|
||||||
495fe30172ac35fc74d87c68d9b676c5 patch-3.5-rc7.xz
|
495fe30172ac35fc74d87c68d9b676c5 patch-3.5-rc7.xz
|
||||||
8f77fa0c7759c1b79d7b997d3d6441b5 patch-3.5-rc7-git1.xz
|
14855b129c26b91e8a8ba8de2872d287 patch-3.5-rc7-git2.xz
|
||||||
|
Loading…
Reference in New Issue
Block a user