[rt2x00-users] [PATCH 0/3] rt2800usb: TX_STA_FIFO read timer
Ivo Van Doorn
ivdoorn at gmail.com
Wed Jan 19 07:14:19 EST 2011
>> > I debugged this a bit because it looked like my patches did not work because
>> > of the status timeouts, but it looks like the workqueue is simply blocked
>> > by rt2x00queue_flush_queue().
>> Yeah I know, that was the rt2x00mac_flush() problem I mentioned before.
>> Because rt2x00mac_flush() & Watchdog have a problem with dependencies
>> (it depends on the RX/TX work
>> structures to run freely), the workqueue on which those structures are
>> placed must be in such
>> a way that they don't collide with eachother. This causes long delays,
>> and long times
>> before the client is associated.
>> When I comment out the flush() callbacks the association times are
>> reduced to normal,
>> but I haven't done a stresstest with that function disabled yet.
> Ah, OK, I did not understand the workqueue issue completely when you
> wrote that email. I'll try to look into it tomorrow.
Well I have been working on it, at first I thought I needed to move al
TX/RX work structures
on the kernel workqueue, and the watchdog and all other work
structures on the mac80211
workqueue. However, that didn't result in the expected behavior, so I
tried switching it around,
(TX/RX on mac80211 workqueue, the rest on the kernel workqueue), but
that didn't improve
> FWIW, doing a scan (iwlist wlan0 scan / iw dev wlan0 scan)
> also triggers the "failed to flush" warnings, so it's
> possible both of the issues from your stresstest might
> be connected to that.
Well the warning is triggered on a channel change, so it is to be expected that
it appears in both situation.
More information about the users