mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-23 12:58:23 +00:00
e94052bfee
Synchronize the ath11k backports with upstream linux.
Most of them are changes in kernel 6.5, the rest are
fixes for the ath11k_pci. The most important one is
"Revert 'wifi: ath11k: Enable threaded NAPI'", which
fixes the problem that QCN9074 cannot be used after
restarting on the x86 platform.
[ 23.462718] ath11k_pci 0000:02:00.0: failed to vdev 0 create peer for AP: -110
[ 28.503020] ath11k_pci 0000:02:00.0: Timeout in receiving vdev delete response
Changes to ipq8074 coldboot part pick from commit
b33bfcf
("mac80211: ath11k: sync with ath-next").
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
From 6aafa1c2d3e3fea2ebe84c018003f2a91722e607 Mon Sep 17 00:00:00 2001
|
|
From: P Praneesh <quic_ppranees@quicinc.com>
|
|
Date: Tue, 6 Jun 2023 14:41:28 +0530
|
|
Subject: [PATCH] wifi: ath11k: fix memory leak in WMI firmware stats
|
|
|
|
Memory allocated for firmware pdev, vdev and beacon statistics
|
|
are not released during rmmod.
|
|
|
|
Fix it by calling ath11k_fw_stats_free() function before hardware
|
|
unregister.
|
|
|
|
While at it, avoid calling ath11k_fw_stats_free() while processing
|
|
the firmware stats received in the WMI event because the local list
|
|
is getting spliced and reinitialised and hence there are no elements
|
|
in the list after splicing.
|
|
|
|
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
|
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/20230606091128.14202-1-quic_adisi@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/mac.c | 1 +
|
|
drivers/net/wireless/ath/ath11k/wmi.c | 5 +++++
|
|
2 files changed, 6 insertions(+)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -9792,6 +9792,7 @@ void ath11k_mac_destroy(struct ath11k_ba
|
|
if (!ar)
|
|
continue;
|
|
|
|
+ ath11k_fw_stats_free(&ar->fw_stats);
|
|
ieee80211_free_hw(ar->hw);
|
|
pdev->ar = NULL;
|
|
}
|
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
|
@@ -8119,6 +8119,11 @@ complete:
|
|
rcu_read_unlock();
|
|
spin_unlock_bh(&ar->data_lock);
|
|
|
|
+ /* Since the stats's pdev, vdev and beacon list are spliced and reinitialised
|
|
+ * at this point, no need to free the individual list.
|
|
+ */
|
|
+ return;
|
|
+
|
|
free:
|
|
ath11k_fw_stats_free(&stats);
|
|
}
|