diff options
author | Stefan Sperling <stsp@cvs.openbsd.org> | 2012-07-13 11:25:05 +0000 |
---|---|---|
committer | Stefan Sperling <stsp@cvs.openbsd.org> | 2012-07-13 11:25:05 +0000 |
commit | b3959feb902204ecbc1e8fc0d53138d21c8d4f33 (patch) | |
tree | d7f622e4246a6c46f95b5c3e5653ddfb3ffafbc0 /sys/dev/wscons/wsemul_vt100var.h | |
parent | c39ab8589f2d6913986511d0c2a7bea296b5d37d (diff) |
Fix wireless scanning on slow systems with a high RX rate and interface
in debug mode.
If the interface is in debug mode ieee80211_input() will print messages
about received frames to the console. On slow systems, printf() calls can
take so long that the next RX interrupt will be serviced immediately, if
the RX rate is sufficiently high. This effectively locks the system at IPL_NET.
If a concurrent scan is running, the scan will never finish because it
relies on a timeout at IPL_SOFTCLOCK to hop channels every 200msec.
This timeout never runs in the above situation, leaving the wireless
interface in 'scan' state forever.
To give the timeout a chance to run, perform the printf() call from a
work queue (idea from guenther@). This allows edd's slow soekris AP to
recover from 'ifconfig ral0 debug down up' in noisy RF environments.
With input from guenther, kettenis, blambert and deraadt.
ok deraadt
Diffstat (limited to 'sys/dev/wscons/wsemul_vt100var.h')
0 files changed, 0 insertions, 0 deletions