summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaveen Rawat <naveenrawat@codeaurora.org>2016-10-10 15:25:50 -0700
committerqcabuildsw <qcabuildsw@localhost>2016-10-17 21:58:41 -0700
commit1620ecb8eee3571508cf3079a18ed6bad6ea4946 (patch)
treeed14429604313907e6ce8f286d1937a00c69edcb
parente15c208e1787b4a0c3426e84262fb5d8aa911278 (diff)
qcacld-3.0: Fix HT/VHT channel width for 2.4/5Ghz band
In function lim_send_ies_per_band, use ini configuration to fix HT channel width for 2.4/5 GHz band. For 2.4GHz set VHT channel width to 0. Change-Id: Ided8628cc78ffbea7c9c9f5a16815daffffca37c CRs-Fixed: 1076244
-rw-r--r--core/mac/src/pe/lim/lim_utils.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c
index f347e201eec3..4a818586ca21 100644
--- a/core/mac/src/pe/lim/lim_utils.c
+++ b/core/mac/src/pe/lim/lim_utils.c
@@ -6543,9 +6543,9 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
{
uint8_t ht_caps[DOT11F_IE_HTCAPS_MIN_LEN + 2] = {0};
uint8_t vht_caps[DOT11F_IE_VHTCAPS_MAX_LEN + 2] = {0};
- tHtCaps *p_ht_cap = (tHtCaps *)ht_caps;
+ tHtCaps *p_ht_cap = (tHtCaps *)(&ht_caps[2]);
tSirMacVHTCapabilityInfo *p_vht_cap =
- (tSirMacVHTCapabilityInfo *)vht_caps;
+ (tSirMacVHTCapabilityInfo *)(&vht_caps[2]);
/*
* Note: Do not use Dot11f VHT structure, since 1 byte present flag in
@@ -6558,6 +6558,14 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
DOT11F_IE_HTCAPS_MIN_LEN + 2);
/* Get LDPC and over write for 2G */
p_ht_cap->advCodingCap = lim_get_rx_ldpc(mac_ctx, CHAN_ENUM_6);
+ /* Get self cap for HT40 support in 2G */
+ if (mac_ctx->roam.configParam.channelBondingMode24GHz) {
+ p_ht_cap->supportedChannelWidthSet = 1;
+ p_ht_cap->shortGI40MHz = 1;
+ } else {
+ p_ht_cap->supportedChannelWidthSet = 0;
+ p_ht_cap->shortGI40MHz = 0;
+ }
lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HTCAPS,
CDS_BAND_2GHZ, &ht_caps[2], DOT11F_IE_HTCAPS_MIN_LEN);
/*
@@ -6565,6 +6573,14 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
* is available in all reg domains.
*/
p_ht_cap->advCodingCap = lim_get_rx_ldpc(mac_ctx, CHAN_ENUM_64);
+ /* Get self cap for HT40 support in 5G */
+ if (mac_ctx->roam.configParam.channelBondingMode5GHz) {
+ p_ht_cap->supportedChannelWidthSet = 1;
+ p_ht_cap->shortGI40MHz = 1;
+ } else {
+ p_ht_cap->supportedChannelWidthSet = 0;
+ p_ht_cap->shortGI40MHz = 0;
+ }
lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HTCAPS,
CDS_BAND_5GHZ, &ht_caps[2], DOT11F_IE_HTCAPS_MIN_LEN);
@@ -6574,6 +6590,10 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
lim_set_vht_caps(mac_ctx, session, vht_caps,
DOT11F_IE_VHTCAPS_MIN_LEN + 2);
p_vht_cap->ldpcCodingCap = lim_get_rx_ldpc(mac_ctx, CHAN_ENUM_6);
+ /* Self VHT 80/160/80+80 channel width for 2G is 0 */
+ p_vht_cap->supportedChannelWidthSet = 0;
+ p_vht_cap->shortGI80MHz = 0;
+ p_vht_cap->shortGI160and80plus80MHz = 0;
lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_VHTCAPS,
CDS_BAND_2GHZ, &vht_caps[2], DOT11F_IE_VHTCAPS_MIN_LEN);
@@ -6582,6 +6602,7 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
* is available in all reg domains.
*/
p_vht_cap->ldpcCodingCap = lim_get_rx_ldpc(mac_ctx, CHAN_ENUM_64);
+ /* Self VHT channel width for 5G is already negotiated with FW */
lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_VHTCAPS,
CDS_BAND_5GHZ, &vht_caps[2], DOT11F_IE_VHTCAPS_MIN_LEN);