From 5ac6bd29203b802969dbb3deb0eb0dc5252d9726 Mon Sep 17 00:00:00 2001 From: Sandeep Puligilla Date: Tue, 17 Oct 2017 12:33:56 -0700 Subject: [PATCH] qcacld-3.0: Allow recovery during firmware down Host is triggering crash during vdev response timeout handler when firmware is down. If firmware is down, Send failure response to upper layer from WMA vdev timeout response handler so that recovery can complete. Change-Id: Ib5cf2c539fded700b07a694fa6771c9ba8550173 CRs-Fixed: 2128282 --- core/hdd/src/wlan_hdd_driver_ops.c | 2 ++ core/wma/src/wma_dev_if.c | 3 ++- core/wma/src/wma_main.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/hdd/src/wlan_hdd_driver_ops.c b/core/hdd/src/wlan_hdd_driver_ops.c index 3bcefdb2a362..3beff6aecea8 100644 --- a/core/hdd/src/wlan_hdd_driver_ops.c +++ b/core/hdd/src/wlan_hdd_driver_ops.c @@ -1455,6 +1455,8 @@ static void wlan_hdd_purge_notifier(void) static void wlan_hdd_pld_uevent(struct device *dev, struct pld_uevent_data *uevent) { + + hdd_info("pld event %d", uevent->uevent); switch (uevent->uevent) { case PLD_RECOVERY: cds_set_recovery_in_progress(true); diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index cec3bf650916..61b91faf421d 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2723,7 +2723,8 @@ static inline bool wma_crash_on_fw_timeout(bool crash_enabled) if (cds_is_driver_recovering()) return false; - if (!cds_is_fw_down()) + /* Firmware is down send failure response */ + if (cds_is_fw_down()) return false; if (cds_is_driver_unloading()) diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index ae85f5db155b..cba14fe14edc 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -1933,6 +1933,8 @@ static void wma_cleanup_vdev_resp_queue(tp_wma_handle wma) return; } + WMA_LOGD(FL("Cleaning up vdev resp queue")); + /* peek front, and then cleanup it in wma_vdev_resp_timer */ while (qdf_list_peek_front(&wma->vdev_resp_queue, &node1) == QDF_STATUS_SUCCESS) {