aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c5
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rs.c9
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h4
4 files changed, 24 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 48b2b7d2170c..a9665ce1d658 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -259,6 +259,7 @@ struct iwl_cfg iwl6000h_2agn_cfg = {
259 .shadow_ram_support = true, 259 .shadow_ram_support = true,
260 .ht_greenfield_support = true, 260 .ht_greenfield_support = true,
261 .led_compensation = 51, 261 .led_compensation = 51,
262 .use_rts_for_ht = true, /* use rts/cts protection */
262}; 263};
263 264
264/* 265/*
@@ -283,6 +284,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
283 .shadow_ram_support = true, 284 .shadow_ram_support = true,
284 .ht_greenfield_support = true, 285 .ht_greenfield_support = true,
285 .led_compensation = 51, 286 .led_compensation = 51,
287 .use_rts_for_ht = true, /* use rts/cts protection */
286}; 288};
287 289
288struct iwl_cfg iwl6050_2agn_cfg = { 290struct iwl_cfg iwl6050_2agn_cfg = {
@@ -304,6 +306,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
304 .shadow_ram_support = true, 306 .shadow_ram_support = true,
305 .ht_greenfield_support = true, 307 .ht_greenfield_support = true,
306 .led_compensation = 51, 308 .led_compensation = 51,
309 .use_rts_for_ht = true, /* use rts/cts protection */
307}; 310};
308 311
309struct iwl_cfg iwl6000_3agn_cfg = { 312struct iwl_cfg iwl6000_3agn_cfg = {
@@ -325,6 +328,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
325 .shadow_ram_support = true, 328 .shadow_ram_support = true,
326 .ht_greenfield_support = true, 329 .ht_greenfield_support = true,
327 .led_compensation = 51, 330 .led_compensation = 51,
331 .use_rts_for_ht = true, /* use rts/cts protection */
328}; 332};
329 333
330struct iwl_cfg iwl6050_3agn_cfg = { 334struct iwl_cfg iwl6050_3agn_cfg = {
@@ -346,6 +350,7 @@ struct iwl_cfg iwl6050_3agn_cfg = {
346 .shadow_ram_support = true, 350 .shadow_ram_support = true,
347 .ht_greenfield_support = true, 351 .ht_greenfield_support = true,
348 .led_compensation = 51, 352 .led_compensation = 51,
353 .use_rts_for_ht = true, /* use rts/cts protection */
349}; 354};
350 355
351MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 356MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index 18af37c964cb..469d56321d88 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -418,6 +418,15 @@ static void rs_tl_turn_on_agg(struct iwl_priv *priv, u8 tid,
418 else if (tid == IWL_AGG_ALL_TID) 418 else if (tid == IWL_AGG_ALL_TID)
419 for (tid = 0; tid < TID_MAX_LOAD_COUNT; tid++) 419 for (tid = 0; tid < TID_MAX_LOAD_COUNT; tid++)
420 rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta); 420 rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta);
421 if (priv->cfg->use_rts_for_ht) {
422 /*
423 * switch to RTS/CTS if it is the prefer protection method
424 * for HT traffic
425 */
426 IWL_DEBUG_HT(priv, "use RTS/CTS protection for HT\n");
427 priv->staging_rxon.flags &= ~RXON_FLG_SELF_CTS_EN;
428 iwlcore_commit_rxon(priv);
429 }
421} 430}
422 431
423static inline int get_num_of_ant_from_rate(u32 rate_n_flags) 432static inline int get_num_of_ant_from_rate(u32 rate_n_flags)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index cdc07c477457..a3739628c1d6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -115,9 +115,6 @@ int iwl_commit_rxon(struct iwl_priv *priv)
115 115
116 /* always get timestamp with Rx frame */ 116 /* always get timestamp with Rx frame */
117 priv->staging_rxon.flags |= RXON_FLG_TSF2HOST_MSK; 117 priv->staging_rxon.flags |= RXON_FLG_TSF2HOST_MSK;
118 /* allow CTS-to-self if possible. this is relevant only for
119 * 5000, but will not damage 4965 */
120 priv->staging_rxon.flags |= RXON_FLG_SELF_CTS_EN;
121 118
122 ret = iwl_check_rxon_cmd(priv); 119 ret = iwl_check_rxon_cmd(priv);
123 if (ret) { 120 if (ret) {
@@ -217,6 +214,13 @@ int iwl_commit_rxon(struct iwl_priv *priv)
217 "Could not send WEP static key.\n"); 214 "Could not send WEP static key.\n");
218 } 215 }
219 216
217 /*
218 * allow CTS-to-self if possible for new association.
219 * this is relevant only for 5000 series and up,
220 * but will not damage 4965
221 */
222 priv->staging_rxon.flags |= RXON_FLG_SELF_CTS_EN;
223
220 /* Apply the new configuration 224 /* Apply the new configuration
221 * RXON assoc doesn't clear the station table in uCode, 225 * RXON assoc doesn't clear the station table in uCode,
222 */ 226 */
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index a2ee95028c6e..c7675c387140 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -216,6 +216,7 @@ struct iwl_mod_params {
216 * @led_compensation: compensate on the led on/off time per HW according 216 * @led_compensation: compensate on the led on/off time per HW according
217 * to the deviation to achieve the desired led frequency. 217 * to the deviation to achieve the desired led frequency.
218 * The detail algorithm is described in iwl-led.c 218 * The detail algorithm is described in iwl-led.c
219 * @use_rts_for_ht: use rts/cts protection for HT traffic
219 * 220 *
220 * We enable the driver to be backward compatible wrt API version. The 221 * We enable the driver to be backward compatible wrt API version. The
221 * driver specifies which APIs it supports (with @ucode_api_max being the 222 * driver specifies which APIs it supports (with @ucode_api_max being the
@@ -257,8 +258,9 @@ struct iwl_cfg {
257 const u16 max_ll_items; 258 const u16 max_ll_items;
258 const bool shadow_ram_support; 259 const bool shadow_ram_support;
259 const bool ht_greenfield_support; 260 const bool ht_greenfield_support;
260 const bool broken_powersave;
261 u16 led_compensation; 261 u16 led_compensation;
262 const bool broken_powersave;
263 bool use_rts_for_ht;
262}; 264};
263 265
264/*************************** 266/***************************