diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/dev.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/devices.c | 13 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/main.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-config.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/1000.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/2000.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/5000.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/6000.c | 1 |
8 files changed, 14 insertions, 19 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/dev.h b/drivers/net/wireless/iwlwifi/dvm/dev.h index 2880a0a3da68..af9de9542922 100644 --- a/drivers/net/wireless/iwlwifi/dvm/dev.h +++ b/drivers/net/wireless/iwlwifi/dvm/dev.h | |||
@@ -635,7 +635,6 @@ enum iwl_scan_type { | |||
635 | * @rx_chains_num: Number of RX chains | 635 | * @rx_chains_num: Number of RX chains |
636 | * @valid_tx_ant: usable antennas for TX | 636 | * @valid_tx_ant: usable antennas for TX |
637 | * @valid_rx_ant: usable antennas for RX | 637 | * @valid_rx_ant: usable antennas for RX |
638 | * @ht40_channel: is 40MHz width possible: BIT(IEEE80211_BAND_XXX) | ||
639 | * @sku: sku read from EEPROM | 638 | * @sku: sku read from EEPROM |
640 | * @ct_kill_threshold: temperature threshold - in hw dependent unit | 639 | * @ct_kill_threshold: temperature threshold - in hw dependent unit |
641 | * @ct_kill_exit_threshold: when to reeable the device - in hw dependent unit | 640 | * @ct_kill_exit_threshold: when to reeable the device - in hw dependent unit |
@@ -648,7 +647,6 @@ struct iwl_hw_params { | |||
648 | u8 rx_chains_num; | 647 | u8 rx_chains_num; |
649 | u8 valid_tx_ant; | 648 | u8 valid_tx_ant; |
650 | u8 valid_rx_ant; | 649 | u8 valid_rx_ant; |
651 | u8 ht40_channel; | ||
652 | bool use_rts_for_aggregation; | 650 | bool use_rts_for_aggregation; |
653 | u16 sku; | 651 | u16 sku; |
654 | u32 ct_kill_threshold; | 652 | u32 ct_kill_threshold; |
diff --git a/drivers/net/wireless/iwlwifi/dvm/devices.c b/drivers/net/wireless/iwlwifi/dvm/devices.c index 7d3bb1e2d196..ddf053c5713d 100644 --- a/drivers/net/wireless/iwlwifi/dvm/devices.c +++ b/drivers/net/wireless/iwlwifi/dvm/devices.c | |||
@@ -171,8 +171,6 @@ static const struct iwl_sensitivity_ranges iwl1000_sensitivity = { | |||
171 | 171 | ||
172 | static void iwl1000_hw_set_hw_params(struct iwl_priv *priv) | 172 | static void iwl1000_hw_set_hw_params(struct iwl_priv *priv) |
173 | { | 173 | { |
174 | priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ); | ||
175 | |||
176 | iwl1000_set_ct_threshold(priv); | 174 | iwl1000_set_ct_threshold(priv); |
177 | 175 | ||
178 | /* Set initial sensitivity parameters */ | 176 | /* Set initial sensitivity parameters */ |
@@ -244,8 +242,6 @@ static const struct iwl_sensitivity_ranges iwl2000_sensitivity = { | |||
244 | 242 | ||
245 | static void iwl2000_hw_set_hw_params(struct iwl_priv *priv) | 243 | static void iwl2000_hw_set_hw_params(struct iwl_priv *priv) |
246 | { | 244 | { |
247 | priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ); | ||
248 | |||
249 | iwl2000_set_ct_threshold(priv); | 245 | iwl2000_set_ct_threshold(priv); |
250 | 246 | ||
251 | /* Set initial sensitivity parameters */ | 247 | /* Set initial sensitivity parameters */ |
@@ -389,9 +385,6 @@ static void iwl5000_set_ct_threshold(struct iwl_priv *priv) | |||
389 | 385 | ||
390 | static void iwl5000_hw_set_hw_params(struct iwl_priv *priv) | 386 | static void iwl5000_hw_set_hw_params(struct iwl_priv *priv) |
391 | { | 387 | { |
392 | priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ) | | ||
393 | BIT(IEEE80211_BAND_5GHZ); | ||
394 | |||
395 | iwl5000_set_ct_threshold(priv); | 388 | iwl5000_set_ct_threshold(priv); |
396 | 389 | ||
397 | /* Set initial sensitivity parameters */ | 390 | /* Set initial sensitivity parameters */ |
@@ -400,9 +393,6 @@ static void iwl5000_hw_set_hw_params(struct iwl_priv *priv) | |||
400 | 393 | ||
401 | static void iwl5150_hw_set_hw_params(struct iwl_priv *priv) | 394 | static void iwl5150_hw_set_hw_params(struct iwl_priv *priv) |
402 | { | 395 | { |
403 | priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ) | | ||
404 | BIT(IEEE80211_BAND_5GHZ); | ||
405 | |||
406 | iwl5150_set_ct_threshold(priv); | 396 | iwl5150_set_ct_threshold(priv); |
407 | 397 | ||
408 | /* Set initial sensitivity parameters */ | 398 | /* Set initial sensitivity parameters */ |
@@ -594,9 +584,6 @@ static const struct iwl_sensitivity_ranges iwl6000_sensitivity = { | |||
594 | 584 | ||
595 | static void iwl6000_hw_set_hw_params(struct iwl_priv *priv) | 585 | static void iwl6000_hw_set_hw_params(struct iwl_priv *priv) |
596 | { | 586 | { |
597 | priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ) | | ||
598 | BIT(IEEE80211_BAND_5GHZ); | ||
599 | |||
600 | iwl6000_set_ct_threshold(priv); | 587 | iwl6000_set_ct_threshold(priv); |
601 | 588 | ||
602 | /* Set initial sensitivity parameters */ | 589 | /* Set initial sensitivity parameters */ |
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c index d67ae99c00b9..441188725985 100644 --- a/drivers/net/wireless/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/iwlwifi/dvm/main.c | |||
@@ -1157,16 +1157,19 @@ static void iwl_init_ht_hw_capab(const struct iwl_priv *priv, | |||
1157 | u8 tx_chains_num = priv->hw_params.tx_chains_num; | 1157 | u8 tx_chains_num = priv->hw_params.tx_chains_num; |
1158 | 1158 | ||
1159 | ht_info->cap = 0; | 1159 | ht_info->cap = 0; |
1160 | ht_info->ht_supported = false; | ||
1160 | memset(&ht_info->mcs, 0, sizeof(ht_info->mcs)); | 1161 | memset(&ht_info->mcs, 0, sizeof(ht_info->mcs)); |
1161 | 1162 | ||
1163 | if (!priv->cfg->ht_params) | ||
1164 | return; | ||
1165 | |||
1162 | ht_info->ht_supported = true; | 1166 | ht_info->ht_supported = true; |
1163 | 1167 | ||
1164 | if (priv->cfg->ht_params && | 1168 | if (priv->cfg->ht_params->ht_greenfield_support) |
1165 | priv->cfg->ht_params->ht_greenfield_support) | ||
1166 | ht_info->cap |= IEEE80211_HT_CAP_GRN_FLD; | 1169 | ht_info->cap |= IEEE80211_HT_CAP_GRN_FLD; |
1167 | ht_info->cap |= IEEE80211_HT_CAP_SGI_20; | 1170 | ht_info->cap |= IEEE80211_HT_CAP_SGI_20; |
1168 | max_bit_rate = MAX_BIT_RATE_20_MHZ; | 1171 | max_bit_rate = MAX_BIT_RATE_20_MHZ; |
1169 | if (priv->hw_params.ht40_channel & BIT(band)) { | 1172 | if (priv->cfg->ht_params->ht40_bands & BIT(band)) { |
1170 | ht_info->cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40; | 1173 | ht_info->cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40; |
1171 | ht_info->cap |= IEEE80211_HT_CAP_SGI_40; | 1174 | ht_info->cap |= IEEE80211_HT_CAP_SGI_40; |
1172 | ht_info->mcs.rx_mask[4] = 0x01; | 1175 | ht_info->mcs.rx_mask[4] = 0x01; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-config.h b/drivers/net/wireless/iwlwifi/iwl-config.h index a52818bbfe98..af3a46126f01 100644 --- a/drivers/net/wireless/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/iwlwifi/iwl-config.h | |||
@@ -182,13 +182,16 @@ struct iwl_bt_params { | |||
182 | bool bt_sco_disable; | 182 | bool bt_sco_disable; |
183 | bool bt_session_2; | 183 | bool bt_session_2; |
184 | }; | 184 | }; |
185 | |||
185 | /* | 186 | /* |
186 | * @use_rts_for_aggregation: use rts/cts protection for HT traffic | 187 | * @use_rts_for_aggregation: use rts/cts protection for HT traffic |
188 | * @ht40_bands: bitmap of bands (using %IEEE80211_BAND_*) that support HT40 | ||
187 | */ | 189 | */ |
188 | struct iwl_ht_params { | 190 | struct iwl_ht_params { |
191 | enum ieee80211_smps_mode smps_mode; | ||
189 | const bool ht_greenfield_support; /* if used set to true */ | 192 | const bool ht_greenfield_support; /* if used set to true */ |
190 | bool use_rts_for_aggregation; | 193 | bool use_rts_for_aggregation; |
191 | enum ieee80211_smps_mode smps_mode; | 194 | u8 ht40_bands; |
192 | }; | 195 | }; |
193 | 196 | ||
194 | /** | 197 | /** |
diff --git a/drivers/net/wireless/iwlwifi/pcie/1000.c b/drivers/net/wireless/iwlwifi/pcie/1000.c index 0cfbf9fb74d5..174cf5e38962 100644 --- a/drivers/net/wireless/iwlwifi/pcie/1000.c +++ b/drivers/net/wireless/iwlwifi/pcie/1000.c | |||
@@ -71,6 +71,7 @@ static const struct iwl_base_params iwl1000_base_params = { | |||
71 | static const struct iwl_ht_params iwl1000_ht_params = { | 71 | static const struct iwl_ht_params iwl1000_ht_params = { |
72 | .ht_greenfield_support = true, | 72 | .ht_greenfield_support = true, |
73 | .use_rts_for_aggregation = true, /* use rts/cts protection */ | 73 | .use_rts_for_aggregation = true, /* use rts/cts protection */ |
74 | .ht40_bands = BIT(IEEE80211_BAND_2GHZ), | ||
74 | }; | 75 | }; |
75 | 76 | ||
76 | #define IWL_DEVICE_1000 \ | 77 | #define IWL_DEVICE_1000 \ |
diff --git a/drivers/net/wireless/iwlwifi/pcie/2000.c b/drivers/net/wireless/iwlwifi/pcie/2000.c index 062c07b17056..8d4d7295aa46 100644 --- a/drivers/net/wireless/iwlwifi/pcie/2000.c +++ b/drivers/net/wireless/iwlwifi/pcie/2000.c | |||
@@ -104,6 +104,7 @@ static const struct iwl_base_params iwl2030_base_params = { | |||
104 | static const struct iwl_ht_params iwl2000_ht_params = { | 104 | static const struct iwl_ht_params iwl2000_ht_params = { |
105 | .ht_greenfield_support = true, | 105 | .ht_greenfield_support = true, |
106 | .use_rts_for_aggregation = true, /* use rts/cts protection */ | 106 | .use_rts_for_aggregation = true, /* use rts/cts protection */ |
107 | .ht40_bands = BIT(IEEE80211_BAND_2GHZ), | ||
107 | }; | 108 | }; |
108 | 109 | ||
109 | static const struct iwl_bt_params iwl2030_bt_params = { | 110 | static const struct iwl_bt_params iwl2030_bt_params = { |
diff --git a/drivers/net/wireless/iwlwifi/pcie/5000.c b/drivers/net/wireless/iwlwifi/pcie/5000.c index 92e502e6e7e5..75d90a9c184a 100644 --- a/drivers/net/wireless/iwlwifi/pcie/5000.c +++ b/drivers/net/wireless/iwlwifi/pcie/5000.c | |||
@@ -69,6 +69,7 @@ static const struct iwl_base_params iwl5000_base_params = { | |||
69 | 69 | ||
70 | static const struct iwl_ht_params iwl5000_ht_params = { | 70 | static const struct iwl_ht_params iwl5000_ht_params = { |
71 | .ht_greenfield_support = true, | 71 | .ht_greenfield_support = true, |
72 | .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ), | ||
72 | }; | 73 | }; |
73 | 74 | ||
74 | #define IWL_DEVICE_5000 \ | 75 | #define IWL_DEVICE_5000 \ |
diff --git a/drivers/net/wireless/iwlwifi/pcie/6000.c b/drivers/net/wireless/iwlwifi/pcie/6000.c index f9e396182ef3..7b9c02cc67e5 100644 --- a/drivers/net/wireless/iwlwifi/pcie/6000.c +++ b/drivers/net/wireless/iwlwifi/pcie/6000.c | |||
@@ -124,6 +124,7 @@ static const struct iwl_base_params iwl6000_g2_base_params = { | |||
124 | static const struct iwl_ht_params iwl6000_ht_params = { | 124 | static const struct iwl_ht_params iwl6000_ht_params = { |
125 | .ht_greenfield_support = true, | 125 | .ht_greenfield_support = true, |
126 | .use_rts_for_aggregation = true, /* use rts/cts protection */ | 126 | .use_rts_for_aggregation = true, /* use rts/cts protection */ |
127 | .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ), | ||
127 | }; | 128 | }; |
128 | 129 | ||
129 | static const struct iwl_bt_params iwl6000_bt_params = { | 130 | static const struct iwl_bt_params iwl6000_bt_params = { |