mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-18 19:49:40 +02:00
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: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Gregory Greenman <gregory.greenman@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://msgid.link/20240123200528.f80a88a18799.I48f21eda090f4cc675f40e99eef69a986d21b500@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
de0c2cdcb7
commit
dfdfe4be18
|
@ -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);
|
||||||
#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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user