diff options
author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2023-09-30 15:20:53 +0000 |
---|---|---|
committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2023-09-30 15:27:05 +0000 |
commit | dbf7691999abe501e0ebc0fe4d8d9e97718d3890 (patch) | |
tree | 4277831d8cad06cfa9bf32bea701fe67c23bf094 | |
parent | 16e688b2a403a3dbc05de3b9f8a3132838613790 (diff) | |
download | src-dbf7691999abe501e0ebc0fe4d8d9e97718d3890.tar.gz src-dbf7691999abe501e0ebc0fe4d8d9e97718d3890.zip |
LinuxKPI: 802.11: improve lkpi_ic_vap_delete()
Changing the order of cleanup in lkpi_ic_vap_delete() will avoid
firmware crashes or a direct panic as observed as ieee80211_vap_detach()
will do most cleanup for us and get us into the correct state.
The solution is not fully developed yet and one may not be able
to create a new vap (lkpi_ic_vap_create may fail with error 17)
afterwards. It is supposed to be a step towards more stability
for now.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
PR: 269842
-rw-r--r-- | sys/compat/linuxkpi/common/src/linux_80211.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 229c73732ee4..7565f491606b 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -2473,10 +2473,14 @@ lkpi_ic_vap_delete(struct ieee80211vap *vap) LKPI_80211_LHW_LVIF_LOCK(lhw); TAILQ_REMOVE(&lhw->lvif_head, lvif, lvif_entry); LKPI_80211_LHW_LVIF_UNLOCK(lhw); - lkpi_80211_mo_remove_interface(hw, vif); ieee80211_ratectl_deinit(vap); ieee80211_vap_detach(vap); + + IMPROVE("clear up other bits in this state"); + + lkpi_80211_mo_remove_interface(hw, vif); + mtx_destroy(&lvif->mtx); free(lvif, M_80211_VAP); } |