diff options
author | Arik Nemtsov <arikx.nemtsov@intel.com> | 2014-06-10 04:25:35 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2015-03-12 03:57:26 -0400 |
commit | 162ee3c9a81556316e22305e455166e470fbb2b2 (patch) | |
tree | 5a154666ea935ce1a6d2da4920d0f5465f35f75b | |
parent | 88931cc92872151d53f86720c848e469574ce7f0 (diff) |
iwlwifi: nvm: init correct nvm channel list for 8000 devices
Otherwise the regulatory data will mistakenly contain only 7000 series
channels.
Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-nvm-parse.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-nvm-parse.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 2 |
3 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c index 88703778dbb2..5959329e83c9 100644 --- a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c +++ b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c | |||
@@ -709,12 +709,13 @@ static u32 iwl_nvm_get_regdom_bw_flags(const u8 *nvm_chan, | |||
709 | } | 709 | } |
710 | 710 | ||
711 | struct ieee80211_regdomain * | 711 | struct ieee80211_regdomain * |
712 | iwl_parse_nvm_mcc_info(struct device *dev, int num_of_ch, __le32 *channels, | 712 | iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg, |
713 | u16 fw_mcc) | 713 | int num_of_ch, __le32 *channels, u16 fw_mcc) |
714 | { | 714 | { |
715 | int ch_idx; | 715 | int ch_idx; |
716 | u16 ch_flags, prev_ch_flags = 0; | 716 | u16 ch_flags, prev_ch_flags = 0; |
717 | const u8 *nvm_chan = iwl_nvm_channels; /* TODO: 8000 series differs */ | 717 | const u8 *nvm_chan = cfg->device_family == IWL_DEVICE_FAMILY_8000 ? |
718 | iwl_nvm_channels_family_8000 : iwl_nvm_channels; | ||
718 | struct ieee80211_regdomain *regd; | 719 | struct ieee80211_regdomain *regd; |
719 | int size_of_regd; | 720 | int size_of_regd; |
720 | struct ieee80211_reg_rule *rule; | 721 | struct ieee80211_reg_rule *rule; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.h b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.h index c2fa930a9892..1b3990d15dc1 100644 --- a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.h +++ b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.h | |||
@@ -90,7 +90,7 @@ iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg, | |||
90 | * the regdomain returned here with kfree. | 90 | * the regdomain returned here with kfree. |
91 | */ | 91 | */ |
92 | struct ieee80211_regdomain * | 92 | struct ieee80211_regdomain * |
93 | iwl_parse_nvm_mcc_info(struct device *dev, int num_of_ch, __le32 *channels, | 93 | iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg, |
94 | u16 fw_mcc); | 94 | int num_of_ch, __le32 *channels, u16 fw_mcc); |
95 | 95 | ||
96 | #endif /* __iwl_nvm_parse_h__ */ | 96 | #endif /* __iwl_nvm_parse_h__ */ |
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 0da8787aa25b..5dc3a9492d9a 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -325,7 +325,7 @@ struct ieee80211_regdomain *iwl_mvm_get_regdomain(struct wiphy *wiphy, | |||
325 | goto out_unlock; | 325 | goto out_unlock; |
326 | } | 326 | } |
327 | 327 | ||
328 | regd = iwl_parse_nvm_mcc_info(mvm->trans->dev, | 328 | regd = iwl_parse_nvm_mcc_info(mvm->trans->dev, mvm->cfg, |
329 | __le32_to_cpu(resp->n_channels), | 329 | __le32_to_cpu(resp->n_channels), |
330 | resp->channels, | 330 | resp->channels, |
331 | __le16_to_cpu(resp->mcc)); | 331 | __le16_to_cpu(resp->mcc)); |