My previous commit to iwn(4) broke the scan loop.
authorstsp <stsp@openbsd.org>
Sun, 25 Feb 2018 12:40:06 +0000 (12:40 +0000)
committerstsp <stsp@openbsd.org>
Sun, 25 Feb 2018 12:40:06 +0000 (12:40 +0000)
commitafe2e7dfd7922aa8f73cbfb092ccac18d3055200
treedec92dd5872cc9277f7bfb2199c27ec55617669b
parent60840c8e57494500ab15a585e250b01772d665ec
My previous commit to iwn(4) broke the scan loop.

The problem happened if we didn't find an AP to connect to after one scan
iteration. The net80211 stack then performs a SCAN -> SCAN transition to
kick off another scan, but the driver treated this transition as a no-op
and remained in SCAN state doing nothing.

To fix this, introduce a flag which keeps track of whether a firmware
scan command is in progress, and start another scan during a SCAN->SCAN
transition if no scan is in progress. Matches what iwm(4) does.
Note that previously (i.e. in 6.2), iwn(4) would always try to start
a new scan regardless of what the firmware was currently doing.

Problem noticed by myself and also by deraadt@
test & ok tb@
sys/dev/pci/if_iwn.c
sys/dev/pci/if_iwnvar.h