diff options
| author | Kabilan Kannan <kabilank@qca.qualcomm.com> | 2016-01-27 17:30:05 -0800 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-01-29 15:24:40 +0530 |
| commit | 6d9f9130ad7a236a77176d5825f2e52ff1fb2e53 (patch) | |
| tree | f3648bf5f0f8c3588dd9e1eddd6033bf3ceedcfa | |
| parent | 3e2ce08e445cbc26e9ec02c1a88b113a7f41914d (diff) | |
qcacld-2.0: Support NSS configuration for TDLS from user space
TDLS NSS can be changed dynamically by the user, if that happens
the newer NSS value needs to be recorded in the MAC context and
should be used to form TDLS management frames.
Update driver to keep the user configured NSS value in the MAC
context and uses the NSS value in the tdls protocol engine
to construct management frames.
Change-Id: I4098e3c5e3a03c4de6ae40c837a5616613623979
CRs-Fixed: 968106
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 7 | ||||
| -rw-r--r-- | CORE/MAC/inc/aniGlobal.h | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessTdls.c | 2 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 1 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 16 |
5 files changed, 27 insertions, 0 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index c1a958e898e6..d39679686923 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -5137,6 +5137,13 @@ static int drv_cmd_set_antenna_mode(hdd_adapter_t *adapter, hdd_ctx->current_antenna_mode = HDD_ANTENNA_MODE_2X2; } + /* Update the user requested nss in the mac context. + * This will be used in tdls protocol engine to form tdls + * Management frames. + */ + sme_update_user_configured_nss( + hdd_ctx->hHal, + hdd_ctx->current_antenna_mode); } exit: diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h index 4a7a81a8c7d4..34f3904ad43f 100644 --- a/CORE/MAC/inc/aniGlobal.h +++ b/CORE/MAC/inc/aniGlobal.h @@ -1256,6 +1256,7 @@ typedef struct sAniSirGlobal bool per_band_chainmask_supp; struct vdev_type_nss vdev_type_nss_2g; struct vdev_type_nss vdev_type_nss_5g; + uint8_t user_configured_nss; t_auth_ack_status auth_ack_status; bool first_scan_done; int8_t first_scan_bucket_threshold; diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c index 527a3101a4d2..e0da5e1d19f9 100644 --- a/CORE/MAC/src/pe/lim/limProcessTdls.c +++ b/CORE/MAC/src/pe/lim/limProcessTdls.c @@ -571,6 +571,7 @@ static void PopulateDot11fTdlsHtVhtCap(tpAniSirGlobal pMac, uint32 selfDot11Mode else nss = pMac->vdev_type_nss_2g.tdls; + nss = VOS_MIN(nss, pMac->user_configured_nss); if (IS_DOT11_MODE_HT(selfDot11Mode)) { /* Include HT Capability IE */ @@ -2235,6 +2236,7 @@ limTdlsPopulateMatchingRateSet(tpAniSirGlobal pMac, nss = pMac->vdev_type_nss_5g.tdls; else nss = pMac->vdev_type_nss_2g.tdls; + nss = VOS_MIN(nss, pMac->user_configured_nss); //compute the matching MCS rate set, if peer is 11n capable and self mode is 11n #ifdef FEATURE_WLAN_TDLS if (pStaDs->mlmStaContext.htCapability) diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index 7e2562db1e16..a448ca307034 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -4438,6 +4438,7 @@ void sme_set_pdev_ht_vht_ies(tHalHandle hHal, bool enable2x2); void sme_update_vdev_type_nss(tHalHandle hal, uint8_t max_supp_nss, uint32_t vdev_type_nss, eCsrBand band); +void sme_update_user_configured_nss(tHalHandle hal, uint8_t nss); void sme_set_vdev_nss(tHalHandle hal, bool enable2x2); void sme_set_per_band_chainmask_supp(tHalHandle hal, bool val); void sme_set_lte_coex_supp(tHalHandle hal, bool val); diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index 3457ba7f6ddf..8558d544905a 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -17463,6 +17463,20 @@ void sme_SetDefDot11Mode(tHalHandle hal) tpAniSirGlobal mac_ctx = PMAC_STRUCT( hal ); csrSetDefaultDot11Mode(mac_ctx); } + +/** + * sme_update_user_configured_nss() - sets the nss based on user request + * @hal: Pointer to HAL + * @nss: number of streams + * + * Return: None + */ +void sme_update_user_configured_nss(tHalHandle hal, uint8_t nss) +{ + tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal); + mac_ctx->user_configured_nss = nss; +} + /** * sme_set_vdev_nss() - sets the vdev nss based on INI * @hal: Pointer to HAL @@ -17490,6 +17504,7 @@ void sme_set_vdev_nss(tHalHandle hal, bool enable2x2) nss_val = 1; coex = 0; } + mac_ctx->user_configured_nss = nss_val; vdev_nss = &mac_ctx->vdev_type_nss_2g; @@ -17542,6 +17557,7 @@ void sme_update_vdev_type_nss(tHalHandle hal, uint8_t max_supp_nss, vdev_nss->ibss = VOS_MIN(max_supp_nss, CFG_IBSS_NSS(vdev_type_nss)); vdev_nss->tdls = VOS_MIN(max_supp_nss, CFG_TDLS_NSS(vdev_type_nss)); vdev_nss->ocb = VOS_MIN(max_supp_nss, CFG_OCB_NSS(vdev_type_nss)); + mac_ctx->user_configured_nss = max_supp_nss; smsLog(mac_ctx, LOG1, "band %d NSS: sta %d sap %d cli %d go %d dev %d ibss %d tdls %d ocb %d", |
