diff options
| author | yeshwanth sriram guntuka <ysriramg@codeaurora.org> | 2016-12-16 12:17:41 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-01-06 20:50:39 -0800 |
| commit | e202959408622e7f8652e03e92257b2e089fcb6a (patch) | |
| tree | 0da63e420429036d0a2896d7e9483f97e10673dd | |
| parent | 09695769e5a0c7b6518caf56bce7bd296f57ff38 (diff) | |
qcacld-3.0: Downgrade WMM AC for data frames for invalid tspec
qcacld-2.0 to qcacld-3.0 propagation
As per the current implementation wmmAcTspecValid is reset during roaming
and set after establishing TSpec but currently wmmAcTspecValid is not
considered before classifying the data frames based on AC and UP.
Due to above issue after roaming we are still sending packets with UP
for which tspec session is not established.
Fix above issue by checking wmmAcTspecValid for AC before
classifying the frame.
Change-Id: I37039fa568696f0861b02d094c3a513dbc2b9967
CRs-Fixed: 915555
| -rw-r--r-- | core/hdd/src/wlan_hdd_assoc.c | 7 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_wmm.c | 12 | ||||
| -rw-r--r-- | core/sme/inc/sme_api.h | 23 | ||||
| -rw-r--r-- | core/sme/src/common/sme_api.c | 14 |
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 /** |
