Merge remote-tracking branch 'iwlwifi-fixes/master' into iwlwifi-next
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 24 Jun 2014 12:05:09 +0000 (15:05 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 24 Jun 2014 12:05:09 +0000 (15:05 +0300)
drivers/net/wireless/iwlwifi/iwl-8000.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/scan.c

index 51c41531d81d7f5af8354aced5da7e6b4e647f78..0a1bb5f564ba9c95f57ce01a8033f9674d36442a 100644 (file)
@@ -67,7 +67,7 @@
 #include "iwl-agn-hw.h"
 
 /* Highest firmware API version supported */
-#define IWL8000_UCODE_API_MAX  8
+#define IWL8000_UCODE_API_MAX  9
 
 /* Oldest version we won't warn about */
 #define IWL8000_UCODE_API_OK   8
index 7215f59801863d3b7d72398de8c96c7b73c3902b..41c0aace3e8494e82d1a245b1cfb27223d5d9d2c 100644 (file)
@@ -374,6 +374,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
        hw->wiphy->max_sched_scan_ie_len = SCAN_OFFLOAD_PROBE_REQ_SIZE - 24 - 2;
 
        hw->wiphy->features |= NL80211_FEATURE_P2P_GO_CTWIN |
+                              NL80211_FEATURE_LOW_PRIORITY_SCAN |
                               NL80211_FEATURE_P2P_GO_OPPPS;
 
        mvm->rts_threshold = IEEE80211_MAX_RTS_THRESHOLD;
index eac2b424f6a06447a79ba20e9447d4d32fbe5cd6..40c112f136dc519cd8a7fda5595dc309106d1309 100644 (file)
@@ -267,7 +267,7 @@ static void iwl_mvm_scan_condition_iterator(void *data, u8 *mac,
 
 static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
                                     struct ieee80211_vif *vif,
-                                    int n_ssids,
+                                    int n_ssids, u32 flags,
                                     struct iwl_mvm_scan_params *params)
 {
        bool global_bound = false;
@@ -289,6 +289,9 @@ static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
                params->max_out_time = 250;
        }
 
+       if (flags & NL80211_SCAN_FLAG_LOW_PRIORITY)
+               params->max_out_time = 200;
+
 not_bound:
 
        for (band = IEEE80211_BAND_2GHZ; band < IEEE80211_NUM_BANDS; band++) {
@@ -325,16 +328,14 @@ int iwl_mvm_scan_request(struct iwl_mvm *mvm,
 
        IWL_DEBUG_SCAN(mvm, "Handling mac80211 scan request\n");
        mvm->scan_status = IWL_MVM_SCAN_OS;
-       memset(cmd, 0, sizeof(struct iwl_scan_cmd) +
-              mvm->fw->ucode_capa.max_probe_length +
-              (MAX_NUM_SCAN_CHANNELS * sizeof(struct iwl_scan_channel)));
+       memset(cmd, 0, ksize(cmd));
 
        cmd->channel_count = (u8)req->n_channels;
        cmd->quiet_time = cpu_to_le16(IWL_ACTIVE_QUIET_TIME);
        cmd->quiet_plcp_th = cpu_to_le16(IWL_PLCP_QUIET_THRESH);
        cmd->rxchain_sel_flags = iwl_mvm_scan_rx_chain(mvm);
 
-       iwl_mvm_scan_calc_params(mvm, vif, req->n_ssids, &params);
+       iwl_mvm_scan_calc_params(mvm, vif, req->n_ssids, req->flags, &params);
        cmd->max_out_time = cpu_to_le32(params.max_out_time);
        cmd->suspend_time = cpu_to_le32(params.suspend_time);
        if (params.passive_fragmented)
@@ -733,7 +734,7 @@ int iwl_mvm_config_sched_scan(struct iwl_mvm *mvm,
        if (!scan_cfg)
                return -ENOMEM;
 
-       iwl_mvm_scan_calc_params(mvm, vif, req->n_ssids, &params);
+       iwl_mvm_scan_calc_params(mvm, vif, req->n_ssids, 0, &params);
        iwl_build_scan_cmd(mvm, vif, req, &scan_cfg->scan_cmd, &params);
        scan_cfg->scan_cmd.len = cpu_to_le16(cmd_len);