Browse Source

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
Sandeep Puligilla 7 năm trước cách đây
mục cha
commit
5ac6bd2920

+ 2 - 0
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);

+ 2 - 1
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())

+ 2 - 0
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) {