Commit dfdfe4be authored by Johannes Berg's avatar Johannes Berg

wifi: iwlwifi: remove retry loops in start

There's either the pldr_sync case, in which case we didn't want
or do the retry loops anyway, or things will just continue to
fail. Remove the retry loop that was added in a previous attempt
to address the issue that was later (though still a bit broken)
addressed by the pldr_sync case.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Reviewed-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240123200528.f80a88a18799.I48f21eda090f4cc675f40e99eef69a986d21b500@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent de0c2cdc
...@@ -1423,35 +1423,25 @@ _iwl_op_mode_start(struct iwl_drv *drv, struct iwlwifi_opmode_table *op) ...@@ -1423,35 +1423,25 @@ _iwl_op_mode_start(struct iwl_drv *drv, struct iwlwifi_opmode_table *op)
const struct iwl_op_mode_ops *ops = op->ops; const struct iwl_op_mode_ops *ops = op->ops;
struct dentry *dbgfs_dir = NULL; struct dentry *dbgfs_dir = NULL;
struct iwl_op_mode *op_mode = NULL; struct iwl_op_mode *op_mode = NULL;
int retry, max_retry = !!iwlwifi_mod_params.fw_restart * IWL_MAX_INIT_RETRY;
/* also protects start/stop from racing against each other */ /* also protects start/stop from racing against each other */
lockdep_assert_held(&iwlwifi_opmode_table_mtx); lockdep_assert_held(&iwlwifi_opmode_table_mtx);
for (retry = 0; retry <= max_retry; retry++) {
#ifdef CONFIG_IWLWIFI_DEBUGFS #ifdef CONFIG_IWLWIFI_DEBUGFS
drv->dbgfs_op_mode = debugfs_create_dir(op->name, drv->dbgfs_op_mode = debugfs_create_dir(op->name,
drv->dbgfs_drv); drv->dbgfs_drv);
dbgfs_dir = drv->dbgfs_op_mode; dbgfs_dir = drv->dbgfs_op_mode;
#endif #endif
op_mode = ops->start(drv->trans, drv->trans->cfg, op_mode = ops->start(drv->trans, drv->trans->cfg,
&drv->fw, dbgfs_dir); &drv->fw, dbgfs_dir);
if (op_mode)
if (op_mode) return op_mode;
return op_mode;
if (test_bit(STATUS_TRANS_DEAD, &drv->trans->status))
break;
IWL_ERR(drv, "retry init count %d\n", retry);
#ifdef CONFIG_IWLWIFI_DEBUGFS #ifdef CONFIG_IWLWIFI_DEBUGFS
debugfs_remove_recursive(drv->dbgfs_op_mode); debugfs_remove_recursive(drv->dbgfs_op_mode);
drv->dbgfs_op_mode = NULL; drv->dbgfs_op_mode = NULL;
#endif #endif
}
return NULL; return NULL;
} }
......
...@@ -98,9 +98,6 @@ void iwl_drv_stop(struct iwl_drv *drv); ...@@ -98,9 +98,6 @@ void iwl_drv_stop(struct iwl_drv *drv);
#define VISIBLE_IF_IWLWIFI_KUNIT static #define VISIBLE_IF_IWLWIFI_KUNIT static
#endif #endif
/* max retry for init flow */
#define IWL_MAX_INIT_RETRY 2
#define FW_NAME_PRE_BUFSIZE 64 #define FW_NAME_PRE_BUFSIZE 64
struct iwl_trans; struct iwl_trans;
const char *iwl_drv_get_fwname_pre(struct iwl_trans *trans, char *buf); const char *iwl_drv_get_fwname_pre(struct iwl_trans *trans, char *buf);
......
...@@ -1195,14 +1195,12 @@ int iwl_mvm_mac_start(struct ieee80211_hw *hw) ...@@ -1195,14 +1195,12 @@ int iwl_mvm_mac_start(struct ieee80211_hw *hw)
{ {
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
int ret; int ret;
int retry, max_retry = 0;
mutex_lock(&mvm->mutex); mutex_lock(&mvm->mutex);
/* we are starting the mac not in error flow, and restart is enabled */ /* we are starting the mac not in error flow, and restart is enabled */
if (!test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status) && if (!test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status) &&
iwlwifi_mod_params.fw_restart) { iwlwifi_mod_params.fw_restart) {
max_retry = IWL_MAX_INIT_RETRY;
/* /*
* This will prevent mac80211 recovery flows to trigger during * This will prevent mac80211 recovery flows to trigger during
* init failures * init failures
...@@ -1210,13 +1208,7 @@ int iwl_mvm_mac_start(struct ieee80211_hw *hw) ...@@ -1210,13 +1208,7 @@ int iwl_mvm_mac_start(struct ieee80211_hw *hw)
set_bit(IWL_MVM_STATUS_STARTING, &mvm->status); set_bit(IWL_MVM_STATUS_STARTING, &mvm->status);
} }
for (retry = 0; retry <= max_retry; retry++) { ret = __iwl_mvm_mac_start(mvm);
ret = __iwl_mvm_mac_start(mvm);
if (!ret || mvm->pldr_sync)
break;
IWL_ERR(mvm, "mac start retry %d\n", retry);
}
clear_bit(IWL_MVM_STATUS_STARTING, &mvm->status); clear_bit(IWL_MVM_STATUS_STARTING, &mvm->status);
mutex_unlock(&mvm->mutex); mutex_unlock(&mvm->mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment