From 28d0312dfa74324b9e514a82fbd98022307e6692 Mon Sep 17 00:00:00 2001 From: Varun Reddy Yeturu Date: Tue, 19 Apr 2016 11:33:56 -0700 Subject: qcacld-3.0: LFR3: Fix ESE Regression Remove WLAN_FEATURE_NEIGHBOR_ROAMING which is not defined in the build file. Also fix the regression that has been introduced by the change I857f9c16eb73a4b0f72e0a622be47ab756fb70f4. CRs-Fixed: 1003135 Change-Id: I741fd3cf69a05c346e1bc11498f93e928e5c1244 --- core/sme/src/csr/csr_api_roam.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index b86916195094..ffea06c1e74b 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -1535,11 +1535,7 @@ QDF_STATUS csr_create_roam_scan_channel_list(tpAniSirGlobal pMac, */ bool csr_roam_is_ese_assoc(tpAniSirGlobal mac_ctx, uint8_t session_id) { -#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING return mac_ctx->roam.neighborRoamInfo[session_id].isESEAssoc; -#else - return false; -#endif } /** -- cgit v1.2.3 From ef777d4dc0ce4f1a7bed84e5559af1ececbc1db7 Mon Sep 17 00:00:00 2001 From: Archana Ramachandran Date: Tue, 29 Mar 2016 16:27:42 -0700 Subject: qcacld-3.0: Fix assoc req not including SMPS static in 1x1 antenna mode qcacld-2.0 to qcacld-3.0 propagation In platforms that supports LTE coex, When antenna mode is dynamically switched from 2x2 to 1x1 before station association the SMPS mode is not set to enabled, static in the HT caps of assoc req management frame. Although the station will send SMPS action frames with the correct SMPS mode after association, if the AP did not receive the management frames then it will continue to transmit in 2x2 rates when station is in 1x1 mode. CRs-Fixed: 986388 Change-Id: Ide2eef354ca6a8aa83981a959b029216c2069943 --- core/mac/src/pe/lim/lim_assoc_utils.c | 4 ++-- core/mac/src/sys/legacy/src/utils/src/parser_api.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c index aa704af12e01..3d49e7a0543e 100644 --- a/core/mac/src/pe/lim/lim_assoc_utils.c +++ b/core/mac/src/pe/lim/lim_assoc_utils.c @@ -1782,8 +1782,8 @@ lim_populate_peer_rate_set(tpAniSirGlobal pMac, psessionEntry->supported_nss_1x1 = ((pRates->supportedMCSSet[1] != 0) ? false : true); - PELOG1(lim_log(pMac, LOG1, FL("HT supported nss 1x1: %d"), - psessionEntry->supported_nss_1x1);) + lim_log(pMac, LOG1, FL("HT supported nss 1x1: %d"), + psessionEntry->supported_nss_1x1); } lim_populate_vht_mcs_set(pMac, pRates, pVHTCaps, psessionEntry); return eSIR_SUCCESS; diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c index e94a5f6d2b02..db860844cef0 100644 --- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c +++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c @@ -787,7 +787,7 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac, /* If STA mode, session supported NSS > 1 and * SMPS enabled publish HT SMPS IE */ - if (psessionEntry && (!pMac->lteCoexAntShare) && + if (psessionEntry && LIM_IS_STA_ROLE(psessionEntry) && (psessionEntry->enableHtSmps) && (!psessionEntry->supported_nss_1x1)) { -- cgit v1.2.3 From 5482d6a4d073b6509bbbbb56ed278e62ab565b96 Mon Sep 17 00:00:00 2001 From: Archana Ramachandran Date: Tue, 29 Mar 2016 17:09:22 -0700 Subject: qcacld-3.0: Fix STA sending SMPS force mode when connected to 1x1 AP qcacld-2.0 to qcacld-3.0 propagation Peer supported NSS should be updated based on the presence of HT and VHT capabilities in the beacon/probe response IE from the AP. Also, update session supported NSS during reassociation. Otherwise, station will end up sending SMPS action frames to AP which only supports 1x1 mode. CRs-Fixed: 979545 Change-Id: Ie2dbfbb577f08c5090101e1330184e72a9f6cd46 --- core/mac/src/pe/lim/lim_assoc_utils.c | 2 +- core/mac/src/pe/lim/lim_ft.c | 14 ++++++++++++-- core/mac/src/pe/lim/lim_process_sme_req_messages.c | 17 +++++++++++++---- core/sme/src/csr/csr_api_roam.c | 8 ++++++++ 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c index 3d49e7a0543e..88dc45e7f8cd 100644 --- a/core/mac/src/pe/lim/lim_assoc_utils.c +++ b/core/mac/src/pe/lim/lim_assoc_utils.c @@ -1399,7 +1399,7 @@ tSirRetStatus lim_populate_vht_mcs_set(tpAniSirGlobal mac_ctx, } rates->vhtTxHighestDataRate = (uint16_t) val; - if (peer_vht_caps == NULL) + if ((peer_vht_caps == NULL) || (!peer_vht_caps->present)) return eSIR_SUCCESS; rates->vhtTxHighestDataRate = diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index a85e9d6ef340..c7aea5302bed 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -686,9 +686,19 @@ void lim_fill_ft_session(tpAniSirGlobal pMac, pftSessionEntry->enableHtSmps = psessionEntry->enableHtSmps; pftSessionEntry->smpsMode = psessionEntry->smpsMode; - lim_log(pMac, LOG1, FL("FT session enable smps: %d mode: %d"), + /* + * By default supported NSS 1x1 is set to true + * and later on updated while determining session + * supported rates which is the intersection of + * self and peer rates + */ + pftSessionEntry->supported_nss_1x1 = true; + lim_log(pMac, LOG1, + FL("FT enable smps: %d mode: %d supported nss 1x1: %d"), pftSessionEntry->enableHtSmps, - pftSessionEntry->smpsMode); + pftSessionEntry->smpsMode, + pftSessionEntry->supported_nss_1x1); + qdf_mem_free(pBeaconStruct); } diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 026a50a89c0e..8de45fe8734f 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -1729,11 +1729,19 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf) session->htSmpsvalue = sme_join_req->htSmps; session->send_smps_action = sme_join_req->send_smps_action; + /* + * By default supported NSS 1x1 is set to true + * and later on updated while determining session + * supported rates which is the intersection of + * self and peer rates + */ + session->supported_nss_1x1 = true; lim_log(mac_ctx, LOG1, - FL("enable Smps: %d mode: %d send action: %d"), + FL("enable Smps: %d mode: %d send action: %d supported nss 1x1: %d"), session->enableHtSmps, session->htSmpsvalue, - session->send_smps_action); + session->send_smps_action, + session->supported_nss_1x1); /*Store Persona */ session->pePersona = sme_join_req->staPersona; @@ -2154,10 +2162,11 @@ static void __lim_process_sme_reassoc_req(tpAniSirGlobal mac_ctx, session_entry->send_smps_action = reassoc_req->send_smps_action; lim_log(mac_ctx, LOG1, - FL("enableHtSmps: %d htSmps: %d send action: %d"), + FL("enableHtSmps: %d htSmps: %d send action: %d supported nss 1x1: %d"), session_entry->enableHtSmps, session_entry->htSmpsvalue, - session_entry->send_smps_action); + session_entry->send_smps_action, + session_entry->supported_nss_1x1); /* * Reassociate request is expected * in link established state only. diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index ffea06c1e74b..ee72ae9a44c9 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -8638,11 +8638,19 @@ static void csr_roam_roaming_state_reassoc_rsp_processor(tpAniSirGlobal pMac, &pMac->roam.neighborRoamInfo[pSmeJoinRsp->sessionId]; tCsrRoamInfo roamInfo; uint32_t roamId = 0; + tCsrRoamSession *csr_session; if (eSIR_SME_SUCCESS == pSmeJoinRsp->statusCode) { QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, FL("CSR SmeReassocReq Successful")); result = eCsrReassocSuccess; + csr_session = CSR_GET_SESSION(pMac, pSmeJoinRsp->sessionId); + if (NULL != csr_session) { + csr_session->supported_nss_1x1 = + pSmeJoinRsp->supported_nss_1x1; + sms_log(pMac, LOG1, FL("SME session supported nss: %d"), + csr_session->supported_nss_1x1); + } /* * Since the neighbor roam algorithm uses reassoc req for * handoff instead of join, we need the response contents while -- cgit v1.2.3 From b66fc73614723a88a03102d0d9a214db47ce52bb Mon Sep 17 00:00:00 2001 From: Archana Ramachandran Date: Wed, 30 Mar 2016 16:26:38 -0700 Subject: qcacld-3.0: Fix STA including incorrect SMPS value in the HT caps of the reassoc req qcacld-2.0 to qcacld-3.0 propagation When creating the reassoc session, HT SMPS value should be copied from existing session to the reassoc session but the session supported NSS should be set to default value of true and not copied from exisiting session. Session supported NSS should be the intersection of NSS supported by STA and AP that STA will reassoc to. CRs-Fixed: 991042 Change-Id: Ic1577882aaa9c1923ba1dac2126e0cf11e542e36 --- core/mac/src/pe/lim/lim_ft.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index c7aea5302bed..770ff88533dc 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -685,7 +685,7 @@ void lim_fill_ft_session(tpAniSirGlobal pMac, lim_init_obss_params(pMac, pftSessionEntry); pftSessionEntry->enableHtSmps = psessionEntry->enableHtSmps; - pftSessionEntry->smpsMode = psessionEntry->smpsMode; + pftSessionEntry->htSmpsvalue = psessionEntry->htSmpsvalue; /* * By default supported NSS 1x1 is set to true * and later on updated while determining session @@ -696,7 +696,7 @@ void lim_fill_ft_session(tpAniSirGlobal pMac, lim_log(pMac, LOG1, FL("FT enable smps: %d mode: %d supported nss 1x1: %d"), pftSessionEntry->enableHtSmps, - pftSessionEntry->smpsMode, + pftSessionEntry->htSmpsvalue, pftSessionEntry->supported_nss_1x1); -- cgit v1.2.3 From eda6d7ec5077f0dab7b7914f40dfd89a7d2cd2de Mon Sep 17 00:00:00 2001 From: Krunal Soni Date: Fri, 22 Apr 2016 10:57:30 -0700 Subject: qcacld-3.0: Fix memory allocation for zero channel list Current driver try allocate memory when number of channel are passed as zero which will cause memory allocation failure. As part of the fix, when number of channels comes as zero then driver shouldn't allocate memory and let the firmware take care of it. CRs-Fixed: 1007196 Change-Id: I51d8a6decbe4c21265e88624e490446a48ea4857 --- core/wma/src/wma_scan_roam.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 295cde659da1..fc08eef58e72 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -483,14 +483,14 @@ QDF_STATUS wma_start_scan(tp_wma_handle wma_handle, struct scan_start_params cmd = {0}; tSirScanOffloadEvent *scan_event; - cmd.chan_list = qdf_mem_malloc(sizeof(uint32_t) * - scan_req->channelList.numChannels); - if (NULL == cmd.chan_list) { - qdf_status = QDF_STATUS_E_NOMEM; - goto error; + if (scan_req->channelList.numChannels > 0) { + cmd.chan_list = qdf_mem_malloc(sizeof(uint32_t) * + scan_req->channelList.numChannels); + if (NULL == cmd.chan_list) { + qdf_status = QDF_STATUS_E_NOMEM; + goto error; + } } - qdf_mem_zero((void *)cmd.chan_list, sizeof(uint32_t) * - scan_req->channelList.numChannels); if (scan_req->sessionId > wma_handle->max_bssid) { WMA_LOGE("%s: Invalid vdev_id %d, msg_type : 0x%x", __func__, scan_req->sessionId, msg_type); -- cgit v1.2.3 From ab793347f67cf4b716a022a151f7cc3ea6ea2f84 Mon Sep 17 00:00:00 2001 From: Krunal Soni Date: Fri, 22 Apr 2016 18:43:20 -0700 Subject: qcacld-3.0: Fix incorrect mac addr size while doing mem copy There are few instance where accidently mac address size got set to some incorrect value. Supply correct mac address size macro to resolve the issue. CRs-Fixed: 1007399 Change-Id: I0bdd7ac0c241d1e22b003576c370b0ce2333a0dd --- core/wma/src/wma_features.c | 2 +- core/wma/src/wma_mgmt.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index 23312de758f2..e43515e04b49 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -5949,7 +5949,7 @@ QDF_STATUS wma_set_tdls_offchan_mode(WMA_HANDLE handle, params.oper_class = chan_switch_params->oper_class; params.is_responder = chan_switch_params->is_responder; qdf_mem_copy(params.peer_mac_addr, chan_switch_params->peer_mac_addr, - WMI_ETH_LEN); + IEEE80211_ADDR_LEN); ret = wmi_unified_set_tdls_offchan_mode_cmd(wma_handle->wmi_handle, ¶ms); diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c index e9fe6441471c..e7a0ca05d3ab 100644 --- a/core/wma/src/wma_mgmt.c +++ b/core/wma/src/wma_mgmt.c @@ -1986,7 +1986,7 @@ static int wmi_unified_probe_rsp_tmpl_send(tp_wma_handle wma, params.pProbeRespTemplate = probe_rsp_info->pProbeRespTemplate; params.probeRespTemplateLen = probe_rsp_info->probeRespTemplateLen; qdf_mem_copy(params.bssId, probe_rsp_info->bssId, - WMI_ETH_LEN); + IEEE80211_ADDR_LEN); qdf_mem_copy(params.ucProxyProbeReqValidIEBmap, probe_rsp_info->ucProxyProbeReqValidIEBmap, 8 * sizeof(uint32_t)); -- cgit v1.2.3 From 137b97dd46082be15bef6f354c55df7a1c419e1f Mon Sep 17 00:00:00 2001 From: Mohit Khanna Date: Thu, 21 Apr 2016 16:11:33 -0700 Subject: qcacld-3.0: Fix for IBSS lock-up issue During IBSS session tear down, we are hitting a lockup. The issue is seen as the pdev->peer_ref_mutex is being taken up twice in ol_txrx_remove_peers_for_vdev and ol_txrx_peer_unref_delete. The later function gets invoked by the former and hence we are stuck while trying to acquire the spinlock, the second time. Fix issue by releasing peer_ref_mutex lock before invoking callback (wma_remove_peer) in ol_txrx_remove_peers_for_vdev function. The dmesg signature of the lock-up is as follows 1100.230392: <2> [] el1_irq+0x64/0xd4 1100.235432: <2> [] ol_txrx_peer_unref_delete+0xc4/0x33c [wlan] 1100.242461: <2> [] ol_txrx_peer_detach+0x1c0/0x1e0 [wlan] 1100.249020: <2> [] wma_remove_peer+0x7c/0x18c [wlan] 1100.255141: <2> [] ol_txrx_remove_peers_for_vdev+0x170/0x1b0 [wlan] 1100.262606: <2> [] wma_vdev_stop_resp_handler+0x204/0x460 [wlan] 1100.269816: <2> [] __wmi_control_rx+0x280/0x2c0 [wlan] 1100.276204: <2> [] wmi_process_fw_event+0x8/0x14 [wlan] 1100.282595: <2> [] wma_mc_process_msg+0x80c/0x27fc [wlan] 1100.289176: <2> [] $x+0x190/0x3f4 [wlan] 1100.294115: <2> [] kthread+0xac/0xb8 CRs-Fixed: 1006847 Change-Id: Icedeb172bbd6736ab39343391ff0643ddd688444 --- core/dp/txrx/ol_txrx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index ad2dc54b6c48..ff9f0a8180ce 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -1817,14 +1817,14 @@ ol_txrx_remove_peers_for_vdev(ol_txrx_vdev_handle vdev, temp = peer; } + qdf_spin_unlock_bh(&vdev->pdev->peer_ref_mutex); + if (remove_last_peer) { /* remove IBSS bss peer last */ peer = TAILQ_FIRST(&vdev->peer_list); callback(callback_context, (uint8_t *) &vdev->mac_addr, vdev->vdev_id, peer, false); } - - qdf_spin_unlock_bh(&vdev->pdev->peer_ref_mutex); } /** -- cgit v1.2.3 From 07e6e08f3a54804b4e6176c9146a54e608fb2c56 Mon Sep 17 00:00:00 2001 From: Peng Xu Date: Wed, 30 Mar 2016 10:17:39 -0700 Subject: qcacld-3.0: Correct EPPING mode macros Correct EPPING mode related macro definitions. Change-Id: If8ca48145e4e1043e3e5bd8d7df967d6140f610e CRs-fixed: 995819 --- core/utils/epping/inc/epping_main.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/core/utils/epping/inc/epping_main.h b/core/utils/epping/inc/epping_main.h index 0dcae3f87676..6d29f0f175a7 100644 --- a/core/utils/epping/inc/epping_main.h +++ b/core/utils/epping/inc/epping_main.h @@ -41,12 +41,9 @@ #include #include -#define WLAN_EPPING_ENABLE_BIT (1 << 8) -#define WLAN_EPPING_IRQ_BIT (1 << 9) -#define WLAN_EPPING_FW_UART_BIT (1 << 10) #define WLAN_IS_EPPING_ENABLED(x) (x == QDF_GLOBAL_EPPING_MODE) -#define WLAN_IS_EPPING_IRQ(x) 1 -#define WLAN_IS_EPPING_FW_UART(x) (x & WLAN_EPPING_FW_UART_BIT) +#define WLAN_IS_EPPING_IRQ(x) 1 +#define WLAN_IS_EPPING_FW_UART(x) 0 /* epping_main signatures */ int epping_open(void); -- cgit v1.2.3 From 9be537edc083f0617d711959a1db3cc84d2991ca Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Mon, 25 Apr 2016 17:35:33 -0700 Subject: qcacld-3.0: Fix resume regression caused by QDF convergence WMA bus resume returns un-initialized local variable as status to hdd bus resume callback which does bug on if status is not 0. Fix WMA bus resume routine to return proper qdf status and conver it into linux status before returnign it to HDD. Change-Id: I8f36c11552412b569ac33afa320fd39fa3fedc50 CRs-Fixed: 1008027 --- core/wma/src/wma_features.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index e43515e04b49..447aa417635b 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -5598,7 +5598,7 @@ int __wma_bus_resume(WMA_HANDLE handle) WMA_LOGE("%s: wow mode %d", __func__, wow_mode); if (!wow_mode) - return wma_resume_target(handle); + return qdf_status_to_os_return(wma_resume_target(handle)); status = wma_disable_wow_in_fw(handle); return qdf_status_to_os_return(status); -- cgit v1.2.3 From 69e89e4f2d3f1e39cce317fbff0fdff1f9f76ca9 Mon Sep 17 00:00:00 2001 From: Vishwajith Upendra Date: Wed, 27 Apr 2016 17:01:24 -0700 Subject: Release 5.1.0.5 Release 5.1.0.5 Change-Id: I833d619e0a311dea936d2798f2785eae383548cd CRs-Fixed: 688141 --- core/mac/inc/qwlan_version.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index e2bc89c4297a..738e05d5cb54 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -42,9 +42,8 @@ #define QWLAN_VERSION_MINOR 1 #define QWLAN_VERSION_PATCH 0 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 4 +#define QWLAN_VERSION_BUILD 5 -#define QWLAN_VERSIONSTR "5.1.0.4" -/* 172 */ +#define QWLAN_VERSIONSTR "5.1.0.5" #endif /* QWLAN_VERSION_H */ -- cgit v1.2.3