[rt2x00-users] rt2800usb stops at random
fmiceli at plan.ceibal.edu.uy
Tue Jul 3 23:28:12 AEST 2012
The tests were done. Everithyng is correct. Tested for 18+ hours and no
problems encountered in AP mode.
Thanks for everything. Will this be pushed to the next compat-wireless
2012/7/2 Franco Miceli <fmiceli at plan.ceibal.edu.uy>
> Great, will test it.
> 2012/7/2 Stanislaw Gruszka <sgruszka at redhat.com>
>> On Wed, Jun 27, 2012 at 03:56:45PM -0300, Franco Miceli wrote:
>> > The patch worked like a charm. The problem did not occur again.
>> > One question though, what would be the effects of a *rx queue
>> overwrite*? I
>> > mean from the users perspective.
>> Possible kernel crash.
>> I'm pasting different patch. I believe this one is the right fix for
>> the problem. Please test it (without previous patch) and let us know.
>> From e899a84a6e9bec0ce653713a48ca121cd754430c Mon Sep 17 00:00:00 2001
>> From: Stanislaw Gruszka <sgruszka at 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 at 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
>> 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))
>> - Q_INDEX_DONE,
>> + Q_INDEX_DONE,
> Ing. Franco Miceli
> CITS - Plan Ceibal - Investigación & Desarrollo
> Av. Italia 6201 - Montevideo, Uruguay
> CP: 11500
> Tel: (598 2) 601 5773 int.: 2227
Ing. Franco Miceli
CITS - Plan Ceibal - Investigación & Desarrollo
Av. Italia 6201 - Montevideo, Uruguay
Tel: (598 2) 601 5773 int.: 2227
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the users