diff options
| author | Karthik M <[email protected]> | 2023-04-28 20:01:37 +0300 |
|---|---|---|
| committer | Kalle Valo <[email protected]> | 2023-05-05 15:57:22 +0300 |
| commit | e995f3f602a3fd9c8e0f97f59b37002d4ab5ec83 (patch) | |
| tree | ecf314f2ce3bf855ca9b0db5b339f53fa1c08b60 /tools/perf/scripts/python/flamegraph.py | |
| parent | 5189a8dba849f0153f30561e3ac257e0be01abdd (diff) | |
wifi: ath12k: fix potential wmi_mgmt_tx_queue race condition
During stress test with maximum VAPs and peer connected, below warning
is seen:
[ 1079.110967] ath12k_pci 0004:01:00.0: mgmt tx queue is full
[ 1079.117708] ath12k_pci 0004:01:00.0: failed to queue management frame -28
[ 1079.123191] ath12k_pci 0004:01:00.0: mgmt tx queue is full
[ 1079.129960] ath12k_pci 0004:01:00.0: failed to queue management frame -28
[ 1079.135641] ath12k_pci 0004:01:00.0: mgmt tx queue is full
This is caused by potential race condition while accessing skb_queue_len().
When ath12k_mgmt_over_wmi_tx_work() and ath12k_mac_mgmt_tx() is called concurrently,
then skb_queue_len() might fetch list length which is modified by skb_queue_tail()
or skb_dequeue().
Replace skb_queue_len() with skb_queue_len_lockless() which will
prevent concurrent modified access using READ_ONCE(). And also use '>=',
in case we queue a few SKBs simultaneously.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Signed-off-by: Karthik M <[email protected]>
Signed-off-by: Ramya Gnanasekar <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'tools/perf/scripts/python/flamegraph.py')
0 files changed, 0 insertions, 0 deletions