diff options
author | David Spinadel <david.spinadel@intel.com> | 2014-06-12 12:29:40 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-07-07 14:41:10 -0400 |
commit | af91344c23fd23be44bc6e3dfb2c7b47bb9e6e11 (patch) | |
tree | 2f63d1e77a9231d80ce0d5be41f5057eaf9df5c6 /drivers | |
parent | fb98be5e94194ba76b507770dc96f744fed8e4c5 (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')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/scan.c | 20 |
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 | ||
1120 | int iwl_mvm_unified_scan_lmac(struct iwl_mvm *mvm, | 1126 | int iwl_mvm_unified_scan_lmac(struct iwl_mvm *mvm, |