[ Sasha's backport helper bot ] Hi, The upstream commit SHA1 provided is correct: 0572b7715ffd2cac20aac00333706f3094028180 Status in newer kernel trees: 6.12.y | Not found Note: The patch differs from the upstream commit: --- 1: 0572b7715ffd ! 1: b10ffc08e8ba wifi: iwlwifi: be less noisy if the NIC is dead in S3 @@ Metadata ## Commit message ## wifi: iwlwifi: be less noisy if the NIC is dead in S3 + commit 0572b7715ffd2cac20aac00333706f3094028180 upstream + If the NIC is dead upon resume, try to catch the error earlier and exit earlier. We'll print less error messages and get to the same recovery path as before: reload the firmware. @@ Commit message Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@xxxxxxxxx> Link: https://patch.msgid.link/20241028135215.3a18682261e5.I18f336a4537378a4c1a8537d7246cee1fc82b42c@changeid Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> - - ## drivers/net/wireless/intel/iwlwifi/fw/dump.c ## -@@ drivers/net/wireless/intel/iwlwifi/fw/dump.c: bool iwl_fwrt_read_err_table(struct iwl_trans *trans, u32 base, u32 *err_id) - /* cf. struct iwl_error_event_table */ - u32 valid; - __le32 err_id; -- } err_info; -+ } err_info = {}; -+ int ret; - - if (!base) - return false; - -- iwl_trans_read_mem_bytes(trans, base, -- &err_info, sizeof(err_info)); -+ ret = iwl_trans_read_mem_bytes(trans, base, -+ &err_info, sizeof(err_info)); -+ -+ if (ret) -+ return true; -+ - if (err_info.valid && err_id) - *err_id = le32_to_cpu(err_info.err_id); - + Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219597 ## drivers/net/wireless/intel/iwlwifi/iwl-trans.h ## @@ drivers/net/wireless/intel/iwlwifi/iwl-trans.h: int iwl_trans_read_config32(struct iwl_trans *trans, u32 ofs, @@ drivers/net/wireless/intel/iwlwifi/iwl-trans.h: int iwl_trans_read_config32(stru u64 src_addr, u32 byte_cnt); ## drivers/net/wireless/intel/iwlwifi/mvm/d3.c ## -@@ drivers/net/wireless/intel/iwlwifi/mvm/d3.c: static void iwl_mvm_d3_disconnect_iter(void *data, u8 *mac, - ieee80211_resume_disconnect(vif); - } +@@ drivers/net/wireless/intel/iwlwifi/mvm/d3.c: static bool iwl_mvm_rt_status(struct iwl_trans *trans, u32 base, u32 *err_id) + /* cf. struct iwl_error_event_table */ + u32 valid; + __le32 err_id; +- } err_info; ++ } err_info = {}; ++ int ret; + + if (!base) + return false; + +- iwl_trans_read_mem_bytes(trans, base, +- &err_info, sizeof(err_info)); ++ ret = iwl_trans_read_mem_bytes(trans, base, ++ &err_info, sizeof(err_info)); ++ ++ if (ret) ++ return true; ++ + if (err_info.valid && err_id) + *err_id = le32_to_cpu(err_info.err_id); -- - static bool iwl_mvm_check_rt_status(struct iwl_mvm *mvm, - struct ieee80211_vif *vif) - { @@ drivers/net/wireless/intel/iwlwifi/mvm/d3.c: int iwl_mvm_fast_resume(struct iwl_mvm *mvm) iwl_fw_dbg_read_d3_debug_data(&mvm->fwrt); --- Results of testing on various branches: | Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.12.y | Success | Success |