mirror of
https://github.com/torvalds/linux.git
synced 2026-09-27 02:22:02 +02:00
wifi: iwlwifi: mld: drop connection on D3 resume failure
When FW crashes on D3 exit, iwl_mld_nic_error() sets STATUS_RESET_PENDING and queues restart wk, but mac80211's resume callback synchronously calls iwl_trans_stop_device() which clears the flag. As a result restart wk skips sw_reset, and the FW error recovery buffer is never read. The new FW boots with empty BA state and initial sequence numbers, while the AP still holds its A-MPDU RX reorder window. This causes MPDUs to be dropped as IWL_RX_MPDU_REORDER_BA_OLD_SN until ADDBA is renegotiated. We don't know how long the firmware has been in an error state or whether the AP still considers us associated, so keeping the connection alive is not worth it. Call ieee80211_resume_disconnect() when iwl_mld_wait_d3_notif() fails, and let userspace reassociate. Signed-off-by: Ayala Beker <ayala.beker@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260717172958.3e10c8498f53.Icf5644b42d79e984ecc16abfa873bd37f611e778@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
This commit is contained in:
parent
a790f60cc4
commit
4f5384b58b
|
|
@ -2219,6 +2219,9 @@ int iwl_mld_wowlan_resume(struct iwl_mld *mld)
|
|||
ret = iwl_mld_wait_d3_notif(mld, &resume_data, true);
|
||||
if (ret) {
|
||||
IWL_ERR(mld, "Couldn't get the d3 notifs %d\n", ret);
|
||||
|
||||
if (bss_vif->cfg.assoc)
|
||||
ieee80211_resume_disconnect(bss_vif);
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user