OSDN Git Service

rtw88: handle and recover when firmware crash
authorTzu-En Huang <tehuang@realtek.com>
Fri, 25 Sep 2020 06:12:16 +0000 (14:12 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 29 Sep 2020 08:22:19 +0000 (11:22 +0300)
commit5c831644e1f4c9d49cdc174e788742569d117e16
tree39c2b77632a9561fee3afc1ecc060d2e230c84a4
parentee755732b7a16af018daa77d9562d2493fb7092f
rtw88: handle and recover when firmware crash

This handles the situation when firmware crashes.
When firmware crashes, it will send an interrupt, and driver will queue
a work for recovery.
In the work, driver will reset it's internal association state, which
includes removing associated sta's macid, resetting vifs' states
and removing keys. After resetting the driver's state, driver will call
rtw_enter_ips() to force the chipset power off to reset the chip.
Finally, driver calls ieee80211_restart_hw() to inform mac80211 stack
to restart.
Since only 8822c firmware supports this feature, the interrupt will only
be triggered when 8822c chipset is loaded.

Signed-off-by: Tzu-En Huang <tehuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200925061219.23754-3-tehuang@realtek.com
drivers/net/wireless/realtek/rtw88/fw.c
drivers/net/wireless/realtek/rtw88/fw.h
drivers/net/wireless/realtek/rtw88/mac80211.c
drivers/net/wireless/realtek/rtw88/main.c
drivers/net/wireless/realtek/rtw88/main.h
drivers/net/wireless/realtek/rtw88/pci.c
drivers/net/wireless/realtek/rtw88/reg.h
drivers/net/wireless/realtek/rtw88/util.h