aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/dev.h2
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/devices.c13
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/main.c9
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-config.h5
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/1000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/2000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/5000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/6000.c1
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
172static void iwl1000_hw_set_hw_params(struct iwl_priv *priv) 172static 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
245static void iwl2000_hw_set_hw_params(struct iwl_priv *priv) 243static 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
390static void iwl5000_hw_set_hw_params(struct iwl_priv *priv) 386static 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
401static void iwl5150_hw_set_hw_params(struct iwl_priv *priv) 394static 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
595static void iwl6000_hw_set_hw_params(struct iwl_priv *priv) 585static 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 */
188struct iwl_ht_params { 190struct 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 = {
71static const struct iwl_ht_params iwl1000_ht_params = { 71static 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 = {
104static const struct iwl_ht_params iwl2000_ht_params = { 104static 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
109static const struct iwl_bt_params iwl2030_bt_params = { 110static 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
70static const struct iwl_ht_params iwl5000_ht_params = { 70static 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 = {
124static const struct iwl_ht_params iwl6000_ht_params = { 124static 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
129static const struct iwl_bt_params iwl6000_bt_params = { 130static const struct iwl_bt_params iwl6000_bt_params = {