qcacld-3.0: Add transition wait timeout detection to DSC

In order to catch and debug long waiting transitions, add a watchdog
timer to Driver Synchronization Core (DSC) transition start wait calls.
If the timer expires, panic the driver for offline debugging.

Change-Id: I557f87ada182ced389e7d5e63fe8b78f47e1d6b5
CRs-Fixed: 2328594
This commit is contained in:
Dustin Brown
2018-10-04 16:30:00 -07:00
committed by nshrivas
parent 7191780c4b
commit 045f3025eb
5 changed files with 116 additions and 29 deletions

View File

@@ -193,17 +193,23 @@ __dsc_driver_trans_start_wait(struct dsc_driver *driver, const char *desc)
__dsc_lock(driver);
/* try to start without waiting */
status = __dsc_driver_trans_start_nolock(driver, desc);
if (QDF_IS_STATUS_SUCCESS(status)) {
__dsc_unlock(driver);
return QDF_STATUS_SUCCESS;
}
if (QDF_IS_STATUS_SUCCESS(status))
goto unlock;
__dsc_trans_queue(&driver->trans, &tran, desc);
status = __dsc_trans_queue(&driver->trans, &tran, desc);
if (QDF_IS_STATUS_ERROR(status))
goto unlock;
__dsc_unlock(driver);
return __dsc_tran_wait(&tran);
unlock:
__dsc_unlock(driver);
return status;
}
QDF_STATUS