wil6210: fix random failure to bring network interface up
authorLior David <liord@codeaurora.org>
Sun, 21 Jan 2018 09:14:41 +0000 (11:14 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 25 Jan 2018 05:32:23 +0000 (07:32 +0200)
commit70bcc658c0b13d9e89033e1981daf0f431f39522
tree8614a39e73bab6381a2a212fcbe732f5e7bc9a3c
parentb8e13b87b15d2dde8c61ad7de5626d07a9d4da01
wil6210: fix random failure to bring network interface up

Currently when we want to bring the interface up, we first
reset the device which causes the boot loader to run. Then
we halt the device CPU, load FW image and resume the device
CPU.
There are some boot loader versions which perform redundant
memory accesses even when idle. Halting the device CPU
while boot loader access memory can cause the device memory
controller to get stuck, the FW will fail to load and the
network interface will not come up.
For such boot loaders implement a workaround where we freeze
the boot loader before halting the device CPU, so it will not
perform any memory accesses.

Signed-off-by: Lior David <liord@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wil6210/boot_loader.h
drivers/net/wireless/ath/wil6210/main.c
drivers/net/wireless/ath/wil6210/pcie_bus.c
drivers/net/wireless/ath/wil6210/wil6210.h
drivers/net/wireless/ath/wil6210/wmi.c