From 037f0d9a3fa86337c75764b29606bbb9a941b595 Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Tue, 19 Jan 2021 23:04:46 -0800 Subject: [PATCH 01/18] qcacld-3.0: Config support for WMM based TXOP feature Add configuration support for WMM based TXOP feature. Change-Id: Ide52b7d4b7bca590515e8697506d2b52744a7fa6 CRs-Fixed: 2947604 --- components/mlme/core/src/wlan_mlme_main.c | 2 ++ .../dispatcher/inc/cfg_mlme_edca_params.h | 24 +++++++++++++++++++ .../dispatcher/inc/wlan_mlme_public_struct.h | 1 + core/wma/src/wma_dev_if.c | 10 ++++++++ 4 files changed, 37 insertions(+) diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 3af2f88ad195..929a936c5d14 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -667,6 +667,8 @@ mlme_init_qos_edca_params(struct wlan_objmgr_psoc *psoc, edca_params->enable_edca_params = cfg_get(psoc, CFG_EDCA_ENABLE_PARAM); + edca_params->enable_wmm_txop = + cfg_get(psoc, CFG_ENABLE_WMM_TXOP); edca_params->edca_ac_vo.vo_cwmin = cfg_get(psoc, CFG_EDCA_VO_CWMIN); edca_params->edca_ac_vo.vo_cwmax = diff --git a/components/mlme/dispatcher/inc/cfg_mlme_edca_params.h b/components/mlme/dispatcher/inc/cfg_mlme_edca_params.h index b9d0801d509f..14ab0046367c 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme_edca_params.h +++ b/components/mlme/dispatcher/inc/cfg_mlme_edca_params.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2011-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -481,6 +482,28 @@ 0, \ "Enable edca parameter") +/* + * + * enable_wmm_txop - Enable WMM based txop feature + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to enable/disable the WMM based txop feature in FW + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal + * + * + */ +#define CFG_ENABLE_WMM_TXOP CFG_INI_BOOL( \ + "enable_wmm_txop", \ + 1, \ + "Enable WMM TXOP") + /* * * gEdcaVoCwmin - Set Cwmin value for QCA_WLAN_AC_VO @@ -838,6 +861,7 @@ CFG(CFG_EDCA_BK_AIFS) \ CFG(CFG_EDCA_BE_CWMIN) \ CFG(CFG_EDCA_BE_CWMAX) \ + CFG(CFG_ENABLE_WMM_TXOP) \ CFG(CFG_EDCA_BE_AIFS) #endif /* __CFG_MLME_EDCA__PARAM_H */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 48d648184f6b..328d3edf40f4 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -376,6 +376,7 @@ struct wlan_mlme_edca_params { struct mlme_cfg_str etsi_acvo_b; bool enable_edca_params; + bool enable_wmm_txop; struct mlme_edca_ac_vo edca_ac_vo; struct mlme_edca_ac_vi edca_ac_vi; struct mlme_edca_ac_bk edca_ac_bk; diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index 68da62cca50f..507fd43a2967 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2538,6 +2538,16 @@ QDF_STATUS wma_post_vdev_create_setup(struct wlan_objmgr_vdev *vdev) status); } + wma_debug("Setting WMI_VDEV_PARAM_WMM_TXOP_ENABLE: %d", + mac->mlme_cfg->edca_params.enable_wmm_txop); + + status = wma_vdev_set_param(wma_handle->wmi_handle, vdev_id, + WMI_VDEV_PARAM_WMM_TXOP_ENABLE, + mac->mlme_cfg->edca_params.enable_wmm_txop); + + if (QDF_IS_STATUS_ERROR(status)) + wma_err("failed to set WMM TXOP (status = %d)", status); + wma_debug("Setting WMI_VDEV_PARAM_DISCONNECT_TH: %d", mac->mlme_cfg->gen.dropped_pkt_disconnect_thresh); status = wma_vdev_set_param( From 7c26b50266d16b213bab8f845a056db5dad6c154 Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Thu, 27 Oct 2022 08:47:48 -0700 Subject: [PATCH 02/18] Release 2.0.8.31K Release 2.0.8.31K Change-Id: I32fd84670458229fb0fad938d339b779011a20ec CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 4e28b018aad0..e0c669ad5a7e 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "J" +#define QWLAN_VERSION_EXTRA "K" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31J" +#define QWLAN_VERSIONSTR "2.0.8.31K" #endif /* QWLAN_VERSION_H */ From 413aa5ef82badb017966321c82fd6967d2cd7c33 Mon Sep 17 00:00:00 2001 From: Rahul Gusain Date: Mon, 18 Jul 2022 16:20:29 +0530 Subject: [PATCH 03/18] qcacld-3.0: Make NAN high priority than TDLS in legacy platforms Firmware handles all NAN concurrencies in the platforms which don't advertise the WMI service cabability WMI_SERVICE_NAN_DISABLE_SUPPORT. Host takes care of the NAN concurrency if the capability is advertised by firmware. But there can be some legacy targets where firmware wants to offload NAN+TDLS concurrency alone to the host and it takes care of rest of the concurrencies. This is to make NAN of higher priority and disable TDLS when NAN is active. Currently, TDLS is of more priority than NAN and it can't change the order as it can't disable TDLS to change the priority. Currently, driver doesn't parse the NAN messages(even NAN enable request) in such platforms. Parse the NAN messages and disable TDLS upon NAN enable request. Rely on NAN state machine to allow/disallow new TDLS requests. This needs NAN enable status. Change-Id: Ie9c7c1cc2f1ed6328a31b93077c2928940fc3450 CRs-Fixed: 3263730 --- components/nan/core/src/nan_main.c | 11 +++++++++-- components/nan/dispatcher/src/nan_ucfg_api.c | 15 ++++++++++++--- os_if/nan/src/os_if_nan.c | 15 ++++++++------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/components/nan/core/src/nan_main.c b/components/nan/core/src/nan_main.c index 26bfcce48b7d..738cd08a1a07 100644 --- a/components/nan/core/src/nan_main.c +++ b/components/nan/core/src/nan_main.c @@ -885,7 +885,15 @@ fail: psoc_nan_obj->nan_social_ch_2g_freq = 0; psoc_nan_obj->nan_social_ch_5g_freq = 0; nan_set_discovery_state(psoc, NAN_DISC_DISABLED); - policy_mgr_check_n_start_opportunistic_timer(psoc); + if (ucfg_is_nan_dbs_supported(psoc)) + policy_mgr_check_n_start_opportunistic_timer(psoc); + + /* + * If FW respond with NAN enable failure, then TDLS should be enable + * again if there is TDLS connection exist earlier. + * decrement the active TDLS session. + */ + ucfg_tdls_notify_connect_failure(psoc); done: nan_conc_callback = psoc_nan_obj->cb_obj.nan_concurrency_update; @@ -1113,7 +1121,6 @@ bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint32_t nan_ch_freq) } return (NAN_DISC_DISABLED == nan_get_discovery_state(psoc) && - ucfg_is_nan_conc_control_supported(psoc) && policy_mgr_allow_concurrency(psoc, PM_NAN_DISC_MODE, nan_ch_freq, HW_MODE_20_MHZ)); } diff --git a/components/nan/dispatcher/src/nan_ucfg_api.c b/components/nan/dispatcher/src/nan_ucfg_api.c index 7b23364a52a8..f32734f19919 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -35,6 +35,7 @@ #include "cfg_nan.h" #include "wlan_mlme_api.h" #include "cfg_nan_api.h" +#include "wlan_tdls_ucfg_api.h" struct wlan_objmgr_psoc; struct wlan_objmgr_vdev; @@ -876,8 +877,16 @@ post_msg: if (req_type == NAN_ENABLE_REQ) { nan_set_discovery_state(psoc, NAN_DISC_DISABLED); - policy_mgr_check_n_start_opportunistic_timer( - psoc); + if (ucfg_is_nan_dbs_supported(psoc)) + policy_mgr_check_n_start_opportunistic_timer(psoc); + + /* + * If FW respond with NAN enable failure, then + * TDLS should be enable again if there is TDLS + * connection exist earlier. + * decrement the active TDLS session. + */ + ucfg_tdls_notify_connect_failure(psoc); } else if (req_type == NAN_DISABLE_REQ) { nan_disable_cleanup(psoc); } diff --git a/os_if/nan/src/os_if_nan.c b/os_if/nan/src/os_if_nan.c index a703a6730218..9a5996463cbd 100644 --- a/os_if/nan/src/os_if_nan.c +++ b/os_if/nan/src/os_if_nan.c @@ -37,6 +37,7 @@ #include "wlan_utility.h" #include "wlan_osif_request_manager.h" #include "wlan_mlme_ucfg_api.h" +#include "wlan_tdls_ucfg_api.h" #define NAN_CMD_MAX_SIZE 2048 @@ -2624,15 +2625,15 @@ int os_if_process_nan_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, } /* - * If target does not support NAN DBS, send request with type GENERIC. - * These will be treated as passthrough by the driver. This is to make - * sure that HW mode is not set to DBS by NAN Enable request. NAN state - * machine will remain unaffected in this case. + * If target does not support NAN DBS, stop the opportunistic timer. + * Opportunistic timer gets triggered as soon as a DBS use case is + * completed and hw_mode would be set to SMM when the timer(5 seconds) + * expires. + * This is to make sure that HW mode is not set to DBS by NAN Enable + * request. NAN state machine will remain unaffected in this case. */ - if (!NAN_CONCURRENCY_SUPPORTED(psoc)) { + if (!NAN_CONCURRENCY_SUPPORTED(psoc)) policy_mgr_check_and_stop_opportunistic_timer(psoc, vdev_id); - return os_if_nan_generic_req(psoc, tb); - } /* * Send all requests other than Enable/Disable as type GENERIC. From 271f2f91a7d95c1b9d92ad177fc6502551501606 Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Mon, 31 Oct 2022 14:34:23 -0700 Subject: [PATCH 04/18] Release 2.0.8.31L Release 2.0.8.31L Change-Id: If38f1d40a116199eba929ec33ca5277a19238e71 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index e0c669ad5a7e..b453246827de 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "K" +#define QWLAN_VERSION_EXTRA "L" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31K" +#define QWLAN_VERSIONSTR "2.0.8.31L" #endif /* QWLAN_VERSION_H */ From 72f37fd7014abbc15889a808f0fb9abc2f582403 Mon Sep 17 00:00:00 2001 From: Krupali Dhanvijay Date: Sun, 16 Oct 2022 22:06:11 +0530 Subject: [PATCH 05/18] qcacld-3.0: Update pmk for roamed AP to pmk cache table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Assume AP1 and AP2 are SPMK APs. For SPMK AP(s), Host should add an entry of an AP in PMK cache table like below in two cases only: Case 1. When DUT successfully associated with SPMK supported AP In this case host update “is_spmk_ap” flag in PMK table by parsing beacon of associated AP after successful connection. Case 2. When DUT successfully roamed to SPMK supported AP In this case host update “is_spmk_ap” flag in PMK table by parsing roam sync indication event. In case of connection with SPMK AP, Host selectively deletes PMK entry for other SPMK supported AP(s) on basis of “is_spmk_ap” flag and maintains only one entry for all SPMK AP(s). And host sends the same single PMK in RSO for further roaming to SPMK AP. Initially, DUT is connected with AP2. Then Disconnection happens with AP2 due to NUD failure. After disconnection, the upper layer sends flush PMK requests for AP1 and AP2. Host deletes old PMK entries for both APs. Now upper layer sends a set PMK request for AP2. Host adds AP2 entry in PMK cache table but host does not set "is_spmk_ap" flag in PMK table for this entry as DUT is not connected to AP2. Now host receives a connect request for AP1 from the upper layer. DUT successfully associated with AP1 by performing full SAE authentication. Host adds an entry for AP1 in the PMK cache table and sets "is_spmk_ap" flag for AP1 but fails to delete the entry for other SPMK AP(s), here AP2, from PMK cache table. This is because of "is_spmk_ap" flag is not set for AP2. At this point of time below is the PMK cache table entry for SPMK AP(s): The Host PMK cache table has two entries for two SPMK APs. BSSID PMK is_spmk_ap flag AP2 PMK2 0 AP1 PMK1 1 Now FW roams to AP2 using PMK1. Host process roam sync indication for AP2 and updates "is_spmk_ap" flag for AP2 in the PMK cache table. As Host has a stale entry for AP2 in the PMK cache table, Host sends AP2’s PMK (here PMK2) in RSO command which firmware will use for further roaming but roaming fails due to invalid PMK, as target SPMK AP expects PMK1 in reassociation request. To handle these scenarios, FW should send PMK info of roamed AP and host override stale entry for roamed AP (if any) with roamed AP's PMK in PMK cache table. Change-Id: I5e46d16a64aa05469ebc389df9b638351d02a1e0 CRs-Fixed: 3313884 --- core/sme/src/csr/csr_api_roam.c | 42 +++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 2d5aaeb43567..854b6c35a72e 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -21017,17 +21017,21 @@ static bool csr_is_sae_single_pmk_vsie_ap(struct bss_description *bss_des) * @mac_ctx: mac context * @session: Session * @vdev_id: session id + * @psk_pmk: pmk of roamed AP + * @pmk_len: pmk length * * Return: True if same pmk IE is present */ static void csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx, struct csr_roam_session *session, - uint8_t vdev_id) + uint8_t vdev_id, uint8_t *psk_pmk, + uint8_t pmk_len) { struct wlan_objmgr_vdev *vdev; struct mlme_pmk_info *pmk_info; tPmkidCacheInfo *pmkid_cache; + struct wlan_crypto_pmksa *roam_sync_pmksa; int32_t keymgmt; bool val, lookup_success; @@ -21052,9 +21056,28 @@ csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx, if (!val) goto end; - wlan_crypto_set_sae_single_pmk_bss_cap(vdev, - (struct qdf_mac_addr *)session->pConnectBssDesc->bssId, - true); + roam_sync_pmksa = qdf_mem_malloc(sizeof(*roam_sync_pmksa)); + if (roam_sync_pmksa) { + qdf_copy_macaddr(&roam_sync_pmksa->bssid, + (struct qdf_mac_addr *) + &session->pConnectBssDesc->bssId); + roam_sync_pmksa->single_pmk_supported = true; + roam_sync_pmksa->pmk_len = pmk_len; + qdf_mem_copy(roam_sync_pmksa->pmk, psk_pmk, + roam_sync_pmksa->pmk_len); + sme_debug("SPMK received for " QDF_MAC_ADDR_FMT + "pmk_len:%d", QDF_MAC_ADDR_REF( + roam_sync_pmksa->bssid.bytes), + roam_sync_pmksa->pmk_len); + /* update single pmk info for roamed ap to pmk table */ + wlan_crypto_set_sae_single_pmk_info(vdev, + roam_sync_pmksa); + + qdf_mem_zero(roam_sync_pmksa, sizeof(*roam_sync_pmksa)); + qdf_mem_free(roam_sync_pmksa); + } else { + goto end; + } pmkid_cache = qdf_mem_malloc(sizeof(*pmkid_cache)); if (!pmkid_cache) @@ -21107,7 +21130,8 @@ end: static inline void csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx, struct csr_roam_session *session, - uint8_t vdev_id) + uint8_t vdev_id, uint8_t *psk_pmk, + uint8_t pmk_len) { } #endif @@ -21330,8 +21354,12 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx, mac_ctx->psoc); mac_ctx->sme.set_connection_info_cb(false); - csr_check_and_set_sae_single_pmk_cap(mac_ctx, session, - session_id); + if (roam_synch_data->pmk_len) + csr_check_and_set_sae_single_pmk_cap( + mac_ctx, session, + session_id, + roam_synch_data->pmk, + roam_synch_data->pmk_len); if (ucfg_pkt_capture_get_pktcap_mode(mac_ctx->psoc)) ucfg_pkt_capture_record_channel(vdev); From 90e2bfade607a4742322ae6cbf2c5624eb8abc08 Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Mon, 7 Nov 2022 15:40:53 -0800 Subject: [PATCH 06/18] Release 2.0.8.31M Release 2.0.8.31M Change-Id: I4dcbbc9650b29024b3904bfc7ed03a5ae7ad9ad5 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index b453246827de..9407f03e550d 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "L" +#define QWLAN_VERSION_EXTRA "M" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31L" +#define QWLAN_VERSIONSTR "2.0.8.31M" #endif /* QWLAN_VERSION_H */ From a83914cf4ba8dc9c4f9e3df254f295b939d5cc53 Mon Sep 17 00:00:00 2001 From: Surabhi Vishnoi Date: Thu, 29 Sep 2022 15:06:20 +0530 Subject: [PATCH 07/18] qcacld-3.0: Reset roaming_in_progress when ROAM_HO_FAILED is received Currently, roaming_in_progress is set during ROAM_START event from firmware and reset after ROAM_SYNC_COMPLETE or ROAM_ABORT event. But there can be a scenario that firmware sends ROAM_START event followed by ROAM_HO_FAILED event which indicates that roaming is failed to host, so roaming_in_progress flag needs to be reset at ROAM_HO_FAILED otherwise subsequent data path related configuration and stats request from userspace will fail as they will assume that roaming is in progress. Change-Id: I413359a9152de11c56125192931ab446a0dd4727 CRs-Fixed: 3308567 --- core/wma/src/wma_scan_roam.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 63cc777ef924..19dc459dbe44 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -4723,6 +4723,8 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf, QDF_MAC_ADDR_REF(bssid.bytes)); wma_handle_hw_mode_transition(wma_handle, param_buf); wma_roam_ho_fail_handler(wma_handle, wmi_event->vdev_id, bssid); + wma_handle->interfaces[wmi_event->vdev_id].roaming_in_progress + = false; lim_sae_auth_cleanup_retry(wma_handle->mac_context, wmi_event->vdev_id); break; From c67e040058cff55ad2b275b4910e5b6b14888f2d Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Wed, 9 Nov 2022 08:49:55 -0800 Subject: [PATCH 08/18] Release 2.0.8.31N Release 2.0.8.31N Change-Id: I6871be4d6254857c3a348c8ad254a9cc7185d778 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 9407f03e550d..9bfee6b526e4 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "M" +#define QWLAN_VERSION_EXTRA "N" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31M" +#define QWLAN_VERSIONSTR "2.0.8.31N" #endif /* QWLAN_VERSION_H */ From 66b5db4552c007b9d8dcdf4d8f6bdd36adfa937d Mon Sep 17 00:00:00 2001 From: sandhu Date: Thu, 15 Sep 2022 12:21:25 -0700 Subject: [PATCH 09/18] qcacld-3.0: check staId index bound into timer array Check whether staId is not out of bound while accessing the timer array. Change-Id: I347c314a324934d4a62808551b1552aa4a76a5d7 CRs-Fixed: 3290301 --- core/mac/src/pe/lim/lim_timer_utils.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/mac/src/pe/lim/lim_timer_utils.c b/core/mac/src/pe/lim/lim_timer_utils.c index a43ba3293280..2e3892e5293c 100644 --- a/core/mac/src/pe/lim/lim_timer_utils.c +++ b/core/mac/src/pe/lim/lim_timer_utils.c @@ -751,11 +751,16 @@ lim_deactivate_and_change_per_sta_id_timer(struct mac_context *mac, uint32_t tim switch (timerId) { case eLIM_CNF_WAIT_TIMER: - if (tx_timer_deactivate - (&mac->lim.lim_timers.gpLimCnfWaitTimer[staId]) - != TX_SUCCESS) { + if (staId >= (mac->lim.maxStation + 1)) { + pe_err("Invalid staId = %d ", staId); + return; + } + + if (tx_timer_deactivate(&mac->lim.lim_timers.gpLimCnfWaitTimer[staId]) + != TX_SUCCESS) { pe_err("unable to deactivate CNF wait timer"); } + /* Change timer to reactivate it in future */ val = mac->mlme_cfg->sta.wait_cnf_timeout; val = SYS_MS_TO_TICKS(val); From 621346a8e7ea9ffe964a132cc5cee38e1c074b3e Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Thu, 10 Nov 2022 13:09:55 -0800 Subject: [PATCH 10/18] Release 2.0.8.31O Release 2.0.8.31O Change-Id: I6cb29ab57caf38a1d7a0c39c66895995c8ad2b10 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 9bfee6b526e4..f9682835cd9d 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "N" +#define QWLAN_VERSION_EXTRA "O" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31N" +#define QWLAN_VERSIONSTR "2.0.8.31O" #endif /* QWLAN_VERSION_H */ From 7eb816e34cee62ffed25a6a5a21add541eecbb72 Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Fri, 13 Aug 2021 15:16:20 +0530 Subject: [PATCH 11/18] qcacld-3.0: Disable MSCS feature in with "mscs_pkt_threshold=0" mscs_pkt_threshold - This ini specifies the Voice pkt count threshold to Send the MSCS action frame to AP. To disable MSCS feature in driver set mscs_pkt_threshold = 0 in ini file. Change-Id: Ie1d8d3f3289d8f41a16f187bf9256b959019d998 CRs-Fixed: 3262346 --- core/hdd/src/wlan_hdd_main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 2a1b2efd5349..1ee2bb2b65d9 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -10552,6 +10552,13 @@ void hdd_send_mscs_action_frame(struct hdd_context *hdd_ctx, uint64_t mscs_vo_pkt_delta; unsigned long tx_vo_pkts; + /* + * To disable MSCS feature in driver set mscs_pkt_threshold = 0 + * in ini file. + */ + if (!hdd_ctx->config->mscs_pkt_threshold) + return; + tx_vo_pkts = adapter->hdd_stats.tx_rx_stats.tx_classified_ac[SME_AC_VO]; if (!adapter->mscs_counter) From 4e4c1702bb8292d1da1d119f3c6493ff3f18f623 Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Thu, 11 Mar 2021 13:22:26 +0530 Subject: [PATCH 12/18] qcacld-3.0: Forward all vendor specific action frames to supplicant On reception of vendor specific action frames, host performs basic sanity on vendor specific action frames fields and then forwards to supplicant. Change-Id: Ib22b9a431411fff8128e461972b81b66688a0919 CRs-Fixed: 3262331 --- core/mac/inc/sir_mac_prot_def.h | 2 ++ .../mac/src/pe/lim/lim_process_action_frame.c | 31 ++++++------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/core/mac/inc/sir_mac_prot_def.h b/core/mac/inc/sir_mac_prot_def.h index a3f9e9f778ff..f124b5fb4be4 100644 --- a/core/mac/inc/sir_mac_prot_def.h +++ b/core/mac/inc/sir_mac_prot_def.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -134,6 +135,7 @@ /* block acknowledgment action frame types */ #define SIR_MAC_ACTION_VENDOR_SPECIFIC 9 #define SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7F +#define SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7E #define SIR_MAC_ACTION_P2P_SUBTYPE_PRESENCE_RSP 2 /* Public Action for 20/40 BSS Coexistence */ diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index 1a683db31d7d..24f8e406ee92 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -1606,7 +1606,6 @@ void lim_process_action_frame(struct mac_context *mac_ctx, int8_t rssi; uint32_t frame_len = WMA_GET_RX_PAYLOAD_LEN(rx_pkt_info); tpSirMacVendorSpecificFrameHdr vendor_specific; - uint8_t oui[] = { 0x00, 0x00, 0xf0 }; uint8_t dpp_oui[] = { 0x50, 0x6F, 0x9A, 0x1A }; tpSirMacVendorSpecificPublicActionFrameHdr pub_action; @@ -1818,6 +1817,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx, break; case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY: + case SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY: vendor_specific = (tpSirMacVendorSpecificFrameHdr) action_hdr; mac_hdr = NULL; @@ -1829,12 +1829,9 @@ void lim_process_action_frame(struct mac_context *mac_ctx, return; } - /* Check if it is a vendor specific action frame. */ - if (LIM_IS_STA_ROLE(session) && - (!qdf_mem_cmp(session->self_mac_addr, - &mac_hdr->da[0], sizeof(tSirMacAddr))) - && IS_WES_MODE_ENABLED(mac_ctx) - && !qdf_mem_cmp(vendor_specific->Oui, oui, 3)) { + /* Forward all vendor specific action frames. */ + if (!qdf_mem_cmp(session->self_mac_addr, + &mac_hdr->da[0], sizeof(tSirMacAddr))) { pe_debug("Rcvd Vendor specific frame OUI: %x %x %x", vendor_specific->Oui[0], vendor_specific->Oui[1], @@ -1854,16 +1851,8 @@ void lim_process_action_frame(struct mac_context *mac_ctx, WMA_GET_RX_RSSI_NORMALIZED( rx_pkt_info), RXMGMT_FLAG_NONE); } else { - pe_debug("Dropping the vendor specific action frame" - "beacause of (WES Mode not enabled " - "(WESMODE: %d) or OUI mismatch " - "(%02x %02x %02x) or not received with" - "SelfSta address) system role: %d", - IS_WES_MODE_ENABLED(mac_ctx), - vendor_specific->Oui[0], - vendor_specific->Oui[1], - vendor_specific->Oui[2], - GET_LIM_SYSTEM_ROLE(session)); + pe_debug("Dropping the vendor specific action frame SelfSta address system role: %d", + GET_LIM_SYSTEM_ROLE(session)); } break; case ACTION_CATEGORY_PUBLIC: @@ -1896,11 +1885,15 @@ void lim_process_action_frame(struct mac_context *mac_ctx, /* send the frame to supplicant */ /* fallthrough */ case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY: + case SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY: case SIR_MAC_ACTION_2040_BSS_COEXISTENCE: case SIR_MAC_ACTION_GAS_INITIAL_REQUEST: case SIR_MAC_ACTION_GAS_INITIAL_RESPONSE: case SIR_MAC_ACTION_GAS_COMEBACK_REQUEST: case SIR_MAC_ACTION_GAS_COMEBACK_RESPONSE: + default: + pe_debug("Public action frame: %d", + action_hdr->actionID); /* * Forward to the SME to HDD to wpa_supplicant * type is ACTION @@ -1914,10 +1907,6 @@ void lim_process_action_frame(struct mac_context *mac_ctx, WMA_GET_RX_RSSI_NORMALIZED( rx_pkt_info), RXMGMT_FLAG_NONE); break; - default: - pe_debug("Unhandled public action frame: %d", - action_hdr->actionID); - break; } break; From b92520d0126466a2cb4387dff8cba104c6a98c88 Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Tue, 28 Sep 2021 20:17:11 +0530 Subject: [PATCH 13/18] qcacld-3.0: Register DSCP action frame for wake up Currently, the bitmap of action frames that can wake up the host during suspend is sent via the wmi command WMI_WOW_SET_ACTION_WAKE_UP_CMDID. This bitmap doesn't include DSCP action frames so currently the host doesn't wake up for DSCP action frames when in suspend mode. Enable wake up for DSCP action frame for runtime PM as well as for wow mode. Change-Id: I51ba3e8ef52755af25ed922161028dfbaccaa250 CRs-Fixed: 3262353 --- components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h index 88b23b07ac3f..a38e36c8e84b 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -65,6 +66,7 @@ #define PMO_MAC_ACTION_FST 18 #define PMO_MAC_ACTION_RVS 19 #define PMO_MAC_ACTION_VHT 21 +#define PMO_VENDOR_PROTECTED 126 #define PMO_MAC_ACTION_MAX 256 /* @@ -96,6 +98,7 @@ * PMO_ACTION_FST 18 1 * PMO_ACTION_RVS 19 1 * PMO_ACTION_VHT 21 1 + * PMO_VENDOR_PROTECTED 126 1 * ----------------------------+------+-------+ */ #define SYSTEM_SUSPEND_ALLOWED_ACTION_FRAMES_BITMAP0 \ @@ -112,7 +115,9 @@ #define ALLOWED_ACTION_FRAMES_BITMAP1 0x0 #define ALLOWED_ACTION_FRAMES_BITMAP2 0x0 -#define ALLOWED_ACTION_FRAMES_BITMAP3 0x0 +#define ALLOWED_ACTION_FRAMES_BITMAP3 \ + (1 << (PMO_VENDOR_PROTECTED % 32)) + #define ALLOWED_ACTION_FRAMES_BITMAP4 0x0 #define ALLOWED_ACTION_FRAMES_BITMAP5 0x0 #define ALLOWED_ACTION_FRAMES_BITMAP6 0x0 From 7ddb90fae2855402ff8b5c042d5f05167f8d0bda Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Tue, 15 Nov 2022 09:15:55 -0800 Subject: [PATCH 14/18] Release 2.0.8.31P Release 2.0.8.31P Change-Id: I319d7abe0a159df13cec2e10addb3566fa995fcd CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index f9682835cd9d..01aeec058ae1 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "O" +#define QWLAN_VERSION_EXTRA "P" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31O" +#define QWLAN_VERSIONSTR "2.0.8.31P" #endif /* QWLAN_VERSION_H */ From 968eafb3a3151bd77c0511ceaacb915fdde0d77c Mon Sep 17 00:00:00 2001 From: Liangwei Dong Date: Fri, 9 Sep 2022 11:28:49 +0800 Subject: [PATCH 15/18] qcacld-3.0: Fix obss_width_trigger_interval zero in WMI command DUT roams to 2 GHz channel 6 bw 20 MHz, OBSS parameters are not initialized by lim_fill_ft_session. Later when DUT gets CSA event to 2 GHz channel 1 bw 40 MHz, the OBSS scan command will send invalid obss_width_trigger_interval with zero value to target. Fix by initialize the OBSS parameters without check current AP's BW. Change-Id: I6f895371898fde292cde5a108a3b4fcd95836186 CRs-Fixed: 3287522 --- core/mac/src/pe/lim/lim_ft.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index a66585ca24a2..0017167ac437 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -735,10 +736,8 @@ void lim_fill_ft_session(struct mac_context *mac, #ifdef WLAN_FEATURE_11W ft_session->limRmfEnabled = pe_session->limRmfEnabled; #endif - if ((ft_session->limRFBand == REG_BAND_2G) && - (ft_session->htSupportedChannelWidthSet == - eHT_CHANNEL_WIDTH_40MHZ)) - lim_init_obss_params(mac, ft_session); + /* Load default OBSS parameters to session entry */ + lim_init_obss_params(mac, ft_session); ft_session->enableHtSmps = pe_session->enableHtSmps; ft_session->htSmpsvalue = pe_session->htSmpsvalue; From 572fd22c36fc31c9e252dc6beaef3be069ec4583 Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Wed, 16 Nov 2022 21:06:45 -0800 Subject: [PATCH 16/18] Release 2.0.8.31Q Release 2.0.8.31Q Change-Id: I16b8762aef609b388c1680145a417ed0fd1d2f09 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 01aeec058ae1..16f5c571a4e2 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "P" +#define QWLAN_VERSION_EXTRA "Q" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31P" +#define QWLAN_VERSIONSTR "2.0.8.31Q" #endif /* QWLAN_VERSION_H */ From 61c7392f4c655b109c91149f137af93b4783e824 Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Tue, 6 Apr 2021 14:43:49 +0530 Subject: [PATCH 17/18] qcacld-3.0: Update protected bit for mgmt action frames Host checks RMF enable and robust action frame category, if both are true then sets protected bit in mac header of management action frame. Change-Id: I2d57c52b66ff7abd44dd02b73ad18f13fbdef009 CRs-Fixed: 3262340 --- .../p2p/core/src/wlan_p2p_off_chan_tx.c | 35 +--------------- .../mac/src/pe/lim/lim_process_action_frame.c | 4 +- core/mac/src/pe/lim/lim_utils.c | 40 ------------------- core/mac/src/pe/lim/lim_utils.h | 1 - 4 files changed, 4 insertions(+), 76 deletions(-) diff --git a/components/p2p/core/src/wlan_p2p_off_chan_tx.c b/components/p2p/core/src/wlan_p2p_off_chan_tx.c index 38fb76a21546..1478df85dce7 100644 --- a/components/p2p/core/src/wlan_p2p_off_chan_tx.c +++ b/components/p2p/core/src/wlan_p2p_off_chan_tx.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1545,38 +1546,6 @@ static QDF_STATUS p2p_disable_tx_timer(struct tx_action_context *tx_ctx) return status; } -/** - * is_rmf_mgmt_action_frame() - check RMF action frame by category - * @action_category: action frame actegory - * - * This function check the frame is robust mgmt action frame or not - * - * Return: true - if category is robust mgmt type - */ -static bool is_rmf_mgmt_action_frame(uint8_t action_category) -{ - switch (action_category) { - case ACTION_CATEGORY_SPECTRUM_MGMT: - case ACTION_CATEGORY_QOS: - case ACTION_CATEGORY_DLS: - case ACTION_CATEGORY_BACK: - case ACTION_CATEGORY_RRM: - case ACTION_FAST_BSS_TRNST: - case ACTION_CATEGORY_SA_QUERY: - case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION: - case ACTION_CATEGORY_WNM: - case ACTION_CATEGORY_MESH_ACTION: - case ACTION_CATEGORY_MULTIHOP_ACTION: - case ACTION_CATEGORY_DMG: - case ACTION_CATEGORY_FST: - case ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED: - return true; - default: - break; - } - return false; -} - /** * p2p_populate_rmf_field() - populate unicast rmf frame * @tx_ctx: tx_action_context @@ -1620,7 +1589,7 @@ static QDF_STATUS p2p_populate_rmf_field(struct tx_action_context *tx_ctx, * to get the actual action category we need to ignore the MSB. */ action_category = action_hdr->action_category & 0x7f; - if (!is_rmf_mgmt_action_frame(action_category)) { + if (!wlan_mgmt_is_rmf_mgmt_action_frame(action_category)) { p2p_debug("non rmf act frame 0x%x category %x", tx_ctx->frame_info.sub_type, action_hdr->action_category); diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index 24f8e406ee92..09e65cfb444b 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -1616,8 +1616,8 @@ void lim_process_action_frame(struct mac_context *mac_ctx, } #ifdef WLAN_FEATURE_11W - if (lim_is_robust_mgmt_action_frame(action_hdr->category) && - lim_drop_unprotected_action_frame(mac_ctx, session, + if (wlan_mgmt_is_rmf_mgmt_action_frame(action_hdr->category) && + lim_drop_unprotected_action_frame(mac_ctx, session, mac_hdr_11w, action_hdr->category)) return; #endif diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index d456c3f29f4c..6e85825a8c3f 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6652,46 +6652,6 @@ void lim_update_obss_scanparams(struct pe_session *session, return; } -/** - * lim_is_robust_mgmt_action_frame() - Check if action category is - * robust action frame - * @action_category: Action frame category. - * - * This function is used to check if given action category is robust - * action frame. - * - * Return: bool - */ -bool lim_is_robust_mgmt_action_frame(uint8_t action_category) -{ - switch (action_category) { - /* - * NOTE: This function doesn't take care of the DMG - * (Directional Multi-Gigatbit) BSS case as 8011ad - * support is not yet added. In future, if the support - * is required then this function need few more arguments - * and little change in logic. - */ - case ACTION_CATEGORY_SPECTRUM_MGMT: - case ACTION_CATEGORY_QOS: - case ACTION_CATEGORY_DLS: - case ACTION_CATEGORY_BACK: - case ACTION_CATEGORY_RRM: - case ACTION_FAST_BSS_TRNST: - case ACTION_CATEGORY_SA_QUERY: - case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION: - case ACTION_CATEGORY_WNM: - case ACTION_CATEGORY_MESH_ACTION: - case ACTION_CATEGORY_MULTIHOP_ACTION: - case ACTION_CATEGORY_FST: - return true; - default: - pe_debug("non-PMF action category: %d", action_category); - break; - } - return false; -} - /** * lim_compute_ext_cap_ie_length - compute the length of ext cap ie * based on the bits set diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index 6126ac888c27..6b2e0103741b 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -1081,7 +1081,6 @@ static inline void lim_deactivate_and_change_timer_host_roam( {} #endif -bool lim_is_robust_mgmt_action_frame(uint8_t action_category); uint8_t lim_compute_ext_cap_ie_length(tDot11fIEExtCap *ext_cap); void lim_update_caps_info_for_bss(struct mac_context *mac_ctx, From 8ed9cddc1aa9af51d4d3f0d965ff73636c60f71d Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Mon, 21 Nov 2022 09:20:56 -0800 Subject: [PATCH 18/18] Release 2.0.8.31R Release 2.0.8.31R Change-Id: I3e251702353057bcd1de6045400ed91030d75c43 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 16f5c571a4e2..3ddd2df15999 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "Q" +#define QWLAN_VERSION_EXTRA "R" #define QWLAN_VERSION_BUILD 31 -#define QWLAN_VERSIONSTR "2.0.8.31Q" +#define QWLAN_VERSIONSTR "2.0.8.31R" #endif /* QWLAN_VERSION_H */