qcacld-3.0: 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: Ib9f7b8042479e8b2f4d67c9a4250932b018f29a4
CRs-Fixed: 2821534
This commit is contained in:
Bapiraju Alla 2020-11-18 13:24:54 +05:30 • committed by Gerrit - the friendly Code Review server
commit 807d167810

8
Kbuild
View file

@ -3554,6 +3554,14 @@ ccflags-y += -DSCAN_CHAN_STATS_EVENT_ENAB=$(CONFIG_SCAN_CHAN_STATS_EVENT_ENAB)
CONFIG_MAX_BCN_PROBE_IN_SCAN_QUEUE ?= 150
ccflags-y += -DMAX_BCN_PROBE_IN_SCAN_QUEUE=$(CONFIG_MAX_BCN_PROBE_IN_SCAN_QUEUE)
#CONFIG_RX_DIAG_WQ_MAX_SIZE maximum number FW diag events that can be queued in
#FW diag events work queue. Host driver will discard the all diag events after
#this limit is reached.
#
# Value 0 represents no limit and any non zero value represents the maximum
# size of the work queue.
CONFIG_RX_DIAG_WQ_MAX_SIZE ?= 0
ccflags-y += -DRX_DIAG_WQ_MAX_SIZE=$(CONFIG_RX_DIAG_WQ_MAX_SIZE)
CONFIG_MGMT_DESC_POOL_MAX ?= 64
ccflags-y += -DMGMT_DESC_POOL_MAX=$(CONFIG_MGMT_DESC_POOL_MAX)