From 6126946bbb38d6bd16cfe5aa7ac8ea4f75a4e794 Mon Sep 17 00:00:00 2001 From: Dustin Brown Date: Mon, 19 Sep 2016 13:25:45 -0700 Subject: qcacld-3.0: Increase the number of MC filters to 32 Currently the max number of MC filters is set to 10, and MC address filtering is not being properly disabled when this maximum is exceeded. Increase the MC filters to 32, and disable MC filtering when the maximum is exceeded. Change-Id: I124b616be726abfe0739ca539d97965161285da9 CRs-Fixed: 1068479 --- core/hdd/inc/wlan_hdd_main.h | 3 ++- core/hdd/src/wlan_hdd_main.c | 4 +++- target/inc/wlan_tgt_def_config.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 4ac3abbac81f..b8d1524e1c96 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -67,6 +67,7 @@ #include "cdp_txrx_flow_ctrl_legacy.h" #include #include "wlan_hdd_nan_datapath.h" +#include "wlan_tgt_def_config.h" /*--------------------------------------------------------------------------- Preprocessor definitions and constants @@ -803,7 +804,7 @@ typedef struct hdd_scaninfo_s { } hdd_scaninfo_t; -#define WLAN_HDD_MAX_MC_ADDR_LIST 10 +#define WLAN_HDD_MAX_MC_ADDR_LIST CFG_TGT_MAX_MULTICAST_FILTER_ENTRIES #ifdef WLAN_FEATURE_PACKET_FILTERING typedef struct multicast_addr_list { diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 8946bbbc377e..6375349c36ab 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -2265,7 +2265,9 @@ static void __hdd_set_multicast_list(struct net_device *dev) hdd_notice("mc_count : %u", mc_count); if (mc_count > WLAN_HDD_MAX_MC_ADDR_LIST) { - hdd_notice("No free filter available; allow all multicast frames"); + hdd_notice("Exceeded max MC filter addresses (%d). Allowing all MC frames by disabling MC address filtering", + WLAN_HDD_MAX_MC_ADDR_LIST); + wlan_hdd_set_mc_addr_list(adapter, false); adapter->mc_addr_list.mc_cnt = 0; return; } diff --git a/target/inc/wlan_tgt_def_config.h b/target/inc/wlan_tgt_def_config.h index eadc8d599389..40e0e9d843d3 100644 --- a/target/inc/wlan_tgt_def_config.h +++ b/target/inc/wlan_tgt_def_config.h @@ -155,7 +155,7 @@ #define CFG_TGT_DEFAULT_MCAST2UCAST_MODE 2 #endif -#define CFG_TGT_MAX_MULTICAST_FILTER_ENTRIES 16 +#define CFG_TGT_MAX_MULTICAST_FILTER_ENTRIES 32 /* * Specify how much memory the target should allocate for a debug log of * tx PPDU meta-information (how large the PPDU was, when it was sent, -- cgit v1.2.3 From 2d228235da57566d3c59fd4cd8f7e93b805138f8 Mon Sep 17 00:00:00 2001 From: Dustin Brown Date: Thu, 22 Sep 2016 15:06:19 -0700 Subject: qcacld-3.0: Improve suspend/resume logging Ensure logging messages in the suspend/resume paths use hdd_err() for failure and hdd_info() for success. Also, evaluate existing messages, and polish if appropriate. Change-Id: I8b9509cf631058602ad6e8cd06a013af63624f00 CRs-Fixed: 1070223 --- core/hdd/src/wlan_hdd_driver_ops.c | 13 ++++++------- core/hdd/src/wlan_hdd_power.c | 19 +++++++++---------- core/wma/src/wma_features.c | 6 +++--- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/core/hdd/src/wlan_hdd_driver_ops.c b/core/hdd/src/wlan_hdd_driver_ops.c index 299b5d13487c..b42be5634d69 100644 --- a/core/hdd/src/wlan_hdd_driver_ops.c +++ b/core/hdd/src/wlan_hdd_driver_ops.c @@ -541,8 +541,7 @@ static int __wlan_hdd_bus_suspend(pm_message_t state) goto done; } - err = qdf_status_to_os_return( - ol_txrx_bus_suspend()); + err = qdf_status_to_os_return(ol_txrx_bus_suspend()); if (err) goto done; @@ -554,8 +553,8 @@ static int __wlan_hdd_bus_suspend(pm_message_t state) if (err) goto resume_wma; - hdd_err("suspend done"); - return err; + hdd_info("suspend done"); + return 0; resume_wma: status = wma_bus_resume(); @@ -632,14 +631,14 @@ int __wlan_hdd_bus_suspend_noirq(void) goto resume_hif_noirq; hdd_info("suspend_noirq done"); - return err; + return 0; resume_hif_noirq: status = hif_bus_resume_noirq(hif_ctx); QDF_BUG(!status); done: if (err == -EAGAIN) - hdd_err("firmware not ready for suspend, try again"); + hdd_err("Firmware attempting wakeup, try again"); else hdd_err("suspend_noirq failed, status = %d", err); return err; @@ -706,7 +705,7 @@ static int __wlan_hdd_bus_resume(void) status = ol_txrx_bus_resume(); QDF_BUG(!status); - hdd_err("resume done"); + hdd_info("resume done"); return status; } diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index 443dee9ccf46..975ab449d96a 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1285,16 +1285,16 @@ static void hdd_resume_wlan(void) hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL; QDF_STATUS status; - hdd_notice("WLAN being resumed by OS"); + hdd_info("WLAN being resumed by OS"); pHddCtx = cds_get_context(QDF_MODULE_ID_HDD); if (!pHddCtx) { - hdd_alert("HDD context is Null"); + hdd_err("HDD context is Null"); return; } if (cds_is_driver_recovering()) { - hdd_warn("Recovery in Progress. State: 0x%x Ignore resume!!!", + hdd_err("Recovery in Progress. State: 0x%x Ignore resume!!!", cds_get_driver_state()); return; } @@ -1309,7 +1309,7 @@ static void hdd_resume_wlan(void) pAdapter = pAdapterNode->pAdapter; /* wake the tx queues */ - hdd_notice("Enabling queues"); + hdd_info("Enabling queues"); wlan_hdd_netif_queue_control(pAdapter, WLAN_WAKE_ALL_NETIF_QUEUE, WLAN_CONTROL_PATH); @@ -1698,7 +1698,7 @@ static int __wlan_hdd_cfg80211_resume_wlan(struct wiphy *wiphy) pHddCtx->isWiphySuspended = false; if (true != pHddCtx->isSchedScanUpdatePending) { qdf_spin_unlock(&pHddCtx->sched_scan_lock); - hdd_notice("Return resume is not due to PNO indication"); + hdd_info("Return resume is not due to PNO indication"); return 0; } /* Reset flag to avoid updatating cfg80211 data old results again */ @@ -1728,7 +1728,7 @@ static int __wlan_hdd_cfg80211_resume_wlan(struct wiphy *wiphy) cfg80211_sched_scan_results(pHddCtx->wiphy); } - hdd_notice("cfg80211 scan result database updated"); + hdd_info("cfg80211 scan result database updated"); EXIT(); return result; } @@ -1736,7 +1736,6 @@ static int __wlan_hdd_cfg80211_resume_wlan(struct wiphy *wiphy) pAdapterNode = pNext; } - hdd_notice("Failed to find Adapter"); EXIT(); return result; } @@ -1831,7 +1830,7 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, true == WLAN_HDD_GET_AP_CTX_PTR(pAdapter)-> dfs_cac_block_tx) { - hdd_notice("RADAR detection in progress, do not allow suspend"); + hdd_err("RADAR detection in progress, do not allow suspend"); return -EAGAIN; } else if (!pHddCtx->config->enableSapSuspend) { /* return -EOPNOTSUPP if SAP does not support @@ -1863,7 +1862,7 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, if (sme_sta_in_middle_of_roaming (pHddCtx->hHal, pAdapter->sessionId)) { - hdd_notice("Roaming in progress, do not allow suspend"); + hdd_err("Roaming in progress, do not allow suspend"); return -EAGAIN; } @@ -1890,7 +1889,7 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, * firmware to avoid any race conditions. */ if (hdd_ipa_suspend(pHddCtx)) { - hdd_notice("IPA not ready to suspend!"); + hdd_err("IPA not ready to suspend!"); return -EAGAIN; } diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index 071b1fafdc18..bfe160e80e10 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -4562,7 +4562,7 @@ QDF_STATUS wma_suspend_req(tp_wma_handle wma, enum qdf_suspend_type type) wmi_set_runtime_pm_inprogress(wma->wmi_handle, true); if (wma_is_wow_applicable(wma)) { - WMA_LOGE("WOW Suspend"); + WMA_LOGI("WOW Suspend"); wma_apply_lphb(wma); wma_configure_dynamic_wake_events(wma); @@ -6414,7 +6414,7 @@ static int __wma_bus_suspend(enum qdf_suspend_type type) } if (type == QDF_SYSTEM_SUSPEND) - WMA_LOGE("%s: wow mode selected %d", __func__, + WMA_LOGI("%s: wow mode selected %d", __func__, wma_is_wow_mode_selected(handle)); if (wma_is_wow_mode_selected(handle)) { @@ -6469,7 +6469,7 @@ int __wma_bus_resume(WMA_HANDLE handle) tp_wma_handle wma = handle; QDF_STATUS status; - WMA_LOGE("%s: wow mode %d", __func__, wow_mode); + WMA_LOGI("%s: wow mode %d", __func__, wow_mode); wma->wow_initial_wake_up = false; -- cgit v1.2.3 From 5e2f8f234501ffd37bb8510e0a18c5d938aa7ac3 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 23 Sep 2016 18:29:01 -0700 Subject: Release 5.1.0.28A Release 5.1.0.28A Change-Id: Ic84ce2ad98ccc5ff8d11883edd041c934c1a32d3 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 35e3d11cf0ec..b66ff7f0cf17 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -41,9 +41,9 @@ #define QWLAN_VERSION_MAJOR 5 #define QWLAN_VERSION_MINOR 1 #define QWLAN_VERSION_PATCH 0 -#define QWLAN_VERSION_EXTRA "" +#define QWLAN_VERSION_EXTRA "A" #define QWLAN_VERSION_BUILD 28 -#define QWLAN_VERSIONSTR "5.1.0.28" +#define QWLAN_VERSIONSTR "5.1.0.28A" #endif /* QWLAN_VERSION_H */ -- cgit v1.2.3 From cb331d92d963675e6812e02296c8498ab03fca2e Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Thu, 22 Sep 2016 12:43:49 -0700 Subject: qcacld-3.0: Converge gScanAgingTime & gScanResultAgeCount There is a desire to remove unnecessary items from the default version of WCNSS_qcom_cfg.ini that is shipped to customers. Currently the default WCNSS_qcom_cfg.ini contains the following entries: gScanAgingTime=30 gScanResultAgeCount=1 The associated default values within the driver are: define CFG_SCAN_AGING_PARAM_DEFAULT (60) define CFG_SCAN_RESULT_AGE_COUNT_DEFAULT (3) These are obviously divergent and should be converged. Since all recent testing has used the default WCNSS_qcom_cfg.ini, converge on the values defined there. Change-Id: I4b75590c44a94b9b95fbd47cf147137d4f695e51 CRs-Fixed: 1070145 --- core/hdd/inc/wlan_hdd_cfg.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 1af039b70fe4..65640a50fa28 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -217,7 +217,7 @@ typedef enum { #define CFG_SCAN_RESULT_AGE_COUNT_NAME "gScanResultAgeCount" #define CFG_SCAN_RESULT_AGE_COUNT_MIN (1) #define CFG_SCAN_RESULT_AGE_COUNT_MAX (100) -#define CFG_SCAN_RESULT_AGE_COUNT_DEFAULT (3) +#define CFG_SCAN_RESULT_AGE_COUNT_DEFAULT (1) /* All in seconds */ /* Not Connect, No Power Save */ @@ -1880,7 +1880,7 @@ typedef enum { #define CFG_SCAN_AGING_PARAM_NAME "gScanAgingTime" #define CFG_SCAN_AGING_PARAM_MIN (0) #define CFG_SCAN_AGING_PARAM_MAX (200) -#define CFG_SCAN_AGING_PARAM_DEFAULT (60) +#define CFG_SCAN_AGING_PARAM_DEFAULT (30) /* Config Param to enable the txLdpc capability * 0 - disable -- cgit v1.2.3 From 4133c00bece0c449ee157b9d6bc7e14f011a680c Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 23 Sep 2016 19:20:45 -0700 Subject: Release 5.1.0.28B Release 5.1.0.28B Change-Id: I7badaed9a12e97e114a0b9d87b97d16b52a7654d 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 b66ff7f0cf17..dd1df1c97b90 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -41,9 +41,9 @@ #define QWLAN_VERSION_MAJOR 5 #define QWLAN_VERSION_MINOR 1 #define QWLAN_VERSION_PATCH 0 -#define QWLAN_VERSION_EXTRA "A" +#define QWLAN_VERSION_EXTRA "B" #define QWLAN_VERSION_BUILD 28 -#define QWLAN_VERSIONSTR "5.1.0.28A" +#define QWLAN_VERSIONSTR "5.1.0.28B" #endif /* QWLAN_VERSION_H */ -- cgit v1.2.3 From 8d2d9ecdca1739195593803c8128fce81555c0f1 Mon Sep 17 00:00:00 2001 From: Mukul Sharma Date: Thu, 8 Sep 2016 13:05:35 +0530 Subject: qcacld-3.0: Cache ARP/NS offload request at wma layer qcacld-2.0 to qcacld-3.0 propagation As Current WMI interface need both the ARP/NS configuration in single command. To support active offload host need to cache the ARP/NS at wma layer so host can fill the other request and configure down to firmware complete request (ARP+NS). Change-Id: Ie0a57d216379817ff0ae48f4f582c9108e8ecca1 CRs-Fixed: 1059739 --- core/wma/inc/wma.h | 5 ++++- core/wma/src/wma_dev_if.c | 7 ++++++ core/wma/src/wma_features.c | 54 ++++++++++++++++++++++++++++++++++++--------- 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index 5a5d738f573d..b82ba1f1738d 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -907,7 +907,8 @@ typedef struct { * @chain_mask: chain mask can be used by the vdev * @mac_id: the mac on which vdev is on * @wep_default_key_idx: wep default index for group key - * + * @arp_offload_req: cached arp offload request + * @ns_offload_req: cached ns offload request * It stores parameters per vdev in wma. */ struct wma_txrx_node { @@ -985,6 +986,8 @@ struct wma_txrx_node { uint8_t nss_5g; bool p2p_lo_in_progress; uint8_t wep_default_key_idx; + tSirHostOffloadReq arp_offload_req; + tSirHostOffloadReq ns_offload_req; }; #if defined(QCA_WIFI_FTM) diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index 3bdecdd02ca7..4a9426bf692d 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -1407,6 +1407,13 @@ int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info, status = -EINVAL; goto free_req_msg; } + + /* Clear arp and ns offload cache */ + qdf_mem_zero(&iface->ns_offload_req, + sizeof(iface->ns_offload_req)); + qdf_mem_zero(&iface->arp_offload_req, + sizeof(iface->arp_offload_req)); + if (wma_is_vdev_in_ibss_mode(wma, resp_event->vdev_id)) wma_delete_all_ibss_peers(wma, resp_event->vdev_id); else if (WMA_IS_VDEV_IN_NDI_MODE(wma->interfaces, diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index bfe160e80e10..98aa53f37a08 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -5336,7 +5336,7 @@ out: * wma_enable_arp_ns_offload() - enable ARP NS offload * @wma: wma handle * @tpSirHostOffloadReq: offload request - * @arp_only: flag + * @config_arp: config arp flag * * To configure ARP NS off load data to firmware * when target goes to wow mode. @@ -5345,41 +5345,73 @@ out: */ QDF_STATUS wma_enable_arp_ns_offload(tp_wma_handle wma, tpSirHostOffloadReq - pHostOffloadParams, bool arp_only) + offload_req, bool config_arp) { int32_t res; uint8_t vdev_id; + tpSirHostOffloadReq ns_offload_req; + tpSirHostOffloadReq arp_offload_req; /* Get the vdev id */ - if (!wma_find_vdev_by_bssid(wma, pHostOffloadParams->bssid.bytes, + if (!wma_find_vdev_by_bssid(wma, offload_req->bssid.bytes, &vdev_id)) { WMA_LOGE("vdev handle is invalid for %pM", - pHostOffloadParams->bssid.bytes); - qdf_mem_free(pHostOffloadParams); + offload_req->bssid.bytes); + qdf_mem_free(offload_req); return QDF_STATUS_E_INVAL; } if (!wma->interfaces[vdev_id].vdev_up) { WMA_LOGE("vdev %d is not up skipping arp/ns offload", vdev_id); - qdf_mem_free(pHostOffloadParams); + qdf_mem_free(offload_req); return QDF_STATUS_E_FAILURE; } + /* + * config_arp is true means arp request comes from upper layer + * Hence ns request need to used from wma cached request. + */ + if (config_arp) { + arp_offload_req = offload_req; + ns_offload_req = &wma->interfaces[vdev_id].ns_offload_req; + WMA_LOGD(" %s: ARP Offload vdev_id: %d enable: %d", + __func__, vdev_id, + offload_req->enableOrDisable); + } else { + ns_offload_req = offload_req; + arp_offload_req = &wma->interfaces[vdev_id].arp_offload_req; + WMA_LOGD(" %s: NS Offload vdev_id: %d enable: %d ns_count: %u", + __func__, vdev_id, + offload_req->enableOrDisable, + offload_req->num_ns_offload_count); + } res = wmi_unified_enable_arp_ns_offload_cmd(wma->wmi_handle, - (struct host_offload_req_param *)pHostOffloadParams, - arp_only, - vdev_id); + (struct host_offload_req_param *)arp_offload_req, + (struct host_offload_req_param *)ns_offload_req, + config_arp, + vdev_id); if (res) { WMA_LOGE("Failed to enable ARP NDP/NSffload"); - qdf_mem_free(pHostOffloadParams); + qdf_mem_free(offload_req); return QDF_STATUS_E_FAILURE; } - qdf_mem_free(pHostOffloadParams); + if (config_arp) { + qdf_mem_copy(&wma->interfaces[vdev_id].arp_offload_req, + offload_req, + sizeof(wma->interfaces[vdev_id].arp_offload_req)); + } else { + qdf_mem_copy(&wma->interfaces[vdev_id].ns_offload_req, + offload_req, + sizeof(wma->interfaces[vdev_id].ns_offload_req)); + } + + qdf_mem_free(offload_req); return QDF_STATUS_SUCCESS; } + /** * wma_process_cesium_enable_ind() - enables cesium functionality in target * @wma: wma handle -- cgit v1.2.3 From e95a6cbb1bcd6e89063c216e40d95b15669050c6 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Sat, 24 Sep 2016 13:03:51 -0700 Subject: Release 5.1.0.28C Release 5.1.0.28C Change-Id: I1288b3692e9f713fc6482b7631f21192765a8ab6 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 dd1df1c97b90..77b26075e0c0 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -41,9 +41,9 @@ #define QWLAN_VERSION_MAJOR 5 #define QWLAN_VERSION_MINOR 1 #define QWLAN_VERSION_PATCH 0 -#define QWLAN_VERSION_EXTRA "B" +#define QWLAN_VERSION_EXTRA "C" #define QWLAN_VERSION_BUILD 28 -#define QWLAN_VERSIONSTR "5.1.0.28B" +#define QWLAN_VERSIONSTR "5.1.0.28C" #endif /* QWLAN_VERSION_H */ -- cgit v1.2.3 From 31b5b65aba89a26e2c66808c50fde944ea50de30 Mon Sep 17 00:00:00 2001 From: Archana Ramachandran Date: Wed, 21 Sep 2016 15:37:58 -0700 Subject: qcacld-3.0: Reduce the log level of p2p scan messages Change the log level of p2p scan messages from error to correct log level since they are not error messages. CRs-Fixed: 1069559 Change-Id: I68d5f6addc53e76536a989cfa7bf131f20b8dcd2 --- core/hdd/src/wlan_hdd_wext.c | 4 ++-- core/sme/src/common/sme_api.c | 2 +- core/wma/src/wma_scan_roam.c | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c index 6f6051d31f2d..45b11d137e48 100644 --- a/core/hdd/src/wlan_hdd_wext.c +++ b/core/hdd/src/wlan_hdd_wext.c @@ -3672,7 +3672,7 @@ QDF_STATUS wlan_hdd_get_class_astats(hdd_adapter_t *pAdapter) pHddStaCtx->conn_info.staId[0], &context, pAdapter->sessionId); if (QDF_STATUS_SUCCESS != hstatus) { - hdd_err("Unable to retrieve Class A statistics"); + hdd_warn("Unable to retrieve Class A statistics"); /* we'll returned a cached value below */ } else { /* request was sent -- wait for the response */ @@ -3680,7 +3680,7 @@ QDF_STATUS wlan_hdd_get_class_astats(hdd_adapter_t *pAdapter) (&context.completion, msecs_to_jiffies(WLAN_WAIT_TIME_STATS)); if (!rc) { - hdd_err("SME timed out while retrieving Class A statistics"); + hdd_warn("SME timed out while retrieving Class A statistics"); } } diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 99ee67b8351b..4c087976da68 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -749,7 +749,7 @@ bool sme_process_scan_queue(tpAniSirGlobal pMac) if (!pEntry) goto end; - sms_log(pMac, LOGE, + sms_log(pMac, LOG1, FL("scan_count in active scanlist %d "), pMac->sme.smeScanCmdActiveList.Count); diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 5892379dc453..9bca3f3ce651 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -528,7 +528,7 @@ QDF_STATUS wma_start_scan(tp_wma_handle wma_handle, if (scan_req->p2pScanType == P2P_SCAN_TYPE_LISTEN) wma_set_p2p_scan_info(wma_handle, cmd.scan_id, cmd.vdev_id, P2P_SCAN_TYPE_LISTEN); - WMA_LOGE("scan_id 0x%x, vdev_id %d, p2pScanType %d, msg_type 0x%x", + WMA_LOGI("scan_id 0x%x, vdev_id %d, p2pScanType %d, msg_type 0x%x", cmd.scan_id, cmd.vdev_id, scan_req->p2pScanType, msg_type); /* * Cache vdev_id and scan_id because cmd is freed after calling @@ -613,7 +613,7 @@ QDF_STATUS wma_stop_scan(tp_wma_handle wma_handle, qdf_status); goto error; } - WMA_LOGE("scan_id 0x%x, scan_requestor_id 0x%x, vdev_id %d", + WMA_LOGI("scan_id 0x%x, scan_requestor_id 0x%x, vdev_id %d", abort_scan_req->scan_id, abort_scan_req->scan_requestor_id, abort_scan_req->SessionId); @@ -5659,7 +5659,7 @@ int wma_scan_event_callback(WMA_HANDLE handle, uint8_t *data, /* Stop scan completion timeout if event is WMI_SCAN_EVENT_COMPLETED */ if (scan_event->event == (enum sir_scan_event_type) WMI_SCAN_EVENT_COMPLETED) { - WMA_LOGE("scan complete:scan_id 0x%x, requestor 0x%x, vdev %d", + WMA_LOGI("scan complete:scan_id 0x%x, requestor 0x%x, vdev %d", wmi_event->scan_id, wmi_event->requestor, vdev_id); } -- cgit v1.2.3 From e492bfefbf0065f2c4ddd1bcb4f1439f8a0a764a Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Sun, 25 Sep 2016 21:47:25 -0700 Subject: Release 5.1.0.28D Release 5.1.0.28D Change-Id: I15e10bc6e2c7bbdde44b9d8cd4b4f57e7816a2d5 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 77b26075e0c0..6fec10d97e10 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -41,9 +41,9 @@ #define QWLAN_VERSION_MAJOR 5 #define QWLAN_VERSION_MINOR 1 #define QWLAN_VERSION_PATCH 0 -#define QWLAN_VERSION_EXTRA "C" +#define QWLAN_VERSION_EXTRA "D" #define QWLAN_VERSION_BUILD 28 -#define QWLAN_VERSIONSTR "5.1.0.28C" +#define QWLAN_VERSIONSTR "5.1.0.28D" #endif /* QWLAN_VERSION_H */ -- cgit v1.2.3 From 78ff65a8c6462e12e8513ae0ac7d40eacd2dd88f Mon Sep 17 00:00:00 2001 From: Komal Seelam Date: Thu, 18 Aug 2016 15:25:24 +0530 Subject: qcacld-3.0: Add NL event to indicate SSR shutdown is triggered propagation from qcacld-2.0 to qcacld-3.0. On Dual-WiFi Platforms, Radio Device 1 (R1 - SDIO interface) should be functional only if Radio Device 0 (R0 - PCIe interface) is active. If SSR is indentified on R0, indicate userspace application to unload R1 on this event and Reload R1 once R0 SSR and reload is complete. CRs-Fixed: 1046397 Change-Id: I8a06b569fe536bb93dbb37bdb289295bfce62f6e --- core/bmi/src/ol_fw.c | 2 ++ core/cds/inc/cds_api.h | 2 +- core/cds/src/cds_api.c | 11 +++++++++++ core/hdd/inc/wlan_hdd_main.h | 2 +- core/hdd/src/wlan_hdd_main.c | 1 + core/hdd/src/wlan_hdd_power.c | 24 ++++++++++++++++++++++++ core/utils/nlink/inc/wlan_nlink_common.h | 1 + 7 files changed, 41 insertions(+), 2 deletions(-) diff --git a/core/bmi/src/ol_fw.c b/core/bmi/src/ol_fw.c index 429ae5f848d1..e6178a43d3ee 100644 --- a/core/bmi/src/ol_fw.c +++ b/core/bmi/src/ol_fw.c @@ -593,6 +593,7 @@ void ol_target_failure(void *instance, QDF_STATUS status) struct hif_opaque_softc *scn = ol_ctx->scn; tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA); struct ol_config_info *ini_cfg = ol_get_ini_handle(ol_ctx); + qdf_device_t qdf_dev = ol_ctx->qdf_dev; int ret; enum hif_target_status target_status = hif_get_target_status(scn); @@ -640,6 +641,7 @@ void ol_target_failure(void *instance, QDF_STATUS status) BMI_ERR("XXX TARGET ASSERTED XXX"); + cds_svc_fw_shutdown_ind(qdf_dev->dev); /* Collect the RAM dump through a workqueue */ if (ini_cfg->enable_ramdump_collection) qdf_sched_work(0, &ol_ctx->ramdump_work); diff --git a/core/cds/inc/cds_api.h b/core/cds/inc/cds_api.h index 8bfddf882dc7..5f5487711488 100644 --- a/core/cds/inc/cds_api.h +++ b/core/cds/inc/cds_api.h @@ -264,7 +264,7 @@ QDF_STATUS cds_flush_logs(uint32_t is_fatal, bool dump_mac_trace, bool recovery_needed); void cds_logging_set_fw_flush_complete(void); - +void cds_svc_fw_shutdown_ind(struct device *dev); #ifdef FEATURE_WLAN_DIAG_SUPPORT void cds_tdls_tx_rx_mgmt_event(uint8_t event_id, uint8_t tx_rx, uint8_t type, uint8_t sub_type, uint8_t *peer_mac); diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index ffbdefa50134..e37e9c729f25 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -2323,3 +2323,14 @@ bool cds_is_sub_20_mhz_enabled(void) return false; } +/** + * cds_svc_fw_shutdown_ind() - API to send userspace about FW crash + * + * @dev: Device Pointer + * + * Return: None + */ +void cds_svc_fw_shutdown_ind(struct device *dev) +{ + hdd_svc_fw_shutdown_ind(dev); +} diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index b8d1524e1c96..e0dfae71a240 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -1819,7 +1819,7 @@ QDF_STATUS hdd_sme_close_session_callback(void *pContext); int hdd_reassoc(hdd_adapter_t *adapter, const uint8_t *bssid, const uint8_t channel, const handoff_src src); - +void hdd_svc_fw_shutdown_ind(struct device *dev); int hdd_register_cb(hdd_context_t *hdd_ctx); void hdd_deregister_cb(hdd_context_t *hdd_ctx); int hdd_start_station_adapter(hdd_adapter_t *adapter); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 6375349c36ab..211603a66366 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -8168,6 +8168,7 @@ void wlan_hdd_send_svc_nlink_msg(int radio, int type, void *data, int len) switch (type) { case WLAN_SVC_FW_CRASHED_IND: + case WLAN_SVC_FW_SHUTDOWN_IND: case WLAN_SVC_LTE_COEX_IND: case WLAN_SVC_WLAN_AUTO_SHUTDOWN_IND: case WLAN_SVC_WLAN_AUTO_SHUTDOWN_CANCEL_IND: diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index 975ab449d96a..9e5826085f7b 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1384,6 +1384,30 @@ static void hdd_ssr_timer_start(int msec) ssr_timer_started = true; } +/** + * hdd_svc_fw_shutdown_ind() - API to send FW SHUTDOWN IND to Userspace + * + * @dev: Device Pointer + * + * Return: None + */ +void hdd_svc_fw_shutdown_ind(struct device *dev) +{ + hdd_context_t *hdd_ctx; + v_CONTEXT_t g_context; + + g_context = cds_get_global_context(); + + if (!g_context) + return; + + hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); + + hdd_ctx ? wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index, + WLAN_SVC_FW_SHUTDOWN_IND, + NULL, 0) : 0; +} + /** * hdd_wlan_shutdown() - HDD SSR shutdown function * diff --git a/core/utils/nlink/inc/wlan_nlink_common.h b/core/utils/nlink/inc/wlan_nlink_common.h index a23456dedb6e..7259990b0e21 100644 --- a/core/utils/nlink/inc/wlan_nlink_common.h +++ b/core/utils/nlink/inc/wlan_nlink_common.h @@ -85,6 +85,7 @@ #define WLAN_SVC_WLAN_TP_TX_IND 0x10B #define WLAN_SVC_WLAN_AUTO_SHUTDOWN_CANCEL_IND 0x10C #define WLAN_SVC_WLAN_RADIO_INDEX 0x10D +#define WLAN_SVC_FW_SHUTDOWN_IND 0x10E #define WLAN_SVC_MAX_SSID_LEN 32 #define WLAN_SVC_MAX_BSSID_LEN 6 #define WLAN_SVC_MAX_STR_LEN 16 -- cgit v1.2.3 From 498a0cd6657c4cd00936fd47322bab79fc180a6b Mon Sep 17 00:00:00 2001 From: Komal Seelam Date: Mon, 12 Sep 2016 10:29:02 +0530 Subject: qcacld-3.0: Optimize WoW Wakelock usage in Runtime PM propagation from qcacld-2.0 to qcacld-3.0. FW sends NACK for WOW command to indicate Host to abort on going suspend. Host prevents suspend by holding a wakelock for 1sec. The wakelock prevents APPS supsend, but doesn't have impact on Runtime PM. Hence Skip Holding Wakelock when NACK is recieved in Runtime PM. And Log the runtime stats when link resume fails. Change-Id: I6d9385565c6d06a082e226d5211c733d124bd3a7 CRs-Fixed: 1053252 --- 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 98aa53f37a08..53b7762ddef0 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -6654,7 +6654,7 @@ void wma_target_suspend_acknowledge(void *context, bool wow_nack) wma->wow_nack = wow_nack; qdf_event_set(&wma->target_suspend); - if (wow_nack) { + if (wow_nack && !wmi_get_runtime_pm_inprogress(wma->wmi_handle)) { cds_host_diag_log_work(&wma->wow_wake_lock, WMA_WAKE_LOCK_TIMEOUT, WIFI_POWER_EVENT_WAKELOCK_WOW); -- cgit v1.2.3 From ff259891b0126adfc09ccf316166439392ef2c44 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Mon, 26 Sep 2016 04:49:41 -0700 Subject: Release 5.1.0.28E Release 5.1.0.28E Change-Id: Ied6f8ee4c84b71ead829d89cdef74a71b6fccb46 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 6fec10d97e10..4961be7d0034 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -41,9 +41,9 @@ #define QWLAN_VERSION_MAJOR 5 #define QWLAN_VERSION_MINOR 1 #define QWLAN_VERSION_PATCH 0 -#define QWLAN_VERSION_EXTRA "D" +#define QWLAN_VERSION_EXTRA "E" #define QWLAN_VERSION_BUILD 28 -#define QWLAN_VERSIONSTR "5.1.0.28D" +#define QWLAN_VERSIONSTR "5.1.0.28E" #endif /* QWLAN_VERSION_H */ -- cgit v1.2.3