diff options
author | 2015-12-08 17:10:02 +0000 | |
---|---|---|
committer | 2015-12-08 17:10:02 +0000 | |
commit | 9b167141195d2d23e6793b7e8fd3c190a78b84d1 (patch) | |
tree | deb01cfae384c520bb521dbf36f034bc5e0bf46e /sys/dev/pv/files.pv | |
parent | sync (diff) | |
download | wireguard-openbsd-9b167141195d2d23e6793b7e8fd3c190a78b84d1.tar.xz wireguard-openbsd-9b167141195d2d23e6793b7e8fd3c190a78b84d1.zip |
When iwm(4) moves to AUTH state it asks the firmware for a "time event" to
prevent it from moving off-channel during association. The firmware issues
interrupts at beginning and end of the time event. The driver tried detecting
the beginning with a tsleep() in the newstate task followed by a wakeup()
from the interrupt handler. However, sometimes the newstate task did not get
scheduled until the time event had already passed, and association was aborted.
In rare cases the newstate task would even sleep forever and the iwm(4)
interface would stop working until reboot.
Fix these issues by issuing the time event and continuing association without
checking for a "go" from the firmware. Our kernel does not provide the
scheduling guarantees required for such precise synchronization so
association is more likely to fail with the additional check than without.
ok mpi@ tedu@
Diffstat (limited to 'sys/dev/pv/files.pv')
0 files changed, 0 insertions, 0 deletions