mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-15 01:10:29 +00:00
323e249ce8
This updates mac80211 to version 6.1.97-1. This code is based on Linux 6.1.97 and contains all fixes included in the upstream wireless subsystem from that kernel version. This includes many bugfixes and also some security fixes. The removed patches are already integrated in upstream Linux 6.1.97 or in backports. The following patches were integrated in upstream Linux: ath11k/0013-wifi-ath11k-synchronize-ath11k_mac_he_gi_to_nl80211_.patch ath11k/0035-wifi-ath11k-Use-platform_get_irq-to-get-the-interrup.patch ath11k/0036-wifi-ath11k-fix-SAC-bug-on-peer-addition-with-sta-ba.patch ath11k/0047-wifi-ath11k-fix-deinitialization-of-firmware-resourc.patch ath11k/0053-wifi-ath11k-fix-writing-to-unintended-memory-region.patch ath11k/0060-wifi-ath11k-Ignore-frags-from-uninitialized-peer-in-.patch ath11k/0065-wifi-ath11k-fix-tx-status-reporting-in-encap-offload.patch ath11k/0067-wifi-ath11k-Fix-SKB-corruption-in-REO-destination-ri.patch ath11k/0069-wifi-ath11k-fix-registration-of-6Ghz-only-phy-withou.patch ath11k/0080-wifi-ath11k-add-support-default-regdb-while-searchin.patch ath11k/0085-wifi-ath11k-fix-memory-leak-in-WMI-firmware-stats.patch ath11k/0086-wifi-ath11k-Add-missing-check-for-ioremap.patch ath11k/0096-wifi-ath11k-fix-boot-failure-with-one-MSI-vector.patch subsys/337-wifi-mac80211-fix-race-condition-on-enabling-fast-xm.patch The following patches were integrated in upstream backports: ath11k/901-wifi-ath11k-pci-fix-compilation-in-5.16-and-older.patch build/080-resv_start_op.patch build/110-backport_napi_build_skb.patch The following files are missing in backports, we do not have to remove them any more. Some were already missing before some were removed in this update: include/linux/cordic.h include/linux/crc8.h include/linux/eeprom_93cx6.h include/linux/wl12xx.h include/net/ieee80211.h backport-include/linux/bcm47xx_nvram.h include/linux/ath9k_platform.h include/net/bluetooth/ backports ships a dummy Mediatek wed header for older kernel versions. We backported the feature in our kernel, remove the dummy header: backport-include/linux/soc/mediatek/mtk_wed.h Remove header files for subsystems used form the mainline kernel: include/trace/events/qrtr.h include/net/rsi_91x.h backport-include/linux/platform_data/brcmnand.h Link: https://github.com/openwrt/openwrt/pull/15827 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
79 lines
3.0 KiB
Diff
79 lines
3.0 KiB
Diff
From 81e60b2dfb2744ab6642c4aa62534b4f711fdc5d Mon Sep 17 00:00:00 2001
|
|
From: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
|
Date: Tue, 27 Sep 2022 09:18:54 +0300
|
|
Subject: [PATCH] wifi: ath11k: stop tx queues immediately upon firmware exit
|
|
|
|
Currently, recovery flag is set immediately upon firmware
|
|
exit but tx queues are stopped once firmware arrives back
|
|
and is ready which is during ath11k_core_restart. Once
|
|
ieee80211 hw restart is completed, tx queues are resumed.
|
|
If during the time delta between firmware exit and firmware
|
|
ready, mac80211 send packets, currently ath11k will drop it
|
|
since recovery flag will be set. But warning prints will
|
|
come -
|
|
"ath11k c000000.wifi: failed to transmit frame -108"
|
|
|
|
If more tx packets are there, this could lead to flooding
|
|
of above print.
|
|
|
|
However, actually tx queues should be stopped immediately
|
|
when firmware leaves. This will prevent packets to get
|
|
dropped when firmware is recovering.
|
|
|
|
Add fix to stop tx queues immediately after firmware exit.
|
|
|
|
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1
|
|
|
|
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/20220923170235.18873-1-quic_adisi@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/core.c | 5 +----
|
|
drivers/net/wireless/ath/ath11k/core.h | 1 +
|
|
drivers/net/wireless/ath/ath11k/qmi.c | 3 +++
|
|
3 files changed, 5 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/core.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
|
@@ -1668,7 +1668,7 @@ static void ath11k_update_11d(struct wor
|
|
}
|
|
}
|
|
|
|
-static void ath11k_core_pre_reconfigure_recovery(struct ath11k_base *ab)
|
|
+void ath11k_core_pre_reconfigure_recovery(struct ath11k_base *ab)
|
|
{
|
|
struct ath11k *ar;
|
|
struct ath11k_pdev *pdev;
|
|
@@ -1757,9 +1757,6 @@ static void ath11k_core_restart(struct w
|
|
struct ath11k_base *ab = container_of(work, struct ath11k_base, restart_work);
|
|
int ret;
|
|
|
|
- if (!ab->is_reset)
|
|
- ath11k_core_pre_reconfigure_recovery(ab);
|
|
-
|
|
ret = ath11k_core_reconfigure_on_crash(ab);
|
|
if (ret) {
|
|
ath11k_err(ab, "failed to reconfigure driver on crash recovery\n");
|
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
|
@@ -1158,6 +1158,7 @@ int ath11k_core_check_smbios(struct ath1
|
|
void ath11k_core_halt(struct ath11k *ar);
|
|
int ath11k_core_resume(struct ath11k_base *ab);
|
|
int ath11k_core_suspend(struct ath11k_base *ab);
|
|
+void ath11k_core_pre_reconfigure_recovery(struct ath11k_base *ab);
|
|
|
|
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
|
|
const char *filename);
|
|
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
|
@@ -3169,6 +3169,9 @@ static void ath11k_qmi_driver_event_work
|
|
case ATH11K_QMI_EVENT_SERVER_EXIT:
|
|
set_bit(ATH11K_FLAG_CRASH_FLUSH, &ab->dev_flags);
|
|
set_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags);
|
|
+
|
|
+ if (!ab->is_reset)
|
|
+ ath11k_core_pre_reconfigure_recovery(ab);
|
|
break;
|
|
case ATH11K_QMI_EVENT_REQUEST_MEM:
|
|
ret = ath11k_qmi_event_mem_request(qmi);
|