qcacmn: Process FW diag events in a separate worker thread

Currently, FW diag logs, management frames and stats responses are
processed in worker context. Because of this, there is a possible
out of memory scenario when there are huge number of diag events
waiting in work queue.

To address this, process diag events in a separate worker thread and
set the limit for the number of diag events that can be queued in
work queue.

Change-Id: Ie6e5b905a3b591cf724cd6b024bec0612f9e2e0c
CRs-Fixed: 2818013
This commit is contained in:
Bapiraju Alla
2020-11-16 15:56:57 +05:30
committed by snandini
parent 8652562a87
commit b130521bd3
4 changed files with 129 additions and 32 deletions

View File

@@ -144,13 +144,15 @@ enum wmi_target_type {
* @WMI_RX_WORK_CTX: work queue context execution provided by WMI layer
* @WMI_RX_UMAC_CTX: execution context provided by umac layer
* @WMI_RX_SERIALIZER_CTX: Execution context is serialized thread context
* @WMI_RX_DIAG_WORK_CTX: work queue execution context for FW diag events
*
*/
enum wmi_rx_exec_ctx {
WMI_RX_WORK_CTX,
WMI_RX_UMAC_CTX,
WMI_RX_TASKLET_CTX = WMI_RX_UMAC_CTX,
WMI_RX_SERIALIZER_CTX = 2
WMI_RX_SERIALIZER_CTX = 2,
WMI_RX_DIAG_WORK_CTX
};
/**