aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-03-06 16:30:55 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-03-07 13:56:31 -0500
commitb9ad70da6a7ed166539b188a95e0aef119555e14 (patch)
treedd07a1249c09f78494d7fbcf4d1fded81d45c0e0 /drivers/net
parente7a09438b3369732b9c5cfbca24d3bc894fc1ec1 (diff)
iwlwifi: put use_rts_for_aggregation into hw_params
The hardware config ht_params shouldn't be modified, so copy the use_rts_for_aggregation parameter into hw_params and use/modify it there. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rxon.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-tx.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-debugfs.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-mac80211.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-shared.h2
6 files changed, 13 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
index 2c5e7ec697e9..e191d394cfa0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
@@ -436,8 +436,7 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
436 * force CTS-to-self frames protection if RTS-CTS is not preferred 436 * force CTS-to-self frames protection if RTS-CTS is not preferred
437 * one aggregation protection method 437 * one aggregation protection method
438 */ 438 */
439 if (!(cfg(priv)->ht_params && 439 if (!hw_params(priv).use_rts_for_aggregation)
440 cfg(priv)->ht_params->use_rts_for_aggregation))
441 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN; 440 ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
442 441
443 if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) || 442 if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
index dd28785e1a5c..151400cf51e0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
@@ -594,8 +594,7 @@ int iwlagn_tx_agg_oper(struct iwl_priv *priv, struct ieee80211_vif *vif,
594 sta_priv->max_agg_bufsize = 594 sta_priv->max_agg_bufsize =
595 min(sta_priv->max_agg_bufsize, buf_size); 595 min(sta_priv->max_agg_bufsize, buf_size);
596 596
597 if (cfg(priv)->ht_params && 597 if (hw_params(priv).use_rts_for_aggregation) {
598 cfg(priv)->ht_params->use_rts_for_aggregation) {
599 /* 598 /*
600 * switch to RTS/CTS if it is the prefer protection 599 * switch to RTS/CTS if it is the prefer protection
601 * method for HT traffic 600 * method for HT traffic
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index ac23aa3dd6d7..ce62a2fcd67f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1119,6 +1119,10 @@ static void iwl_uninit_drv(struct iwl_priv *priv)
1119 1119
1120static void iwl_set_hw_params(struct iwl_priv *priv) 1120static void iwl_set_hw_params(struct iwl_priv *priv)
1121{ 1121{
1122 if (cfg(priv)->ht_params)
1123 hw_params(priv).use_rts_for_aggregation =
1124 cfg(priv)->ht_params->use_rts_for_aggregation;
1125
1122 if (iwlagn_mod_params.amsdu_size_8K) 1126 if (iwlagn_mod_params.amsdu_size_8K)
1123 hw_params(priv).rx_page_order = 1127 hw_params(priv).rx_page_order =
1124 get_order(IWL_RX_BUF_SIZE_8K); 1128 get_order(IWL_RX_BUF_SIZE_8K);
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
index 116c7851f3b1..0a898c54c733 100644
--- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
@@ -2431,7 +2431,7 @@ static ssize_t iwl_dbgfs_protection_mode_read(struct file *file,
2431 if (cfg(priv)->ht_params) 2431 if (cfg(priv)->ht_params)
2432 pos += scnprintf(buf + pos, bufsz - pos, 2432 pos += scnprintf(buf + pos, bufsz - pos,
2433 "use %s for aggregation\n", 2433 "use %s for aggregation\n",
2434 (cfg(priv)->ht_params->use_rts_for_aggregation) ? 2434 (hw_params(priv).use_rts_for_aggregation) ?
2435 "rts/cts" : "cts-to-self"); 2435 "rts/cts" : "cts-to-self");
2436 else 2436 else
2437 pos += scnprintf(buf + pos, bufsz - pos, "N/A"); 2437 pos += scnprintf(buf + pos, bufsz - pos, "N/A");
@@ -2458,9 +2458,9 @@ static ssize_t iwl_dbgfs_protection_mode_write(struct file *file,
2458 if (sscanf(buf, "%d", &rts) != 1) 2458 if (sscanf(buf, "%d", &rts) != 1)
2459 return -EINVAL; 2459 return -EINVAL;
2460 if (rts) 2460 if (rts)
2461 cfg(priv)->ht_params->use_rts_for_aggregation = true; 2461 hw_params(priv).use_rts_for_aggregation = true;
2462 else 2462 else
2463 cfg(priv)->ht_params->use_rts_for_aggregation = false; 2463 hw_params(priv).use_rts_for_aggregation = false;
2464 return count; 2464 return count;
2465} 2465}
2466 2466
diff --git a/drivers/net/wireless/iwlwifi/iwl-mac80211.c b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
index 30861765b512..d2c1d714c89c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-mac80211.c
+++ b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
@@ -660,8 +660,8 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
660 IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n", 660 IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
661 priv->agg_tids_count); 661 priv->agg_tids_count);
662 } 662 }
663 if (!priv->agg_tids_count && cfg(priv)->ht_params && 663 if (!priv->agg_tids_count &&
664 cfg(priv)->ht_params->use_rts_for_aggregation) { 664 hw_params(priv).use_rts_for_aggregation) {
665 /* 665 /*
666 * switch off RTS/CTS if it was previously enabled 666 * switch off RTS/CTS if it was previously enabled
667 */ 667 */
diff --git a/drivers/net/wireless/iwlwifi/iwl-shared.h b/drivers/net/wireless/iwlwifi/iwl-shared.h
index ab2e1f771a11..7c9502703e82 100644
--- a/drivers/net/wireless/iwlwifi/iwl-shared.h
+++ b/drivers/net/wireless/iwlwifi/iwl-shared.h
@@ -174,6 +174,7 @@ struct iwl_mod_params {
174 * relevant for 1000, 6000 and up 174 * relevant for 1000, 6000 and up
175 * @wd_timeout: TX queues watchdog timeout 175 * @wd_timeout: TX queues watchdog timeout
176 * @struct iwl_sensitivity_ranges: range of sensitivity values 176 * @struct iwl_sensitivity_ranges: range of sensitivity values
177 * @use_rts_for_aggregation: use rts/cts protection for HT traffic
177 */ 178 */
178struct iwl_hw_params { 179struct iwl_hw_params {
179 u8 max_txq_num; 180 u8 max_txq_num;
@@ -183,6 +184,7 @@ struct iwl_hw_params {
183 u8 valid_tx_ant; 184 u8 valid_tx_ant;
184 u8 valid_rx_ant; 185 u8 valid_rx_ant;
185 u8 ht40_channel; 186 u8 ht40_channel;
187 bool use_rts_for_aggregation;
186 u16 sku; 188 u16 sku;
187 u32 rx_page_order; 189 u32 rx_page_order;
188 u32 ct_kill_threshold; 190 u32 ct_kill_threshold;