Commit f2461796 authored by Luciano Coelho's avatar Luciano Coelho Committed by Emmanuel Grumbach

iwlwifi: mvm: combine UMAC and LMAC scan_stop functions

The UMAC and LMAC scan_stop functions are now nearly identical, so
they can be combined into a single function instead.
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 434f3c1b
...@@ -557,7 +557,7 @@ static bool iwl_mvm_scan_pass_all(struct iwl_mvm *mvm, ...@@ -557,7 +557,7 @@ static bool iwl_mvm_scan_pass_all(struct iwl_mvm *mvm,
return true; return true;
} }
static int iwl_mvm_send_lmac_scan_abort(struct iwl_mvm *mvm) static int iwl_mvm_lmac_scan_abort(struct iwl_mvm *mvm)
{ {
int ret; int ret;
struct iwl_host_cmd cmd = { struct iwl_host_cmd cmd = {
...@@ -584,36 +584,6 @@ static int iwl_mvm_send_lmac_scan_abort(struct iwl_mvm *mvm) ...@@ -584,36 +584,6 @@ static int iwl_mvm_send_lmac_scan_abort(struct iwl_mvm *mvm)
return ret; return ret;
} }
static int iwl_mvm_lmac_scan_stop(struct iwl_mvm *mvm, int type)
{
int ret;
struct iwl_notification_wait wait_scan_done;
static const u8 scan_done_notif[] = { SCAN_OFFLOAD_COMPLETE, };
bool sched = type & IWL_MVM_SCAN_SCHED;
lockdep_assert_held(&mvm->mutex);
iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_done,
scan_done_notif,
ARRAY_SIZE(scan_done_notif),
NULL, NULL);
ret = iwl_mvm_send_lmac_scan_abort(mvm);
if (ret) {
IWL_DEBUG_SCAN(mvm, "Send stop %sscan failed %d\n",
sched ? "offloaded " : "", ret);
iwl_remove_notification(&mvm->notif_wait, &wait_scan_done);
goto out;
}
IWL_DEBUG_SCAN(mvm, "Successfully sent stop %sscan\n",
sched ? "scheduled " : "");
ret = iwl_wait_notification(&mvm->notif_wait, &wait_scan_done, 1 * HZ);
out:
return ret;
}
static void iwl_mvm_scan_fill_tx_cmd(struct iwl_mvm *mvm, static void iwl_mvm_scan_fill_tx_cmd(struct iwl_mvm *mvm,
struct iwl_scan_req_tx_cmd *tx_cmd, struct iwl_scan_req_tx_cmd *tx_cmd,
bool no_cck) bool no_cck)
...@@ -1465,12 +1435,15 @@ static int iwl_mvm_umac_scan_abort(struct iwl_mvm *mvm, int type) ...@@ -1465,12 +1435,15 @@ static int iwl_mvm_umac_scan_abort(struct iwl_mvm *mvm, int type)
return ret; return ret;
} }
static int iwl_mvm_umac_scan_stop(struct iwl_mvm *mvm, int type) static int iwl_mvm_scan_stop_wait(struct iwl_mvm *mvm, int type)
{ {
struct iwl_notification_wait wait_scan_done; struct iwl_notification_wait wait_scan_done;
static const u8 scan_done_notif[] = { SCAN_COMPLETE_UMAC, }; static const u8 scan_done_notif[] = { SCAN_COMPLETE_UMAC,
SCAN_OFFLOAD_COMPLETE, };
int ret; int ret;
lockdep_assert_held(&mvm->mutex);
iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_done, iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_done,
scan_done_notif, scan_done_notif,
ARRAY_SIZE(scan_done_notif), ARRAY_SIZE(scan_done_notif),
...@@ -1478,7 +1451,11 @@ static int iwl_mvm_umac_scan_stop(struct iwl_mvm *mvm, int type) ...@@ -1478,7 +1451,11 @@ static int iwl_mvm_umac_scan_stop(struct iwl_mvm *mvm, int type)
IWL_DEBUG_SCAN(mvm, "Preparing to stop scan, type %x\n", type); IWL_DEBUG_SCAN(mvm, "Preparing to stop scan, type %x\n", type);
if (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN)
ret = iwl_mvm_umac_scan_abort(mvm, type); ret = iwl_mvm_umac_scan_abort(mvm, type);
else
ret = iwl_mvm_lmac_scan_abort(mvm);
if (ret) { if (ret) {
IWL_DEBUG_SCAN(mvm, "couldn't stop scan type %d\n", type); IWL_DEBUG_SCAN(mvm, "couldn't stop scan type %d\n", type);
iwl_remove_notification(&mvm->notif_wait, &wait_scan_done); iwl_remove_notification(&mvm->notif_wait, &wait_scan_done);
...@@ -1559,11 +1536,7 @@ int iwl_mvm_reg_scan_stop(struct iwl_mvm *mvm) ...@@ -1559,11 +1536,7 @@ int iwl_mvm_reg_scan_stop(struct iwl_mvm *mvm)
goto out; goto out;
} }
if (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) ret = iwl_mvm_scan_stop_wait(mvm, IWL_MVM_SCAN_REGULAR);
ret = iwl_mvm_umac_scan_stop(mvm, IWL_MVM_SCAN_REGULAR);
else
ret = iwl_mvm_lmac_scan_stop(mvm, IWL_MVM_SCAN_REGULAR);
if (!ret) if (!ret)
mvm->scan_status |= IWL_MVM_SCAN_STOPPING_REGULAR; mvm->scan_status |= IWL_MVM_SCAN_STOPPING_REGULAR;
out: out:
...@@ -1593,11 +1566,7 @@ int iwl_mvm_sched_scan_stop(struct iwl_mvm *mvm, bool notify) ...@@ -1593,11 +1566,7 @@ int iwl_mvm_sched_scan_stop(struct iwl_mvm *mvm, bool notify)
goto out; goto out;
} }
if (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) ret = iwl_mvm_scan_stop_wait(mvm, IWL_MVM_SCAN_SCHED);
ret = iwl_mvm_umac_scan_stop(mvm, IWL_MVM_SCAN_SCHED);
else
ret = iwl_mvm_lmac_scan_stop(mvm, IWL_MVM_SCAN_SCHED);
if (!ret) if (!ret)
mvm->scan_status |= IWL_MVM_SCAN_STOPPING_SCHED; mvm->scan_status |= IWL_MVM_SCAN_STOPPING_SCHED;
out: out:
......
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