iwlwifi: mvm: init lmac scan command
authorDavid Spinadel <david.spinadel@intel.com>
Thu, 12 Jun 2014 16:29:40 +0000 (19:29 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 7 Jul 2014 18:41:10 +0000 (21:41 +0300)
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>
drivers/net/wireless/iwlwifi/mvm/scan.c

index 919ed0e18bb06b342e936559e39fc8bdc7891c34..14fc6adc963a673689dcdf2d2ba7ba4e4136a308 100644 (file)
@@ -1099,6 +1099,7 @@ iwl_mvm_build_generic_unified_scan_cmd(struct iwl_mvm *mvm,
                                       struct iwl_scan_req_unified_lmac *cmd,
                                       struct iwl_mvm_scan_params *params)
 {
+       memset(cmd, 0, ksize(cmd));
        cmd->active_dwell = (u8)params->dwell[IEEE80211_BAND_2GHZ].active;
        cmd->passive_dwell = (u8)params->dwell[IEEE80211_BAND_2GHZ].passive;
        /* TODO: Use params; now fragmented isn't used. */
@@ -1107,14 +1108,19 @@ iwl_mvm_build_generic_unified_scan_cmd(struct iwl_mvm *mvm,
        cmd->max_out_time = cpu_to_le32(params->max_out_time);
        cmd->suspend_time = cpu_to_le32(params->suspend_time);
        cmd->scan_prio = cpu_to_le32(IWL_SCAN_PRIORITY_HIGH);
-       cmd->channel_opt[0].flags = mvm->last_ebs_successful ?
-                               cpu_to_le16(IWL_SCAN_CHANNEL_FLAG_EBS &
-                                           IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE &
-                                           IWL_SCAN_CHANNEL_FLAG_CACHE_ADD) :
-                               0;
-       cmd->channel_opt[0].non_ebs_ratio = 0;
        cmd->iter_num = cpu_to_le32(1);
-       cmd->delay = 0;
+
+       if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_EBS_SUPPORT &&
+           mvm->last_ebs_successful) {
+               cmd->channel_opt[0].flags =
+                       cpu_to_le16(IWL_SCAN_CHANNEL_FLAG_EBS |
+                                   IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE |
+                                   IWL_SCAN_CHANNEL_FLAG_CACHE_ADD);
+               cmd->channel_opt[1].flags =
+                       cpu_to_le16(IWL_SCAN_CHANNEL_FLAG_EBS |
+                                   IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE |
+                                   IWL_SCAN_CHANNEL_FLAG_CACHE_ADD);
+       }
 }
 
 int iwl_mvm_unified_scan_lmac(struct iwl_mvm *mvm,