diff options
author | Arik Nemtsov <arik@wizery.com> | 2012-06-13 12:09:26 -0400 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2012-06-21 09:48:20 -0400 |
commit | 93fb19bbb37c734ec0c662aa600d1d6a12c1be70 (patch) | |
tree | 97d60fcf0945d8b82b252c32c724ac64071fb8f4 /drivers/net/wireless/ti/wl18xx/main.c | |
parent | fa2adfcdbd88124e8b7cc46c6363b1343dabc09d (diff) |
wl18xx: split siso40 HT cap between 2Ghz and 5Ghz
Remove the cap IEEE80211_HT_CAP_DSSSCCK40 from the 5Ghz variant of
the siso40 HT capabilities. It is meaningless in 5Ghz.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/ti/wl18xx/main.c')
-rw-r--r-- | drivers/net/wireless/ti/wl18xx/main.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c index 485aeae2f777..2c0f51b449c4 100644 --- a/drivers/net/wireless/ti/wl18xx/main.c +++ b/drivers/net/wireless/ti/wl18xx/main.c | |||
@@ -1215,8 +1215,8 @@ static struct wlcore_ops wl18xx_ops = { | |||
1215 | .pre_pkt_send = wl18xx_pre_pkt_send, | 1215 | .pre_pkt_send = wl18xx_pre_pkt_send, |
1216 | }; | 1216 | }; |
1217 | 1217 | ||
1218 | /* HT cap appropriate for wide channels */ | 1218 | /* HT cap appropriate for wide channels in 2Ghz */ |
1219 | static struct ieee80211_sta_ht_cap wl18xx_siso40_ht_cap = { | 1219 | static struct ieee80211_sta_ht_cap wl18xx_siso40_ht_cap_2ghz = { |
1220 | .cap = IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40 | | 1220 | .cap = IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40 | |
1221 | IEEE80211_HT_CAP_SUP_WIDTH_20_40 | IEEE80211_HT_CAP_DSSSCCK40, | 1221 | IEEE80211_HT_CAP_SUP_WIDTH_20_40 | IEEE80211_HT_CAP_DSSSCCK40, |
1222 | .ht_supported = true, | 1222 | .ht_supported = true, |
@@ -1229,6 +1229,20 @@ static struct ieee80211_sta_ht_cap wl18xx_siso40_ht_cap = { | |||
1229 | }, | 1229 | }, |
1230 | }; | 1230 | }; |
1231 | 1231 | ||
1232 | /* HT cap appropriate for wide channels in 5Ghz */ | ||
1233 | static struct ieee80211_sta_ht_cap wl18xx_siso40_ht_cap_5ghz = { | ||
1234 | .cap = IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40 | | ||
1235 | IEEE80211_HT_CAP_SUP_WIDTH_20_40, | ||
1236 | .ht_supported = true, | ||
1237 | .ampdu_factor = IEEE80211_HT_MAX_AMPDU_16K, | ||
1238 | .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16, | ||
1239 | .mcs = { | ||
1240 | .rx_mask = { 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, | ||
1241 | .rx_highest = cpu_to_le16(150), | ||
1242 | .tx_params = IEEE80211_HT_MCS_TX_DEFINED, | ||
1243 | }, | ||
1244 | }; | ||
1245 | |||
1232 | /* HT cap appropriate for SISO 20 */ | 1246 | /* HT cap appropriate for SISO 20 */ |
1233 | static struct ieee80211_sta_ht_cap wl18xx_siso20_ht_cap = { | 1247 | static struct ieee80211_sta_ht_cap wl18xx_siso20_ht_cap = { |
1234 | .cap = IEEE80211_HT_CAP_SGI_20, | 1248 | .cap = IEEE80211_HT_CAP_SGI_20, |
@@ -1345,12 +1359,12 @@ static int __devinit wl18xx_probe(struct platform_device *pdev) | |||
1345 | 1359 | ||
1346 | /* 5Ghz is always wide */ | 1360 | /* 5Ghz is always wide */ |
1347 | wlcore_set_ht_cap(wl, IEEE80211_BAND_5GHZ, | 1361 | wlcore_set_ht_cap(wl, IEEE80211_BAND_5GHZ, |
1348 | &wl18xx_siso40_ht_cap); | 1362 | &wl18xx_siso40_ht_cap_5ghz); |
1349 | } else if (!strcmp(ht_mode_param, "wide")) { | 1363 | } else if (!strcmp(ht_mode_param, "wide")) { |
1350 | wlcore_set_ht_cap(wl, IEEE80211_BAND_2GHZ, | 1364 | wlcore_set_ht_cap(wl, IEEE80211_BAND_2GHZ, |
1351 | &wl18xx_siso40_ht_cap); | 1365 | &wl18xx_siso40_ht_cap_2ghz); |
1352 | wlcore_set_ht_cap(wl, IEEE80211_BAND_5GHZ, | 1366 | wlcore_set_ht_cap(wl, IEEE80211_BAND_5GHZ, |
1353 | &wl18xx_siso40_ht_cap); | 1367 | &wl18xx_siso40_ht_cap_5ghz); |
1354 | } else if (!strcmp(ht_mode_param, "siso20")) { | 1368 | } else if (!strcmp(ht_mode_param, "siso20")) { |
1355 | wlcore_set_ht_cap(wl, IEEE80211_BAND_2GHZ, | 1369 | wlcore_set_ht_cap(wl, IEEE80211_BAND_2GHZ, |
1356 | &wl18xx_siso20_ht_cap); | 1370 | &wl18xx_siso20_ht_cap); |