Commit 220575f7 authored by Henry Zhangh's avatar Henry Zhangh Committed by John W. Linville

iwlwifi: Fix A band scanning when associated

This patch allows A band to be scanned when driver is associated to AP.
Scan mechanism is that mac80211/cfg80211 requests driver to scan G band
first and then immediately to scan A band. Original code require
driver to wait for 2 seconds after any scan before another scan will be
performed. This caused driver to service G band scan request from
mac80211/cfg80211 but deny the A band scan request.
Signed-off-by: default avatarHenry Zhangh <hongx.c.zhang@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent afbdd69a
...@@ -1072,7 +1072,6 @@ struct iwl_priv { ...@@ -1072,7 +1072,6 @@ struct iwl_priv {
struct iwl_calib_result calib_results[IWL_CALIB_MAX]; struct iwl_calib_result calib_results[IWL_CALIB_MAX];
/* Scan related variables */ /* Scan related variables */
unsigned long last_scan_jiffies;
unsigned long next_scan_jiffies; unsigned long next_scan_jiffies;
unsigned long scan_start; unsigned long scan_start;
unsigned long scan_pass_start; unsigned long scan_pass_start;
......
...@@ -192,18 +192,15 @@ static void iwl_rx_scan_results_notif(struct iwl_priv *priv, ...@@ -192,18 +192,15 @@ static void iwl_rx_scan_results_notif(struct iwl_priv *priv,
IWL_DEBUG_SCAN(priv, "Scan ch.res: " IWL_DEBUG_SCAN(priv, "Scan ch.res: "
"%d [802.11%s] " "%d [802.11%s] "
"(TSF: 0x%08X:%08X) - %d " "(TSF: 0x%08X:%08X) - %d "
"elapsed=%lu usec (%dms since last)\n", "elapsed=%lu usec\n",
notif->channel, notif->channel,
notif->band ? "bg" : "a", notif->band ? "bg" : "a",
le32_to_cpu(notif->tsf_high), le32_to_cpu(notif->tsf_high),
le32_to_cpu(notif->tsf_low), le32_to_cpu(notif->tsf_low),
le32_to_cpu(notif->statistics[0]), le32_to_cpu(notif->statistics[0]),
le32_to_cpu(notif->tsf_low) - priv->scan_start_tsf, le32_to_cpu(notif->tsf_low) - priv->scan_start_tsf);
jiffies_to_msecs(elapsed_jiffies
(priv->last_scan_jiffies, jiffies)));
#endif #endif
priv->last_scan_jiffies = jiffies;
priv->next_scan_jiffies = 0; priv->next_scan_jiffies = 0;
} }
...@@ -250,7 +247,6 @@ static void iwl_rx_scan_complete_notif(struct iwl_priv *priv, ...@@ -250,7 +247,6 @@ static void iwl_rx_scan_complete_notif(struct iwl_priv *priv,
goto reschedule; goto reschedule;
} }
priv->last_scan_jiffies = jiffies;
priv->next_scan_jiffies = 0; priv->next_scan_jiffies = 0;
IWL_DEBUG_INFO(priv, "Setting scan to off\n"); IWL_DEBUG_INFO(priv, "Setting scan to off\n");
...@@ -528,15 +524,6 @@ int iwl_mac_hw_scan(struct ieee80211_hw *hw, ...@@ -528,15 +524,6 @@ int iwl_mac_hw_scan(struct ieee80211_hw *hw,
goto out_unlock; goto out_unlock;
} }
/* if we just finished scan ask for delay */
if (iwl_is_associated(priv) && priv->last_scan_jiffies &&
time_after(priv->last_scan_jiffies + IWL_DELAY_NEXT_SCAN, jiffies)) {
IWL_DEBUG_SCAN(priv, "scan rejected: within previous scan period\n");
queue_work(priv->workqueue, &priv->scan_completed);
ret = 0;
goto out_unlock;
}
priv->scan_bands = 0; priv->scan_bands = 0;
for (i = 0; i < req->n_channels; i++) for (i = 0; i < req->n_channels; i++)
priv->scan_bands |= BIT(req->channels[i]->band); priv->scan_bands |= BIT(req->channels[i]->band);
......
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