diff options
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index 474df2ce6e3b..00bd1e16c3ce 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
@@ -5306,6 +5306,8 @@ static s32 brcmf_update_wiphybands(struct brcmf_cfg80211_info *cfg) | |||
5306 | u32 band_list[3]; | 5306 | u32 band_list[3]; |
5307 | u32 nmode; | 5307 | u32 nmode; |
5308 | u32 bw_cap[2] = { 0, 0 }; | 5308 | u32 bw_cap[2] = { 0, 0 }; |
5309 | u32 rxchain; | ||
5310 | u32 nchain; | ||
5309 | s8 phy; | 5311 | s8 phy; |
5310 | s32 err; | 5312 | s32 err; |
5311 | u32 nband; | 5313 | u32 nband; |
@@ -5342,6 +5344,16 @@ static s32 brcmf_update_wiphybands(struct brcmf_cfg80211_info *cfg) | |||
5342 | brcmf_dbg(INFO, "nmode=%d, bw_cap=(%d, %d)\n", nmode, | 5344 | brcmf_dbg(INFO, "nmode=%d, bw_cap=(%d, %d)\n", nmode, |
5343 | bw_cap[IEEE80211_BAND_2GHZ], bw_cap[IEEE80211_BAND_5GHZ]); | 5345 | bw_cap[IEEE80211_BAND_2GHZ], bw_cap[IEEE80211_BAND_5GHZ]); |
5344 | 5346 | ||
5347 | err = brcmf_fil_iovar_int_get(ifp, "rxchain", &rxchain); | ||
5348 | if (err) { | ||
5349 | brcmf_err("rxchain error (%d)\n", err); | ||
5350 | nchain = 1; | ||
5351 | } else { | ||
5352 | for (nchain = 0; rxchain; nchain++) | ||
5353 | rxchain = rxchain & (rxchain - 1); | ||
5354 | } | ||
5355 | brcmf_dbg(INFO, "nchain=%d\n", nchain); | ||
5356 | |||
5345 | err = brcmf_construct_reginfo(cfg, bw_cap); | 5357 | err = brcmf_construct_reginfo(cfg, bw_cap); |
5346 | if (err) { | 5358 | if (err) { |
5347 | brcmf_err("brcmf_construct_reginfo failed (%d)\n", err); | 5359 | brcmf_err("brcmf_construct_reginfo failed (%d)\n", err); |
@@ -5370,10 +5382,7 @@ static s32 brcmf_update_wiphybands(struct brcmf_cfg80211_info *cfg) | |||
5370 | band->ht_cap.ht_supported = true; | 5382 | band->ht_cap.ht_supported = true; |
5371 | band->ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; | 5383 | band->ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; |
5372 | band->ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_16; | 5384 | band->ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_16; |
5373 | /* An HT shall support all EQM rates for one spatial | 5385 | memset(band->ht_cap.mcs.rx_mask, 0xff, nchain); |
5374 | * stream | ||
5375 | */ | ||
5376 | band->ht_cap.mcs.rx_mask[0] = 0xff; | ||
5377 | band->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; | 5386 | band->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; |
5378 | bands[band->band] = band; | 5387 | bands[band->band] = band; |
5379 | } | 5388 | } |