summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManikandan Mohan <manikand@qca.qualcomm.com>2015-04-03 14:22:20 -0700
committerAnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com>2015-04-06 16:27:29 +0530
commiteea8fbc71b682f54d314654c18b6d26c774625cb (patch)
treef05517477ad1872e3b8fffe65fc6e93856f5248d
parent8511ac061fbe7c0ebc14dba7344f10326a4bef3d (diff)
qcacld: Set WMM from hostapd.conf for SAP
Enable control of WMM from hostapd.conf for 11b/g/a SAP mode. For 11n/ac WMM is enabled by default. Change-Id: I66a67f9f07739ffc0f6f1a4651056099455d1d4a CRs-fixed: 817831
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg80211.h2
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c18
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c3
3 files changed, 22 insertions, 1 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index 2604d121841a..ecc70170a9d4 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -78,6 +78,8 @@
#define BLACKLIST_OUI_TYPE "\x00\x50\x00\x00"
#define WHITELIST_OUI_TYPE "\x00\x50\x00\x01"
#define WPA_OUI_TYPE_SIZE 4
+#define WMM_OUI_TYPE "\x00\x50\xf2\x02\x01"
+#define WMM_OUI_TYPE_SIZE 5
#define WLAN_BSS_MEMBERSHIP_SELECTOR_HT_PHY 127
#define BASIC_RATE_MASK 0x80
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 6cc8fce6d685..e50f73e17c7a 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -8213,6 +8213,7 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
v_SINT_t i;
hdd_config_t *iniConfig;
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pHostapdAdapter);
+ tSmeConfigParams sme_config;
#ifdef WLAN_FEATURE_11AC
v_BOOL_t sapForce11ACFor11n =
#ifdef WLAN_FEATURE_MBSSID
@@ -8233,6 +8234,8 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
clear_bit(ACS_IN_PROGRESS, &pHddCtx->g_event_flags);
pConfig = &pHostapdAdapter->sessionCtx.ap.sapConfig;
+ vos_mem_zero(&sme_config, sizeof (tSmeConfigParams));
+ sme_GetConfigParam(pHddCtx->hHal, &sme_config);
pBeacon = pHostapdAdapter->sessionCtx.ap.beacon;
@@ -8458,6 +8461,7 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
(WLAN_HDD_GET_AP_CTX_PTR(pHostapdAdapter))->ucEncryptType =
eCSR_ENCRYPT_TYPE_NONE;
+
pConfig->RSNWPAReqIELength = 0;
memset(&pConfig->RSNWPAReqIE[0], 0, sizeof(pConfig->RSNWPAReqIE));
pIe = wlan_hdd_cfg80211_get_ie_ptr(pBeacon->tail, pBeacon->tail_len,
@@ -8683,6 +8687,17 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
}
wlan_hdd_set_sapHwmode(pHostapdAdapter);
+ /* Override hostapd.conf wmm_enabled only for 11n and 11AC configs (IOT)
+ * As per spec 11n/11AC STA are QOS STA and may not connect to nonQOS 11n AP
+ * Default enable QOS for SAP
+ */
+ sme_config.csrConfig.WMMSupportMode = eCsrRoamWmmAuto;
+ pIe = wlan_hdd_get_vendor_oui_ie_ptr(WMM_OUI_TYPE, WMM_OUI_TYPE_SIZE,
+ pBeacon->tail, pBeacon->tail_len);
+ if (!pIe && (pConfig->SapHw_mode == eCSR_DOT11_MODE_11a ||
+ pConfig->SapHw_mode == eCSR_DOT11_MODE_11g ||
+ pConfig->SapHw_mode == eCSR_DOT11_MODE_11b))
+ sme_config.csrConfig.WMMSupportMode = eCsrRoamWmmNoQos;
#ifdef WLAN_FEATURE_11AC
/* Overwrite the hostapd setting for HW mode only for 11ac.
@@ -8810,6 +8825,9 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
(WLAN_HDD_GET_AP_CTX_PTR(pHostapdAdapter))->dfs_cac_block_tx = VOS_TRUE;
+ /* Apply updated SME config before start BSS */
+ sme_UpdateConfig(pHddCtx->hHal, &sme_config);
+
status = WLANSAP_StartBss(
#ifdef WLAN_FEATURE_MBSSID
WLAN_HDD_GET_SAP_CTX_PTR(pHostapdAdapter),
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index c019df1a69e7..2b92a7e27e27 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -1620,7 +1620,8 @@ eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pPa
if(pParam)
{
pMac->roam.configParam.WMMSupportMode = pParam->WMMSupportMode;
- cfgSetInt(pMac, WNI_CFG_WME_ENABLED, pParam->WMMSupportMode);
+ cfgSetInt(pMac, WNI_CFG_WME_ENABLED,
+ (pParam->WMMSupportMode == eCsrRoamWmmNoQos)? 0:1);
pMac->roam.configParam.Is11eSupportEnabled = pParam->Is11eSupportEnabled;
pMac->roam.configParam.FragmentationThreshold = pParam->FragmentationThreshold;
pMac->roam.configParam.Is11dSupportEnabled = pParam->Is11dSupportEnabled;