summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2013-11-12 22:40:40 +0200
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-12-17 19:39:40 +0200
commit5f7a6f9b256ffee6392d16207619448a1d7bfe14 (patch)
tree7bfe035e63b0a7046a21679d25f9ecc56025cfe9 /drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
parent48e6de611772c1d259f349638d1371c32c28f15f (diff)
downloadlinux-stable-5f7a6f9b256ffee6392d16207619448a1d7bfe14.tar.gz
linux-stable-5f7a6f9b256ffee6392d16207619448a1d7bfe14.tar.bz2
linux-stable-5f7a6f9b256ffee6392d16207619448a1d7bfe14.zip
iwlwifi: publish Tx STBC support in VHT
If the device is MIMO and VHT capable it supports Tx STBC. Unlike HT, any chip that supports VHT also support STBC so no need for a config parameter. Using num_of_ants multiple times warranted caching it. Signed-off-by: Eyal Shapira <eyal@wizery.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-nvm-parse.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-nvm-parse.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
index e366f128a555..ebf629bd7713 100644
--- a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
@@ -263,7 +263,8 @@ static void iwl_init_vht_hw_capab(const struct iwl_cfg *cfg,
struct iwl_nvm_data *data,
struct ieee80211_sta_vht_cap *vht_cap)
{
- int bf_sts_cap = num_of_ant(data->valid_rx_ant) - 1;
+ int num_ants = num_of_ant(data->valid_rx_ant);
+ int bf_sts_cap = num_ants - 1;
vht_cap->vht_supported = true;
@@ -273,6 +274,9 @@ static void iwl_init_vht_hw_capab(const struct iwl_cfg *cfg,
bf_sts_cap << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT |
7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT;
+ if (num_ants > 1)
+ vht_cap->cap |= IEEE80211_VHT_CAP_TXSTBC;
+
if (iwlwifi_mod_params.amsdu_size_8K)
vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991;
@@ -286,7 +290,7 @@ static void iwl_init_vht_hw_capab(const struct iwl_cfg *cfg,
IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 |
IEEE80211_VHT_MCS_NOT_SUPPORTED << 14);
- if (num_of_ant(data->valid_rx_ant) == 1 ||
+ if (num_ants == 1 ||
cfg->rx_with_siso_diversity) {
vht_cap->cap |= IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |
IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN;