summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/src/wlan_hdd_assoc.c7
-rw-r--r--core/hdd/src/wlan_hdd_wmm.c12
-rw-r--r--core/sme/inc/sme_api.h23
-rw-r--r--core/sme/src/common/sme_api.c14
4 files changed, 51 insertions, 5 deletions
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index 0ae82a0caaf6..4833b12a33f6 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -2099,8 +2099,6 @@ static QDF_STATUS hdd_roam_set_key_complete_handler(hdd_adapter_t *pAdapter,
bool fConnected = false;
QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
- tHalHandle hal_ctx = WLAN_HDD_GET_HAL_CTX(pAdapter);
- tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal_ctx);
ENTER();
@@ -2158,8 +2156,9 @@ static QDF_STATUS hdd_roam_set_key_complete_handler(hdd_adapter_t *pAdapter,
* only if ptk_installed is true. So, make
* ptk_installed to true in case of 11R roaming.
*/
- if (csr_neighbor_roam_is11r_assoc(mac_ctx,
- pAdapter->sessionId))
+ if (sme_neighbor_roam_is11r_assoc(
+ WLAN_HDD_GET_HAL_CTX(pAdapter),
+ pAdapter->sessionId))
pHddStaCtx->conn_info.ptk_installed =
true;
} else {
diff --git a/core/hdd/src/wlan_hdd_wmm.c b/core/hdd/src/wlan_hdd_wmm.c
index f9256a7ad064..dc26b9d62fe5 100644
--- a/core/hdd/src/wlan_hdd_wmm.c
+++ b/core/hdd/src/wlan_hdd_wmm.c
@@ -61,6 +61,7 @@
#include <wlan_hdd_hostapd.h>
#include <wlan_hdd_softap_tx_rx.h>
#include <cds_sched.h>
+#include "sme_api.h"
#define WLAN_HDD_MAX_DSCP 0x3f
@@ -1970,6 +1971,17 @@ QDF_STATUS hdd_wmm_connect(hdd_adapter_t *pAdapter,
pAdapter->hddWmmStatus.wmmAcStatus[ac].
wmmAcAccessAllowed = true;
}
+ if (!pRoamInfo->fReassocReq &&
+ !sme_neighbor_roam_is11r_assoc(
+ WLAN_HDD_GET_HAL_CTX(pAdapter),
+ pAdapter->sessionId) &&
+ !sme_roam_is_ese_assoc(pRoamInfo)
+ ) {
+ pAdapter->hddWmmStatus.wmmAcStatus[ac].
+ wmmAcTspecValid = false;
+ pAdapter->hddWmmStatus.wmmAcStatus[ac].
+ wmmAcAccessAllowed = false;
+ }
} else {
hdd_info("ac %d off", ac);
/* admission is not required so access is allowed */
diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h
index 1b8bdf4367f0..e1a06be45c99 100644
--- a/core/sme/inc/sme_api.h
+++ b/core/sme/inc/sme_api.h
@@ -1333,7 +1333,28 @@ QDF_STATUS sme_update_short_retry_limit_threshold(tHalHandle hal_handle,
struct sme_short_retry_limit *short_retry_limit_th);
QDF_STATUS sme_update_long_retry_limit_threshold(tHalHandle hal_handle,
struct sme_long_retry_limit *long_retry_limit_th);
-
+/**
+ * sme_roam_is_ese_assoc() - Check if association type is ESE
+ * @roam_info: Pointer to roam info
+ *
+ * Return: true if ESE Association, false otherwise.
+ */
+#ifdef FEATURE_WLAN_ESE
+bool sme_roam_is_ese_assoc(tCsrRoamInfo *roam_info);
+#else
+static inline bool sme_roam_is_ese_assoc(tCsrRoamInfo *roam_info)
+{
+ return false;
+}
+#endif
+/**
+ * sme_neighbor_roam_is11r_assoc() - Check if association type is 11R
+ * @hal_ctx: HAL handle
+ * @session_id: session id
+ *
+ * Return: true if 11r Association, false otherwise.
+ */
+bool sme_neighbor_roam_is11r_assoc(tHalHandle hal_ctx, uint8_t session_id);
/**
* sme_update_sta_inactivity_timeout(): Update sta_inactivity_timeout to FW
* @hal: Handle returned by mac_open
diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c
index c4d8bf465751..8c5568e13feb 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -17089,6 +17089,20 @@ QDF_STATUS sme_set_lost_link_info_cb(tHalHandle hal,
}
return status;
}
+#ifdef FEATURE_WLAN_ESE
+bool sme_roam_is_ese_assoc(tCsrRoamInfo *roam_info)
+{
+ return roam_info->isESEAssoc;
+}
+#endif
+
+bool sme_neighbor_roam_is11r_assoc(tHalHandle hal_ctx,
+ uint8_t session_id)
+{
+ tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal_ctx);
+ return csr_neighbor_roam_is11r_assoc(mac_ctx, session_id);
+
+}
#ifdef WLAN_FEATURE_WOW_PULSE
/**