On Mon, 2024-12-23 at 09:35 -0500, Sasha Levin wrote: > [ 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: This is true. The original patch needs a cleanup patch that moves iwl_mvm_rt_status to another file and renames the function. This explains the different between both versions of the patch. I also added the link to the bugzilla that was opened after the patch was already on its way upstream. > --- > 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 |