From fa31cb418ac8d531ca278c3782a23f1fb759bacd Mon Sep 17 00:00:00 2001 From: Atul Mittal Date: Fri, 31 Oct 2014 12:03:37 +0530 Subject: qcacld: TDLS: fix off-channel offset to firmware during channel switch Following should be the conversion of values from driver ioctl, to be sent to firmware: 0 - 20MHz 40 - 40MHz -40 - 40MHz Change-Id: I77c115f86686615180216e4f92901d429fa4d282 CRs-Fixed: 748422 --- CORE/HDD/inc/wlan_hdd_tdls.h | 5 +++++ CORE/HDD/src/wlan_hdd_tdls.c | 9 +++++---- CORE/SME/inc/sme_Api.h | 4 ---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h index 0e6fcc28f575..8bb257caf8ab 100644 --- a/CORE/HDD/inc/wlan_hdd_tdls.h +++ b/CORE/HDD/inc/wlan_hdd_tdls.h @@ -69,6 +69,11 @@ should not be more than 2000 */ #define ENA_TDLS_OFFCHAN (1 << 0) /* TDLS Off Channel support */ #define ENA_TDLS_BUFFER_STA (1 << 1) /* TDLS Buffer STA support */ #define ENA_TDLS_SLEEP_STA (1 << 2) /* TDLS Sleep STA support */ +#define TDLS_SEC_OFFCHAN_OFFSET_0 0 +#define TDLS_SEC_OFFCHAN_OFFSET_40PLUS 40 +#define TDLS_SEC_OFFCHAN_OFFSET_40MINUS (-40) +#define TDLS_SEC_OFFCHAN_OFFSET_80 80 +#define TDLS_SEC_OFFCHAN_OFFSET_160 160 #define TDLS_PEER_LIST_SIZE 256 diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c index 137194fe069e..8b8e1630deaa 100644 --- a/CORE/HDD/src/wlan_hdd_tdls.c +++ b/CORE/HDD/src/wlan_hdd_tdls.c @@ -2814,16 +2814,17 @@ int hdd_set_tdls_secoffchanneloffset(hdd_context_t *pHddCtx, int offchanoffset) eTDLS_SUPPORT_EXPLICIT_TRIGGER_ONLY == pHddCtx->tdls_mode)) { pHddCtx->tdls_channel_offset = 0; switch (offchanoffset) { - case BW_20: + case TDLS_SEC_OFFCHAN_OFFSET_0: pHddCtx->tdls_channel_offset = (1 << BW_20_OFFSET_BIT); break; - case BW_40: + case TDLS_SEC_OFFCHAN_OFFSET_40PLUS: + case TDLS_SEC_OFFCHAN_OFFSET_40MINUS: pHddCtx->tdls_channel_offset = (1 << BW_40_OFFSET_BIT); break; - case BW_80: + case TDLS_SEC_OFFCHAN_OFFSET_80: pHddCtx->tdls_channel_offset = (1 << BW_80_OFFSET_BIT); break; - case BW_160: + case TDLS_SEC_OFFCHAN_OFFSET_160: pHddCtx->tdls_channel_offset = (1 << BW_160_OFFSET_BIT); break; default: diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index 74498840fda9..2875078c7082 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -168,10 +168,6 @@ typedef struct _smeTdlsPeerStateParams #define ENABLE_CHANSWITCH 1 #define DISABLE_CHANSWITCH 2 -#define BW_20 20 -#define BW_40 40 -#define BW_80 80 -#define BW_160 160 #define BW_20_OFFSET_BIT 0 #define BW_40_OFFSET_BIT 1 #define BW_80_OFFSET_BIT 2 -- cgit v1.2.3 From 3cd6e53c649e9e8e6c51792c9df580ee2e741665 Mon Sep 17 00:00:00 2001 From: "Padma, Santhosh Kumar" Date: Wed, 29 Oct 2014 12:05:20 +0530 Subject: qcacld: Reassoc to same AP using fastreassoc Add support in the host driver to issue reassoc to same AP using fastreassoc command. Change-Id: I241d426d5b085fc0f398e6b15fad632efe5fcbf4 CRs-fixed: 747395 --- CORE/HDD/src/wlan_hdd_main.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 475fe7b8b132..1172b2b75748 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -5196,11 +5196,15 @@ static int hdd_driver_command(hdd_adapter_t *pAdapter, tANI_U8 *value = command; tANI_U8 channel = 0; tSirMacAddr targetApBssid; + tHalHandle hHal; + v_U32_t roamId = 0; + tCsrRoamModifyProfileFields modProfileFields; #ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD tCsrHandoffRequest handoffInfo; #endif hdd_station_ctx_t *pHddStaCtx = NULL; pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter); + hHal = WLAN_HDD_GET_HAL_CTX(pAdapter); /* if not associated, no need to proceed with reassoc */ if (eConnectionState_Associated != pHddStaCtx->conn_info.connState) @@ -5220,13 +5224,16 @@ static int hdd_driver_command(hdd_adapter_t *pAdapter, } /* if the target bssid is same as currently associated AP, - then no need to proceed with reassoc */ + issue reassoc to same AP */ if (VOS_TRUE == vos_mem_compare(targetApBssid, pHddStaCtx->conn_info.bssId, sizeof(tSirMacAddr))) { VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO, "%s:Reassoc BSSID is same as currently associated AP bssid",__func__); - ret = -EINVAL; - goto exit; + sme_GetModifyProfileFields(hHal, pAdapter->sessionId, + &modProfileFields); + sme_RoamReassoc(hHal, pAdapter->sessionId, + NULL, modProfileFields, &roamId, 1); + return 0; } /* Check channel number is a valid channel number */ -- cgit v1.2.3 From 62ad9c4db473a2f9afee60854e3ac1875ba090e6 Mon Sep 17 00:00:00 2001 From: Srinivas Girigowda Date: Fri, 31 Oct 2014 18:28:39 -0700 Subject: qcacld: Set the default roaming to LFR2.0 As a part of this change, Disable LFR3.0 so that the default roaming rolls back to LFR2.0. LFR2.0 ini item "gRoamScanOffloadEnabled" is enabled by default in the code and is not exposed in the ini file. Change-Id: I4c73336fdc1bcb553d2d44dcbfe3222806f8f157 CRs-Fixed: 749371 --- firmware_bin/WCNSS_qcom_cfg.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini index 3909c3a6a08a..c20c8f0ed14c 100755 --- a/firmware_bin/WCNSS_qcom_cfg.ini +++ b/firmware_bin/WCNSS_qcom_cfg.ini @@ -589,7 +589,7 @@ gIbssTxSpEndInactivityTime=10 # Enable/Disable Roaming Offload Support (a.k.a Key Management Offload) # 0 to disable, 1 to enable -gRoamOffloadEnabled=1 +gRoamOffloadEnabled=0 # Enable support for TDLS # 0 - disable -- cgit v1.2.3 From 8cf9941f38cb50efcc3ad94caa8d481fc5689cac Mon Sep 17 00:00:00 2001 From: Prashanth Bhatta Date: Fri, 12 Sep 2014 16:44:42 -0700 Subject: qcacld: ssr: Do not iomap ramdump address Driver doesn't need to know about the memory address how it is getting from CNSS as CLD only uses virtual address to copy the CNSS dump. CNSS driver independently can allocate the required memory for cnss ramdump. This change would give flexibility to both CNSS and CLD drivers. Change-Id: I087e87fd2960f39f4266a85a69a2e78072bf0793 CRs-fixed: 749232 --- CORE/SERVICES/COMMON/ol_if_athvar.h | 2 +- CORE/SERVICES/HIF/PCIe/if_pci.c | 36 ++++++++---------------------------- 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/CORE/SERVICES/COMMON/ol_if_athvar.h b/CORE/SERVICES/COMMON/ol_if_athvar.h index 967e2cc561e1..c5537cb78f73 100644 --- a/CORE/SERVICES/COMMON/ol_if_athvar.h +++ b/CORE/SERVICES/COMMON/ol_if_athvar.h @@ -274,7 +274,7 @@ struct ol_softc { struct ol_fw_files fw_files; #endif #if defined(CONFIG_CNSS) || defined(HIF_SDIO) - void __iomem *ramdump_base; + void *ramdump_base; unsigned long ramdump_address; unsigned long ramdump_size; #endif diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c index 97e2f6f7dda9..0dc0c0f95820 100644 --- a/CORE/SERVICES/HIF/PCIe/if_pci.c +++ b/CORE/SERVICES/HIF/PCIe/if_pci.c @@ -935,16 +935,11 @@ again: #ifdef CONFIG_CNSS /* Get RAM dump memory address and size */ - if (!cnss_get_ramdump_mem(&ol_sc->ramdump_address, &ol_sc->ramdump_size)) { - ol_sc->ramdump_base = ioremap(ol_sc->ramdump_address, - ol_sc->ramdump_size); - if (!ol_sc->ramdump_base) { - pr_err("%s: Cannot map ramdump_address 0x%lx!\n", - __func__, ol_sc->ramdump_address); - } - } else { + ol_sc->ramdump_base = cnss_get_virt_ramdump_mem(&ol_sc->ramdump_size); + + if (ol_sc->ramdump_base == NULL || !ol_sc->ramdump_size) { pr_info("%s: Failed to get RAM dump memory address or size!\n", - __func__); + __func__); } #endif @@ -1275,16 +1270,11 @@ again: #ifdef CONFIG_CNSS /* Get RAM dump memory address and size */ - if (!cnss_get_ramdump_mem(&ol_sc->ramdump_address, &ol_sc->ramdump_size)) { - ol_sc->ramdump_base = ioremap(ol_sc->ramdump_address, - ol_sc->ramdump_size); - if (!ol_sc->ramdump_base) { - pr_err("%s: Cannot map ramdump_address 0x%lx!\n", - __func__, ol_sc->ramdump_address); - } - } else { + ol_sc->ramdump_base = cnss_get_virt_ramdump_mem(&ol_sc->ramdump_size); + + if (ol_sc->ramdump_base == NULL || !ol_sc->ramdump_size) { pr_info("%s: Failed to get RAM dump memory address or size!\n", - __func__); + __func__); } #endif @@ -1634,11 +1624,6 @@ hif_pci_remove(struct pci_dev *pdev) pci_disable_msi(pdev); -#ifdef CONFIG_CNSS - if (scn->ramdump_base) - iounmap(scn->ramdump_base); -#endif - A_FREE(scn); A_FREE(sc->hif_device); A_FREE(sc); @@ -1693,11 +1678,6 @@ void hif_pci_shutdown(struct pci_dev *pdev) pci_disable_msi(pdev); -#ifdef CONFIG_CNSS - if (scn->ramdump_base) - iounmap(scn->ramdump_base); -#endif - A_FREE(scn); A_FREE(sc->hif_device); A_FREE(sc); -- cgit v1.2.3 From bc503dd9b5eae37a66188ca2cb1afc80dc80a472 Mon Sep 17 00:00:00 2001 From: "Masti, Narayanraddi" Date: Thu, 30 Oct 2014 15:34:50 +0530 Subject: qcacld: Make sure logging thread exits safely Make sure logging thread exits before releasing the allocated buffer for logging and the link list modification,during logging service deactivation. This done by using wait_for_completion instead of wait_for_completion_interruptible. Change-Id: Ibfd4be99807c1988fac5c0863a70edd2e2ca29d7 CRs-Fixed: 747516 --- CORE/SVC/src/logging/wlan_logging_sock_svc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CORE/SVC/src/logging/wlan_logging_sock_svc.c b/CORE/SVC/src/logging/wlan_logging_sock_svc.c index bdfb28fb2275..f8e77ce2549b 100644 --- a/CORE/SVC/src/logging/wlan_logging_sock_svc.c +++ b/CORE/SVC/src/logging/wlan_logging_sock_svc.c @@ -514,10 +514,10 @@ static int wlan_logging_thread(void *Arg) } } - complete_and_exit(&gwlan_logging.shutdown_comp, 0); - pr_info("%s: Terminating\n", __func__); + complete_and_exit(&gwlan_logging.shutdown_comp, 0); + return 0; } @@ -643,10 +643,10 @@ int wlan_logging_sock_deactivate_svc(void) clear_default_logtoapp_log_level(); gapp_pid = INVALID_PID; - gwlan_logging.exit = true; INIT_COMPLETION(gwlan_logging.shutdown_comp); + gwlan_logging.exit = true; wake_up_interruptible(&gwlan_logging.wait_queue); - wait_for_completion_interruptible(&gwlan_logging.shutdown_comp); + wait_for_completion(&gwlan_logging.shutdown_comp); spin_lock_irqsave(&gwlan_logging.spin_lock, irq_flag); vfree(gplog_msg); -- cgit v1.2.3 From 4ca1fd4bbe68ef8322985543186c70e55179e732 Mon Sep 17 00:00:00 2001 From: OwenLiu Date: Thu, 30 Oct 2014 12:43:52 +0800 Subject: qcacld: sdio HIF: disable credit check for WMI_WOW_ENABLE_CMDID In SDIO case, the WMI service has limited credits. Before entering into WOW mode, host driver has quite a few WMI commands (configuring offload / patterns, etc) to send prior to this WMI_WOW_ENABLE_CMDID. Then this credit check is usually failed because the credit report is not yet back from the target. if we remove this credit check and let WMA still issues this WMI_WOW_ENABLE_CMDID to the lower layer, this WMI command can actually arrive at target and target can respond with necessary event in time. Change-Id: If37c359154098554104b8ce5e1fe02c9b6cd489b CRs-Fixed: 748042 --- CORE/SERVICES/WMA/wma.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 881471e674cf..d7179e057a35 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -17255,12 +17255,14 @@ int wma_enable_wow_in_fw(WMA_HANDLE handle) WMA_LOGD("Credits:%d; Pending_Cmds: %d", host_credits, wmi_pending_cmds); +#if !defined(HIF_SDIO) if (host_credits < WMI_WOW_REQUIRED_CREDITS) { WMA_LOGE("%s: Host Doesn't have enough credits to Post WMI_WOW_ENABLE_CMDID! " "Credits:%d, pending_cmds:%d\n", __func__, host_credits, wmi_pending_cmds); goto error; } +#endif ret = wmi_unified_cmd_send(wma->wmi_handle, buf, len, WMI_WOW_ENABLE_CMDID); -- cgit v1.2.3 From 4f38d5d9ca89402fde7b9232f93eda0a29c80917 Mon Sep 17 00:00:00 2001 From: AnjaneeDevi Kapparapu Date: Mon, 3 Nov 2014 11:52:30 +0530 Subject: Cafstaging Release 1.0.0.225 Cafstaging Release 1.0.0.225 Change-Id: I3da50bd3d57db519131efda03c18d07c398d70c7 CRs-Fixed: 688141 --- 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 5edd741c2f79..30a8ec4bf19c 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 0 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 224 +#define QWLAN_VERSION_BUILD 225 -#define QWLAN_VERSIONSTR "1.0.0.224" +#define QWLAN_VERSIONSTR "1.0.0.225" #define AR6320_REV1_VERSION 0x5000000 -- cgit v1.2.3