In iwm(4), send PHY DB commands as async commands.
authorstsp <stsp@openbsd.org>
Mon, 20 Jun 2016 11:54:36 +0000 (11:54 +0000)
committerstsp <stsp@openbsd.org>
Mon, 20 Jun 2016 11:54:36 +0000 (11:54 +0000)
commit5acc40ad03d31a9a37f3e82db812756905d7cb1e
tree1f49d66a64ecfb9f5fbdad7685779ec90b3b8a15
parent07d4ac9059a5437ab7f72eeb562972612f5f672c
In iwm(4), send PHY DB commands as async commands.

This means we won't sleep and wait for the firmware to send an interrupt
when it's done processing the command. For unknown reasons, sometimes the
firmware never wakes the driver after a phy db command so the driver gives
up partway through the hardware init sequence.

We already have a DELAY in place after each phy db command we send to give
the firmware some time for processing, so skipping the sleep is not expected
to cause problems. If it does, we'll have to revisit this change.
For now, this change makes iwm(4) work better in bsd.rd.

Problem reported by Remi Locherer on bugs@, and confirmed by kettenis@.
Lots of help with testing and ok tb@
sys/dev/pci/if_iwm.c