aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/scan.c
diff options
context:
space:
mode:
authorDavid Spinadel <david.spinadel@intel.com>2014-06-12 12:29:40 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2014-07-07 14:41:10 -0400
commitaf91344c23fd23be44bc6e3dfb2c7b47bb9e6e11 (patch)
tree2f63d1e77a9231d80ce0d5be41f5057eaf9df5c6 /drivers/net/wireless/iwlwifi/mvm/scan.c
parentfb98be5e94194ba76b507770dc96f744fed8e4c5 (diff)
iwlwifi: mvm: init lmac scan command
Initialize LMAC scan command. Fix EBS flag to be dependant on TLV flg and fix other bugs. Signed-off-by: David Spinadel <david.spinadel@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/scan.c')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/scan.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/scan.c b/drivers/net/wireless/iwlwifi/mvm/scan.c
index 919ed0e18bb0..14fc6adc963a 100644
--- a/drivers/net/wireless/iwlwifi/mvm/scan.c
+++ b/drivers/net/wireless/iwlwifi/mvm/scan.c
@@ -1099,6 +1099,7 @@ iwl_mvm_build_generic_unified_scan_cmd(struct iwl_mvm *mvm,
1099 struct iwl_scan_req_unified_lmac *cmd, 1099 struct iwl_scan_req_unified_lmac *cmd,
1100 struct iwl_mvm_scan_params *params) 1100 struct iwl_mvm_scan_params *params)
1101{ 1101{
1102 memset(cmd, 0, ksize(cmd));
1102 cmd->active_dwell = (u8)params->dwell[IEEE80211_BAND_2GHZ].active; 1103 cmd->active_dwell = (u8)params->dwell[IEEE80211_BAND_2GHZ].active;
1103 cmd->passive_dwell = (u8)params->dwell[IEEE80211_BAND_2GHZ].passive; 1104 cmd->passive_dwell = (u8)params->dwell[IEEE80211_BAND_2GHZ].passive;
1104 /* TODO: Use params; now fragmented isn't used. */ 1105 /* TODO: Use params; now fragmented isn't used. */
@@ -1107,14 +1108,19 @@ iwl_mvm_build_generic_unified_scan_cmd(struct iwl_mvm *mvm,
1107 cmd->max_out_time = cpu_to_le32(params->max_out_time); 1108 cmd->max_out_time = cpu_to_le32(params->max_out_time);
1108 cmd->suspend_time = cpu_to_le32(params->suspend_time); 1109 cmd->suspend_time = cpu_to_le32(params->suspend_time);
1109 cmd->scan_prio = cpu_to_le32(IWL_SCAN_PRIORITY_HIGH); 1110 cmd->scan_prio = cpu_to_le32(IWL_SCAN_PRIORITY_HIGH);
1110 cmd->channel_opt[0].flags = mvm->last_ebs_successful ?
1111 cpu_to_le16(IWL_SCAN_CHANNEL_FLAG_EBS &
1112 IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE &
1113 IWL_SCAN_CHANNEL_FLAG_CACHE_ADD) :
1114 0;
1115 cmd->channel_opt[0].non_ebs_ratio = 0;
1116 cmd->iter_num = cpu_to_le32(1); 1111 cmd->iter_num = cpu_to_le32(1);
1117 cmd->delay = 0; 1112
1113 if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_EBS_SUPPORT &&
1114 mvm->last_ebs_successful) {
1115 cmd->channel_opt[0].flags =
1116 cpu_to_le16(IWL_SCAN_CHANNEL_FLAG_EBS |
1117 IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE |
1118 IWL_SCAN_CHANNEL_FLAG_CACHE_ADD);
1119 cmd->channel_opt[1].flags =
1120 cpu_to_le16(IWL_SCAN_CHANNEL_FLAG_EBS |
1121 IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE |
1122 IWL_SCAN_CHANNEL_FLAG_CACHE_ADD);
1123 }
1118} 1124}
1119 1125
1120int iwl_mvm_unified_scan_lmac(struct iwl_mvm *mvm, 1126int iwl_mvm_unified_scan_lmac(struct iwl_mvm *mvm,