summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandeep Puligilla <spuligil@qti.qualcomm.com>2014-03-26 23:22:38 -0700
committerPitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com>2014-04-15 02:06:27 +0530
commitef47cb0e232649ca21ffb98eaac319c57ef7713e (patch)
tree5d0f15e9352e444241225dcfa2344b1d35537e80
parentc5a6985924702d2bf41a61a3efd937fb2d91916e (diff)
wlan:Sessionize WME configuration
If device in STA mode connects to an AP having WME disabled then CSR disabling WME CFG item which is getting reflected in SAP mode i.e WME is disabled for both modes while operating in concurrency mode. WME CFG item is not sessionized and it is getting used commonly in SAP and STA mode. As part of this change WME configuration is sessionized. Change-Id: I9d033b3aea7274dfc9df185f24b32cdf76c1417b CRs-Fixed: 573384
-rw-r--r--CORE/MAC/inc/sirApi.h3
-rw-r--r--CORE/MAC/src/pe/lim/limProcessCfgUpdates.c22
-rw-r--r--CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c2
-rw-r--r--CORE/MAC/src/pe/lim/limSerDesUtils.c12
-rw-r--r--CORE/SME/inc/csrInternal.h2
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c32
6 files changed, 62 insertions, 11 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 0eb790135cbe..045a1f000ad6 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -1123,7 +1123,8 @@ typedef struct sSirSmeJoinReq
tANI_U8 htSmps;
tANI_U8 isAmsduSupportInAMPDU;
-
+ tAniBool isWMEenabled;
+ tAniBool isQosEnabled;
tAniTitanCBNeighborInfo cbNeighbors;
tAniBool spectrumMgtIndicator;
tSirMacPowerCapInfo powerCap;
diff --git a/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c b/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c
index 9aefc5a8c29c..08c9dbc8f6d6 100644
--- a/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c
+++ b/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c
@@ -735,9 +735,13 @@ limUpdateConfig(tpAniSirGlobal pMac,tpPESession psessionEntry)
limLog(pMac, LOGP, FL("cfg get short preamble failed"));
psessionEntry->beaconParams.fShortPreamble = (val) ? 1 : 0;
- if (wlan_cfgGetInt(pMac, WNI_CFG_WME_ENABLED, &val) != eSIR_SUCCESS)
- limLog(pMac, LOGP, FL("cfg get wme enabled failed"));
- psessionEntry->limWmeEnabled = (val) ? 1 : 0;
+ /* In STA case this parameter is filled during the join request */
+ if (psessionEntry->limSystemRole == eLIM_AP_ROLE)
+ {
+ if (wlan_cfgGetInt(pMac, WNI_CFG_WME_ENABLED, &val) != eSIR_SUCCESS)
+ limLog(pMac, LOGP, FL("cfg get wme enabled failed"));
+ psessionEntry->limWmeEnabled = (val) ? 1 : 0;
+ }
if (wlan_cfgGetInt(pMac, WNI_CFG_WSM_ENABLED, &val) != eSIR_SUCCESS)
limLog(pMac, LOGP, FL("cfg get wsm enabled failed"));
@@ -748,11 +752,13 @@ limUpdateConfig(tpAniSirGlobal pMac,tpPESession psessionEntry)
PELOGE(limLog(pMac, LOGE, FL("Can't enable WSM without WME"));)
psessionEntry->limWsmEnabled = 0;
}
-
- if (wlan_cfgGetInt(pMac, WNI_CFG_QOS_ENABLED, &val) != eSIR_SUCCESS)
- limLog(pMac, LOGP, FL("cfg get qos enabled failed"));
- psessionEntry->limQosEnabled = (val) ? 1 : 0;
-
+ /* In STA , this parameter is filled during the join request */
+ if (psessionEntry->limSystemRole== eLIM_AP_ROLE)
+ {
+ if (wlan_cfgGetInt(pMac, WNI_CFG_QOS_ENABLED, &val) != eSIR_SUCCESS)
+ limLog(pMac, LOGP, FL("cfg get qos enabled failed"));
+ psessionEntry->limQosEnabled = (val) ? 1 : 0;
+ }
if (wlan_cfgGetInt(pMac, WNI_CFG_HCF_ENABLED, &val) != eSIR_SUCCESS)
limLog(pMac, LOGP, FL("cfg get hcf enabled failed"));
psessionEntry->limHcfEnabled = (val) ? 1 : 0;
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index d1c6256e328b..9aa3de142d41 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -1768,6 +1768,8 @@ __limProcessSmeJoinReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf)
psessionEntry->bssType = pSmeJoinReq->bsstype;
psessionEntry->statypeForBss = STA_ENTRY_PEER;
+ psessionEntry->limWmeEnabled = pSmeJoinReq->isWMEenabled;
+ psessionEntry->limQosEnabled = pSmeJoinReq->isQosEnabled;
/* Copy the dot 11 mode in to the session table */
diff --git a/CORE/MAC/src/pe/lim/limSerDesUtils.c b/CORE/MAC/src/pe/lim/limSerDesUtils.c
index d24f2fdb32bc..1490f76ef796 100644
--- a/CORE/MAC/src/pe/lim/limSerDesUtils.c
+++ b/CORE/MAC/src/pe/lim/limSerDesUtils.c
@@ -1326,6 +1326,18 @@ limJoinReqSerDes(tpAniSirGlobal pMac, tpSirSmeJoinReq pJoinReq, tANI_U8 *pBuf)
if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
return eSIR_FAILURE;
+ pJoinReq->isWMEenabled = (tAniBool)limGetU32(pBuf);
+ pBuf += sizeof(tAniBool);
+ len -= sizeof(tAniBool);
+ if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
+ return eSIR_FAILURE;
+
+ pJoinReq->isQosEnabled = (tAniBool)limGetU32(pBuf);
+ pBuf += sizeof(tAniBool);
+ len -= sizeof(tAniBool);
+ if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
+ return eSIR_FAILURE;
+
// Extract Titan CB Neighbor BSS info
pJoinReq->cbNeighbors.cbBssFoundPri = *pBuf;
pBuf++;
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 0432777c7b91..e7a7ec8b5b67 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -944,6 +944,8 @@ typedef struct tagCsrRoamSession
tBkidCandidateInfo BkidCandidateInfo[CSR_MAX_BKID_ALLOWED];
#endif
tANI_BOOLEAN fWMMConnection;
+ tANI_BOOLEAN fQOSConnection;
+
#ifdef FEATURE_WLAN_BTAMP_UT_RF
//To retry a join later when it fails if so desired
vos_timer_t hTimerJoinRetry;
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 7cd98c1cd92a..b5ab2146cc19 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -3440,8 +3440,7 @@ eHalStatus csrSetQosToCfg( tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrMediaAcc
}
//save the WMM setting for later use
pMac->roam.roamSession[sessionId].fWMMConnection = (tANI_BOOLEAN)WmeEnabled;
- status = ccmCfgSetInt(pMac, WNI_CFG_QOS_ENABLED, QoSEnabled, NULL, eANI_BOOLEAN_FALSE);
- status = ccmCfgSetInt(pMac, WNI_CFG_WME_ENABLED, WmeEnabled, NULL, eANI_BOOLEAN_FALSE);
+ pMac->roam.roamSession[sessionId].fQOSConnection = (tANI_BOOLEAN)QoSEnabled;
return (status);
}
static eHalStatus csrGetRateSet( tpAniSirGlobal pMac, tCsrRoamProfile *pProfile, eCsrPhyMode phyMode, tSirBssDescription *pBssDesc,
@@ -13290,6 +13289,35 @@ eHalStatus csrSendJoinReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirBssDe
*pBuf = (tANI_U8)pMac->roam.configParam.isAmsduSupportInAMPDU;
pBuf++;
+ // WME
+ if(pMac->roam.roamSession[sessionId].fWMMConnection)
+ {
+ //WME enabled
+ dwTmp = pal_cpu_to_be32(TRUE);
+ vos_mem_copy(pBuf, &dwTmp, sizeof(tAniBool));
+ pBuf += sizeof(tAniBool);
+ }
+ else
+ {
+ dwTmp = pal_cpu_to_be32(FALSE);
+ vos_mem_copy(pBuf, &dwTmp, sizeof(tAniBool));
+ pBuf += sizeof(tAniBool);
+ }
+
+ // QOS
+ if(pMac->roam.roamSession[sessionId].fQOSConnection)
+ {
+ //QOS enabled
+ dwTmp = pal_cpu_to_be32(TRUE);
+ vos_mem_copy(pBuf, &dwTmp, sizeof(tAniBool));
+ pBuf += sizeof(tAniBool);
+ }
+ else
+ {
+ dwTmp = pal_cpu_to_be32(FALSE);
+ vos_mem_copy(pBuf, &dwTmp, sizeof(tAniBool));
+ pBuf += sizeof(tAniBool);
+ }
//BssDesc
csrPrepareJoinReassocReqBuffer( pMac, pBssDescription, pBuf,
(tANI_U8)pProfile->uapsd_mask);