[rt2x00-users] rt2800usb stops at random

Franco Miceli 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
version?

BR,

2012/7/2 Franco Miceli <fmiceli at plan.ceibal.edu.uy>

> Great, will test it.
>
> Thanks.
>
> BR,
>
> 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.
>>
>> Thanks
>> Stanislaw
>>
>> 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
>> 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
>>
>>
>
>
> --
> 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
CP: 11500
Tel: (598 2) 601 5773 int.: 2227
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rt2x00.serialmonkey.com/pipermail/users_rt2x00.serialmonkey.com/attachments/20120703/e0ee2e3c/attachment-0002.html>


More information about the users mailing list