瀏覽代碼

iwlwifi: honour regulatory restrictions in scan code

When doing firmware-assisted scanning, iwlwifi drivers do not
honour the regulatory control code that might disable channels
that are enabled in the EEPROM, for example when the user is
visiting another country and adjusted the regulatory domain
accordingly. This patch fixes that.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Johannes Berg 17 年之前
父節點
當前提交
182e2e66ca
共有 2 個文件被更改,包括 6 次插入0 次删除
  1. 3 0
      drivers/net/wireless/iwlwifi/iwl3945-base.c
  2. 3 0
      drivers/net/wireless/iwlwifi/iwl4965-base.c

+ 3 - 0
drivers/net/wireless/iwlwifi/iwl3945-base.c

@@ -4965,6 +4965,9 @@ static int iwl3945_get_channels_for_scan(struct iwl3945_priv *priv,
 	passive_dwell = iwl3945_get_passive_dwell_time(priv, band);
 
 	for (i = 0, added = 0; i < sband->n_channels; i++) {
+		if (channels[i].flags & IEEE80211_CHAN_DISABLED)
+			continue;
+
 		if (channels[i].hw_value ==
 		    le16_to_cpu(priv->active_rxon.channel)) {
 			if (iwl3945_is_associated(priv)) {

+ 3 - 0
drivers/net/wireless/iwlwifi/iwl4965-base.c

@@ -4794,6 +4794,9 @@ static int iwl4965_get_channels_for_scan(struct iwl_priv *priv,
 	passive_dwell = iwl4965_get_passive_dwell_time(priv, band);
 
 	for (i = 0, added = 0; i < sband->n_channels; i++) {
+		if (channels[i].flags & IEEE80211_CHAN_DISABLED)
+			continue;
+
 		if (ieee80211_frequency_to_channel(channels[i].center_freq) ==
 		    le16_to_cpu(priv->active_rxon.channel)) {
 			if (iwl_is_associated(priv)) {