diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2008-07-10 23:53:31 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-07-14 14:52:58 -0400 |
commit | a326a5d096f031af46c0073dd78eb80dea1f311a (patch) | |
tree | 311fc3ee1cd88d5cef57f7cd062a8e5a164b134e /drivers/net/wireless/iwlwifi/iwl-4965.c | |
parent | 474086396276a01190974797a69a95fb14ae7cc9 (diff) |
iwlwifi: fixes RTS / CTS support
This patch fixes the RTS / CTS support in iwlwifi. 5000 will send CTS to
self when allowed by spec, 4965 will send RTS or CTS to self according to
mac80211 request.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 04365b39279c..e0e43bdb05e0 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -642,6 +642,18 @@ static void iwl4965_gain_computation(struct iwl_priv *priv, | |||
642 | data->beacon_count = 0; | 642 | data->beacon_count = 0; |
643 | } | 643 | } |
644 | 644 | ||
645 | static void iwl4965_rts_tx_cmd_flag(struct ieee80211_tx_info *info, | ||
646 | __le32 *tx_flags) | ||
647 | { | ||
648 | if (info->flags & IEEE80211_TX_CTL_USE_RTS_CTS) { | ||
649 | *tx_flags |= TX_CMD_FLG_RTS_MSK; | ||
650 | *tx_flags &= ~TX_CMD_FLG_CTS_MSK; | ||
651 | } else if (info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT) { | ||
652 | *tx_flags &= ~TX_CMD_FLG_RTS_MSK; | ||
653 | *tx_flags |= TX_CMD_FLG_CTS_MSK; | ||
654 | } | ||
655 | } | ||
656 | |||
645 | static void iwl4965_bg_txpower_work(struct work_struct *work) | 657 | static void iwl4965_bg_txpower_work(struct work_struct *work) |
646 | { | 658 | { |
647 | struct iwl_priv *priv = container_of(work, struct iwl_priv, | 659 | struct iwl_priv *priv = container_of(work, struct iwl_priv, |
@@ -2372,6 +2384,7 @@ static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = { | |||
2372 | .build_addsta_hcmd = iwl4965_build_addsta_hcmd, | 2384 | .build_addsta_hcmd = iwl4965_build_addsta_hcmd, |
2373 | .chain_noise_reset = iwl4965_chain_noise_reset, | 2385 | .chain_noise_reset = iwl4965_chain_noise_reset, |
2374 | .gain_computation = iwl4965_gain_computation, | 2386 | .gain_computation = iwl4965_gain_computation, |
2387 | .rts_tx_cmd_flag = iwl4965_rts_tx_cmd_flag, | ||
2375 | }; | 2388 | }; |
2376 | 2389 | ||
2377 | static struct iwl_lib_ops iwl4965_lib = { | 2390 | static struct iwl_lib_ops iwl4965_lib = { |