It's a race condition in the scan handling. :(

When scan is cancelled (eg because something cancels it, or the state
transitions to IDLE or something because the VAP resets) then it
should be setting a flag to cancel things and the VAP should come out
of powerstate.

However, there seems to be some conditions where the scan is coming
out of that loop because it's been aborted/stopped, so it's not
complete - but then it stays in powersave mode because whatever's
supposed to either change it (eg a state change, a received becaon,
TIM coming in, etc) doesn't follow.  So it stays in power save.

The driver routines are called without the comlock held, so that's a
small, narrow window for some state change to come through that
doesn't trigger the scan code to see the scan is canceled and "finish"
the scan (which would reset the vap powersave state.)

I've added another cancel check in scan_task(). Please update this and
see what happens!




-adrian
_______________________________________________
freebsd-wireless@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-wireless
To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"

Reply via email to