Always set the link state DOWN once we enter ieee80211_newstate(), regardless
authorstsp <stsp@openbsd.org>
Tue, 30 May 2017 10:50:33 +0000 (10:50 +0000)
committerstsp <stsp@openbsd.org>
Tue, 30 May 2017 10:50:33 +0000 (10:50 +0000)
commit11ca2ea4839c0d7213de00ac3de2f892baa46099
treefce3b8da4b6dcc03b85b503f95a38b57fcd705e4
parentd2252e96c6bc6ed23c6d3a732d3c2c5a8b2306b7
Always set the link state DOWN once we enter ieee80211_newstate(), regardless
of whether the wifi interface happens to be leaving RUN state. The interface
is never usable during state transitions so setting the link DOWN is the only
reasonable option when any transition is triggered.

Fixes a problem where, at boot time, the link state of wifi interfaces was
reported to userland as UNKNOWN (which, curiously, has value 0). dhclient's
link detection logic was recently changed from ifmedia to getifaddrs which
exposed the UNKOWN link state. Since dhclient assumes an UNKNOWN link state
means UP it would start trying to negotiate a lease too early during boot.

Problem reported by tb@
ok krw@
sys/net80211/ieee80211_proto.c