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

@@ -2503,6 +2503,10 @@ struct wmi_unified {
qdf_nbuf_queue_t event_queue;
qdf_work_t rx_event_work;
qdf_workqueue_t *wmi_rx_work_queue;
qdf_spinlock_t diag_eventq_lock;
qdf_nbuf_queue_t diag_event_queue;
qdf_work_t rx_diag_event_work;
uint32_t wmi_rx_diag_events_dropped;
int wmi_stop_in_progress;
struct wmi_host_abi_version fw_abi_version;
struct wmi_host_abi_version final_abi_vers;