aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/ath10k-ct
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/ath10k-ct')
-rw-r--r--package/kernel/ath10k-ct/Makefile17
-rw-r--r--package/kernel/ath10k-ct/patches/100-ath10k-ct-port-compilation-warning-for-debug-level-t.patch111
-rw-r--r--package/kernel/ath10k-ct/patches/130-ath10k-read-qcom-coexist-support-as-a-u32.patch60
-rw-r--r--package/kernel/ath10k-ct/patches/201-ath10k-add-LED-and-GPIO-controlling-support-for-various-chipsets.patch110
-rw-r--r--package/kernel/ath10k-ct/patches/202-ath10k-use-tpt-trigger-by-default.patch22
-rw-r--r--package/kernel/ath10k-ct/patches/203-ath10k-Try-to-get-mac-address-from-dts.patch61
-rw-r--r--package/kernel/ath10k-ct/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch4
-rw-r--r--package/kernel/ath10k-ct/patches/960-0011-ath10k-limit-pci-buffer-size.patch4
-rw-r--r--package/kernel/ath10k-ct/patches/988-ath10k-always-use-mac80211-loss-detection.patch28
9 files changed, 277 insertions, 140 deletions
diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile
index 5681c5c2cdc..9c0029d3bdb 100644
--- a/package/kernel/ath10k-ct/Makefile
+++ b/package/kernel/ath10k-ct/Makefile
@@ -1,21 +1,21 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ath10k-ct
-PKG_RELEASE:=$(AUTORELEASE)
+PKG_RELEASE:=1
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2021-06-03
-PKG_SOURCE_VERSION:=b44cd7b2e7b0df5995ece18f358d4dfc40834ba1
-PKG_MIRROR_HASH:=59f961ad425eb1a48fa9c391a325cc0f23845daec9d12673445d3077f9756cf0
+PKG_SOURCE_DATE:=2023-06-05
+PKG_SOURCE_VERSION:=fadd0768cbd22248a60efbb219ccefc9d86cd78c
+PKG_MIRROR_HASH:=513f62765ba3a2f423099426fbba86b854f3de0ab13ec2ab6e2780577ea75f95
-# Build the 5.10 ath10k-ct driver version.
+# Build the 6.4 ath10k-ct driver version.
# Probably this should match as closely as
# possible to whatever mac80211 backports version is being used.
-CT_KVER="-5.10"
+CT_KVER="-6.4"
PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
PKG_BUILD_PARALLEL:=1
@@ -29,7 +29,7 @@ include $(INCLUDE_DIR)/package.mk
define KernelPackage/ath10k-ct
SUBMENU:=Wireless Drivers
TITLE:=ath10k-ct driver optimized for CT ath10k firmware
- DEPENDS:=+kmod-mac80211 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT @PCI_SUPPORT +kmod-hwmon-core
+ DEPENDS:=+kmod-mac80211 +kmod-ath +@DRIVER_11AC_SUPPORT @PCI_SUPPORT +kmod-hwmon-core
FILES:=\
$(PKG_BUILD_DIR)/ath10k$(CT_KVER)/ath10k_pci.ko \
$(PKG_BUILD_DIR)/ath10k$(CT_KVER)/ath10k_core.ko
@@ -111,8 +111,7 @@ ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
endif
define Build/Compile
- +$(MAKE) $(CT_MAKEDEFS) $(PKG_JOBS) -C "$(LINUX_DIR)" \
- $(KERNEL_MAKE_FLAGS) \
+ +$(KERNEL_MAKE) $(CT_MAKEDEFS) $(PKG_JOBS) \
M="$(PKG_BUILD_DIR)/ath10k$(CT_KVER)" \
NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
modules
diff --git a/package/kernel/ath10k-ct/patches/100-ath10k-ct-port-compilation-warning-for-debug-level-t.patch b/package/kernel/ath10k-ct/patches/100-ath10k-ct-port-compilation-warning-for-debug-level-t.patch
new file mode 100644
index 00000000000..f4522c87b43
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/100-ath10k-ct-port-compilation-warning-for-debug-level-t.patch
@@ -0,0 +1,111 @@
+From a227621b46df8a7a5c276131b245f40eac7513fb Mon Sep 17 00:00:00 2001
+From: Christian Marangi <ansuelsmth@gmail.com>
+Date: Fri, 3 Nov 2023 04:03:08 +0100
+Subject: [PATCH] ath10k-ct: port compilation warning for debug level to kernel
+ 6.4
+
+Port compilation warning for debug level previously fixed in other
+kernel to kernel version 6.4.
+
+Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
+---
+ ath10k-6.4/debug.c | 85 ++++++++++++++++++++++++++--------------------
+ 1 file changed, 48 insertions(+), 37 deletions(-)
+
+--- a/ath10k-6.4/debug.c
++++ b/ath10k-6.4/debug.c
+@@ -1345,47 +1345,58 @@ static const struct file_operations fops
+ .llseek = default_llseek,
+ };
+
++static const char debug_level_buf[] =
++ "To change debug level, set value adding up desired flags:\n"
++ "PCI: 0x1\n"
++ "WMI: 0x2\n"
++ "HTC: 0x4\n"
++ "HTT: 0x8\n"
++ "MAC: 0x10\n"
++ "BOOT: 0x20\n"
++ "PCI-DUMP: 0x40\n"
++ "HTT-DUMP: 0x80\n"
++ "MGMT: 0x100\n"
++ "DATA: 0x200\n"
++ "BMI: 0x400\n"
++ "REGULATORY: 0x800\n"
++ "TESTMODE: 0x1000\n"
++ "WMI-PRINT: 0x2000\n"
++ "PCI-PS: 0x4000\n"
++ "AHB: 0x8000\n"
++ "SDIO: 0x10000\n"
++ "SDIO_DUMP: 0x20000\n"
++ "USB: 0x40000\n"
++ "USB_BULK: 0x80000\n"
++ "SNOC: 0x100000\n"
++ "QMI: 0x200000\n"
++ "BEACONS: 0x8000000\n"
++ "NO-FW-DBGLOG:0x10000000\n"
++ "MAC2: 0x20000000\n"
++ "INFO-AS-DBG: 0x40000000\n"
++ "FW: 0x80000000\n"
++ "ALL: 0xEFFFFFFF\n";
++
++#define READ_DEBUG_LEVEL_SIZE sizeof(debug_level_buf) + 60
++
+ static ssize_t ath10k_read_debug_level(struct file *file,
+ char __user *user_buf,
+ size_t count, loff_t *ppos)
+ {
+- int sz;
+- const char buf[] =
+- "To change debug level, set value adding up desired flags:\n"
+- "PCI: 0x1\n"
+- "WMI: 0x2\n"
+- "HTC: 0x4\n"
+- "HTT: 0x8\n"
+- "MAC: 0x10\n"
+- "BOOT: 0x20\n"
+- "PCI-DUMP: 0x40\n"
+- "HTT-DUMP: 0x80\n"
+- "MGMT: 0x100\n"
+- "DATA: 0x200\n"
+- "BMI: 0x400\n"
+- "REGULATORY: 0x800\n"
+- "TESTMODE: 0x1000\n"
+- "WMI-PRINT: 0x2000\n"
+- "PCI-PS: 0x4000\n"
+- "AHB: 0x8000\n"
+- "SDIO: 0x10000\n"
+- "SDIO_DUMP: 0x20000\n"
+- "USB: 0x40000\n"
+- "USB_BULK: 0x80000\n"
+- "SNOC: 0x100000\n"
+- "QMI: 0x200000\n"
+- "BEACONS: 0x8000000\n"
+- "NO-FW-DBGLOG:0x10000000\n"
+- "MAC2: 0x20000000\n"
+- "INFO-AS-DBG: 0x40000000\n"
+- "FW: 0x80000000\n"
+- "ALL: 0xEFFFFFFF\n";
+- char wbuf[sizeof(buf) + 60];
+- sz = snprintf(wbuf, sizeof(wbuf), "Current debug level: 0x%x\n\n%s",
+- ath10k_debug_mask, buf);
+- wbuf[sizeof(wbuf) - 1] = 0;
++ int sz, ret;
++ char *wbuf;
++
++ wbuf = kcalloc(READ_DEBUG_LEVEL_SIZE, sizeof(char), GFP_KERNEL);
++ if (!wbuf)
++ return -ENOMEM;
++
++ sz = snprintf(wbuf, READ_DEBUG_LEVEL_SIZE,
++ "Current debug level: 0x%x\n\n%s",
++ ath10k_debug_mask, debug_level_buf);
++
++ ret = simple_read_from_buffer(user_buf, count, ppos, wbuf, sz);
++ kfree(wbuf);
+
+- return simple_read_from_buffer(user_buf, count, ppos, wbuf, sz);
++ return ret;
+ }
+
+ /* Set logging level.
diff --git a/package/kernel/ath10k-ct/patches/130-ath10k-read-qcom-coexist-support-as-a-u32.patch b/package/kernel/ath10k-ct/patches/130-ath10k-read-qcom-coexist-support-as-a-u32.patch
new file mode 100644
index 00000000000..891973f38db
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/130-ath10k-read-qcom-coexist-support-as-a-u32.patch
@@ -0,0 +1,60 @@
+From 630df9786fdaeb78c21f1e28c9b70ac83a1b482c Mon Sep 17 00:00:00 2001
+From: Vincent Tremblay <vincent@vtremblay.dev>
+Date: Sat, 31 Dec 2022 09:24:00 -0500
+Subject: [PATCH] ath10k: read qcom,coexist-support as a u32
+
+Read qcom,coexist-support as a u32 instead of a u8
+
+When we set the property to <1> in the DT (as specified in the doc),
+"of_property_read_u8" read 0 instead of 1. This is because of the data format.
+
+By default <1> is written with 32 bits.
+The problem is that the driver is trying to read a u8.
+
+The difference can be visualized using hexdump in a running device:
+Default 32 bits output:
+=======================
+0000000 0000 0100
+0000004
+
+8 bits output:
+==============
+0000000 0001
+0000001
+
+By changing "of_property_read_u8" by "of_property_read_u32", the driver
+is aligned with the documentation and is able to read the value without
+modifying the DT.
+
+The other solution would be to force the value in the DT to be saved as
+an 8 bits value (qcom,coexist-support = /bits/ 8 <1>),
+which is against the doc and less intuitive.
+
+Validation:
+===========
+The patch was tested on a real device and we can see in the debug logs
+that the feature is properly initialized:
+
+[ 109.102097] ath10k_ahb a000000.wifi: boot coex_support 1 coex_gpio_pin 52
+
+Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
+
+--- a/ath10k-6.4/core.c
++++ b/ath10k-6.4/core.c
+@@ -2869,14 +2869,14 @@ done:
+ static void ath10k_core_fetch_btcoex_dt(struct ath10k *ar)
+ {
+ struct device_node *node;
+- u8 coex_support = 0;
++ u32 coex_support = 0;
+ int ret;
+
+ node = ar->dev->of_node;
+ if (!node)
+ goto out;
+
+- ret = of_property_read_u8(node, "qcom,coexist-support", &coex_support);
++ ret = of_property_read_u32(node, "qcom,coexist-support", &coex_support);
+ if (ret) {
+ ar->coex_support = true;
+ goto out;
diff --git a/package/kernel/ath10k-ct/patches/201-ath10k-add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/ath10k-ct/patches/201-ath10k-add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
index 691b504c0f6..8eb587b877b 100644
--- a/package/kernel/ath10k-ct/patches/201-ath10k-add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
+++ b/package/kernel/ath10k-ct/patches/201-ath10k-add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
@@ -66,25 +66,25 @@ v13:
* cleanup includes
- ath10k-5.10/Kconfig | 10 +++
- ath10k-5.10/Makefile | 1 +
- ath10k-5.10/core.c | 22 +++++++
- ath10k-5.10/core.h | 9 ++-
- ath10k-5.10/hw.h | 1 +
- ath10k-5.10/leds.c | 103 ++++++++++++++++++++++++++++++
- ath10k-5.10/leds.h | 45 +++++++++++++
- ath10k-5.10/mac.c | 1 +
- ath10k-5.10/wmi-ops.h | 32 ++++++++++
- ath10k-5.10/wmi-tlv.c | 2 +
- ath10k-5.10/wmi.c | 54 ++++++++++++++++
- ath10k-5.10/wmi.h | 35 ++++++++++
+ ath10k-6.4/Kconfig | 10 +++
+ ath10k-6.4/Makefile | 1 +
+ ath10k-6.4/core.c | 22 +++++++
+ ath10k-6.4/core.h | 9 ++-
+ ath10k-6.4/hw.h | 1 +
+ ath10k-6.4/leds.c | 103 ++++++++++++++++++++++++++++++
+ ath10k-6.4/leds.h | 45 +++++++++++++
+ ath10k-6.4/mac.c | 1 +
+ ath10k-6.4/wmi-ops.h | 32 ++++++++++
+ ath10k-6.4/wmi-tlv.c | 2 +
+ ath10k-6.4/wmi.c | 54 ++++++++++++++++
+ ath10k-6.4/wmi.h | 35 ++++++++++
12 files changed, 314 insertions(+), 1 deletion(-)
- create mode 100644 ath10k-5.10/leds.c
- create mode 100644 ath10k-5.10/leds.h
+ create mode 100644 ath10k-6.4/leds.c
+ create mode 100644 ath10k-6.4/leds.h
---- a/ath10k-5.10/Kconfig
-+++ b/ath10k-5.10/Kconfig
-@@ -65,6 +65,16 @@ config ATH10K_DEBUGFS
+--- a/ath10k-6.4/Kconfig
++++ b/ath10k-6.4/Kconfig
+@@ -67,6 +67,16 @@ config ATH10K_DEBUGFS
If unsure, say Y to make it easier to debug problems.
@@ -101,8 +101,8 @@ v13:
config ATH10K_SPECTRAL
bool "Atheros ath10k spectral scan support"
depends on ATH10K_DEBUGFS
---- a/ath10k-5.10/Makefile
-+++ b/ath10k-5.10/Makefile
+--- a/ath10k-6.4/Makefile
++++ b/ath10k-6.4/Makefile
@@ -20,6 +20,7 @@ ath10k_core-$(CONFIG_ATH10K_SPECTRAL) +=
ath10k_core-$(CONFIG_NL80211_TESTMODE) += testmode.o
ath10k_core-$(CONFIG_ATH10K_TRACING) += trace.o
@@ -111,9 +111,9 @@ v13:
ath10k_core-$(CONFIG_MAC80211_DEBUGFS) += debugfs_sta.o
ath10k_core-$(CONFIG_PM) += wow.o
ath10k_core-$(CONFIG_ATH10K_CE) += ce.o
---- a/ath10k-5.10/core.c
-+++ b/ath10k-5.10/core.c
-@@ -26,6 +26,7 @@
+--- a/ath10k-6.4/core.c
++++ b/ath10k-6.4/core.c
+@@ -28,6 +28,7 @@
#include "testmode.h"
#include "wmi-ops.h"
#include "coredump.h"
@@ -121,7 +121,7 @@ v13:
/* Disable ath10k-ct DBGLOG output by default */
unsigned int ath10k_debug_mask = ATH10K_DBG_NO_DBGLOG;
-@@ -68,6 +69,7 @@ static const struct ath10k_hw_params ath
+@@ -78,6 +79,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA988X_2_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca988x hw2.0",
@@ -129,7 +129,7 @@ v13:
.patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
-@@ -137,6 +139,7 @@ static const struct ath10k_hw_params ath
+@@ -159,6 +161,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA9887_1_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca9887 hw1.0",
@@ -137,7 +137,7 @@ v13:
.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
-@@ -342,6 +345,7 @@ static const struct ath10k_hw_params ath
+@@ -400,6 +403,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA99X0_2_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca99x0 hw2.0",
@@ -145,7 +145,7 @@ v13:
.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.otp_exe_param = 0x00000700,
-@@ -382,6 +386,7 @@ static const struct ath10k_hw_params ath
+@@ -446,6 +450,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA9984_1_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca9984/qca9994 hw1.0",
@@ -153,7 +153,7 @@ v13:
.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -429,6 +434,7 @@ static const struct ath10k_hw_params ath
+@@ -499,6 +504,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA9888_2_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca9888 hw2.0",
@@ -161,7 +161,7 @@ v13:
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -3705,6 +3711,10 @@ int ath10k_core_start(struct ath10k *ar,
+@@ -4080,6 +4086,10 @@ int ath10k_core_start(struct ath10k *ar,
ath10k_wmi_check_apply_board_power_ctl_table(ar);
}
@@ -172,7 +172,7 @@ v13:
return 0;
err_hif_stop:
-@@ -3963,9 +3973,18 @@ static void ath10k_core_register_work(st
+@@ -4341,9 +4351,18 @@ static void ath10k_core_register_work(st
goto err_spectral_destroy;
}
@@ -191,7 +191,7 @@ v13:
err_spectral_destroy:
ath10k_spectral_destroy(ar);
err_debug_destroy:
-@@ -4025,6 +4044,8 @@ void ath10k_core_unregister(struct ath10
+@@ -4403,6 +4422,8 @@ void ath10k_core_unregister(struct ath10
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
return;
@@ -200,8 +200,8 @@ v13:
ath10k_thermal_unregister(ar);
/* Stop spectral before unregistering from mac80211 to remove the
* relayfs debugfs file cleanly. Otherwise the parent debugfs tree
---- a/ath10k-5.10/core.h
-+++ b/ath10k-5.10/core.h
+--- a/ath10k-6.4/core.h
++++ b/ath10k-6.4/core.h
@@ -14,6 +14,7 @@
#include <linux/pci.h>
#include <linux/uuid.h>
@@ -210,7 +210,7 @@ v13:
#include "htt.h"
#include "htc.h"
-@@ -1557,6 +1558,13 @@ struct ath10k {
+@@ -1586,6 +1587,13 @@ struct ath10k {
} testmode;
struct {
@@ -224,9 +224,9 @@ v13:
/* protected by data_lock */
u32 rx_crc_err_drop;
u32 fw_crash_counter;
---- a/ath10k-5.10/hw.h
-+++ b/ath10k-5.10/hw.h
-@@ -521,6 +521,7 @@ struct ath10k_hw_params {
+--- a/ath10k-6.4/hw.h
++++ b/ath10k-6.4/hw.h
+@@ -523,6 +523,7 @@ struct ath10k_hw_params {
const char *name;
u32 patch_load_addr;
int uart_pin;
@@ -235,7 +235,7 @@ v13:
/* Type of hw cycle counter wraparound logic, for more info
--- /dev/null
-+++ b/ath10k-5.10/leds.c
++++ b/ath10k-6.4/leds.c
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2005-2011 Atheros Communications Inc.
@@ -341,7 +341,7 @@ v13:
+}
+
--- /dev/null
-+++ b/ath10k-5.10/leds.h
++++ b/ath10k-6.4/leds.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018, The Linux Foundation. All rights reserved.
@@ -384,8 +384,8 @@ v13:
+
+#endif
+#endif /* _LEDS_H_ */
---- a/ath10k-5.10/mac.c
-+++ b/ath10k-5.10/mac.c
+--- a/ath10k-6.4/mac.c
++++ b/ath10k-6.4/mac.c
@@ -25,6 +25,7 @@
#include "wmi-tlv.h"
#include "wmi-ops.h"
@@ -394,8 +394,8 @@ v13:
/*********/
/* Rates */
---- a/ath10k-5.10/wmi-ops.h
-+++ b/ath10k-5.10/wmi-ops.h
+--- a/ath10k-6.4/wmi-ops.h
++++ b/ath10k-6.4/wmi-ops.h
@@ -228,7 +228,10 @@ struct wmi_ops {
const struct wmi_bb_timing_cfg_arg *arg);
struct sk_buff *(*gen_per_peer_per_tid_cfg)(struct ath10k *ar,
@@ -443,9 +443,9 @@ v13:
static inline int
ath10k_wmi_dbglog_cfg(struct ath10k *ar, u64 module_enable, u32 log_level)
{
---- a/ath10k-5.10/wmi-tlv.c
-+++ b/ath10k-5.10/wmi-tlv.c
-@@ -4594,6 +4594,8 @@ static const struct wmi_ops wmi_tlv_ops
+--- a/ath10k-6.4/wmi-tlv.c
++++ b/ath10k-6.4/wmi-tlv.c
+@@ -4601,6 +4601,8 @@ static const struct wmi_ops wmi_tlv_ops
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
@@ -454,9 +454,9 @@ v13:
};
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
---- a/ath10k-5.10/wmi.c
-+++ b/ath10k-5.10/wmi.c
-@@ -8409,6 +8409,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
+--- a/ath10k-6.4/wmi.c
++++ b/ath10k-6.4/wmi.c
+@@ -8438,6 +8438,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
return skb;
}
@@ -506,7 +506,7 @@ v13:
static struct sk_buff *
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
enum wmi_sta_ps_mode psmode)
-@@ -10238,6 +10281,9 @@ static const struct wmi_ops wmi_ops = {
+@@ -10269,6 +10312,9 @@ static const struct wmi_ops wmi_ops = {
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@@ -516,7 +516,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
-@@ -10308,6 +10354,8 @@ static const struct wmi_ops wmi_10_1_ops
+@@ -10339,6 +10385,8 @@ static const struct wmi_ops wmi_10_1_ops
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@@ -525,7 +525,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
-@@ -10387,6 +10435,8 @@ static const struct wmi_ops wmi_10_2_ops
+@@ -10418,6 +10466,8 @@ static const struct wmi_ops wmi_10_2_ops
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@@ -534,7 +534,7 @@ v13:
/* .gen_pdev_enable_adaptive_cca not implemented */
};
-@@ -10458,6 +10508,8 @@ static const struct wmi_ops wmi_10_2_4_o
+@@ -10489,6 +10539,8 @@ static const struct wmi_ops wmi_10_2_4_o
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
@@ -543,7 +543,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
-@@ -10540,6 +10592,8 @@ static const struct wmi_ops wmi_10_4_ops
+@@ -10571,6 +10623,8 @@ static const struct wmi_ops wmi_10_4_ops
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
.gen_echo = ath10k_wmi_op_gen_echo,
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
@@ -552,8 +552,8 @@ v13:
};
int ath10k_wmi_attach(struct ath10k *ar)
---- a/ath10k-5.10/wmi.h
-+++ b/ath10k-5.10/wmi.h
+--- a/ath10k-6.4/wmi.h
++++ b/ath10k-6.4/wmi.h
@@ -3133,6 +3133,41 @@ enum wmi_10_4_feature_mask {
};
diff --git a/package/kernel/ath10k-ct/patches/202-ath10k-use-tpt-trigger-by-default.patch b/package/kernel/ath10k-ct/patches/202-ath10k-use-tpt-trigger-by-default.patch
index 6205c9b6614..4f9cf83c488 100644
--- a/package/kernel/ath10k-ct/patches/202-ath10k-use-tpt-trigger-by-default.patch
+++ b/package/kernel/ath10k-ct/patches/202-ath10k-use-tpt-trigger-by-default.patch
@@ -9,14 +9,14 @@ traffic.
Signed-off-by: Mathias Kresin <dev@kresin.me>
---
- ath10k-5.10/core.h | 4 ++++
- ath10k-5.10/leds.c | 4 +---
- ath10k-5.10/mac.c | 2 +-
+ ath10k-6.4/core.h | 4 ++++
+ ath10k-6.4/leds.c | 4 +---
+ ath10k-6.4/mac.c | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
---- a/ath10k-5.10/core.h
-+++ b/ath10k-5.10/core.h
-@@ -1665,6 +1665,10 @@ struct ath10k {
+--- a/ath10k-6.4/core.h
++++ b/ath10k-6.4/core.h
+@@ -1701,6 +1701,10 @@ struct ath10k {
u8 csi_data[4096];
u16 csi_data_len;
@@ -27,8 +27,8 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
/* must be last */
u8 drv_priv[] __aligned(sizeof(void *));
};
---- a/ath10k-5.10/leds.c
-+++ b/ath10k-5.10/leds.c
+--- a/ath10k-6.4/leds.c
++++ b/ath10k-6.4/leds.c
@@ -81,9 +81,7 @@ int ath10k_leds_register(struct ath10k *
ar->leds.cdev.name = ar->leds.label;
@@ -40,9 +40,9 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
ret = led_classdev_register(wiphy_dev(ar->hw->wiphy), &ar->leds.cdev);
if (ret)
---- a/ath10k-5.10/mac.c
-+++ b/ath10k-5.10/mac.c
-@@ -11403,7 +11403,7 @@ int ath10k_mac_register(struct ath10k *a
+--- a/ath10k-6.4/mac.c
++++ b/ath10k-6.4/mac.c
+@@ -11616,7 +11616,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
#ifdef CPTCFG_MAC80211_LEDS
diff --git a/package/kernel/ath10k-ct/patches/203-ath10k-Try-to-get-mac-address-from-dts.patch b/package/kernel/ath10k-ct/patches/203-ath10k-Try-to-get-mac-address-from-dts.patch
deleted file mode 100644
index b5c53baf67e..00000000000
--- a/package/kernel/ath10k-ct/patches/203-ath10k-Try-to-get-mac-address-from-dts.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 22fb5991a44c78ff18ec0082dc90c809356eb893 Mon Sep 17 00:00:00 2001
-From: Ansuel Smith <ansuelsmth@gmail.com>
-Date: Sun, 27 Sep 2020 19:23:35 +0200
-Subject: [PATCH 1/2] ath10k: Try to get mac-address from dts
-
-Most of embedded device that have the ath10k wifi integrated store the
-mac-address in nvmem partitions. Try to fetch the mac-address using the
-standard 'of_get_mac_address' than in all the check also try to fetch the
-address using the nvmem api searching for a defined 'mac-address' cell.
-Mac-address defined in the dts have priority than any other address found.
-
-Tested-on: QCA9984 hw1.0 PCI 10.4
-
-Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
----
- ath10k-5.10/core.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/ath10k-5.10/core.c b/ath10k-5.10/core.c
-index 5f4e12196..9ed7b9883 100644
---- a/ath10k-5.10/core.c
-+++ b/ath10k-5.10/core.c
-@@ -8,6 +8,9 @@
- #include <linux/module.h>
- #include <linux/firmware.h>
- #include <linux/of.h>
-+#include <linux/of_net.h>
-+#include <linux/of_platform.h>
-+#include <linux/property.h>
- #include <linux/property.h>
- #include <linux/dmi.h>
- #include <linux/ctype.h>
-@@ -2961,8 +2963,14 @@ EXPORT_SYMBOL(ath10k_core_stop);
- static int ath10k_core_probe_fw(struct ath10k *ar)
- {
- struct bmi_target_info target_info;
-+ const char *mac;
- int ret = 0;
-
-+#ifdef CONFIG_OF
-+ /* register the platform to be found by the of api */
-+ of_platform_device_create(ar->dev->of_node, NULL, NULL);
-+#endif
-+
- ret = ath10k_hif_power_up(ar, ATH10K_FIRMWARE_MODE_NORMAL);
- if (ret) {
- ath10k_err(ar, "could not power on hif bus (%d)\n", ret);
-@@ -3062,6 +3068,10 @@ static int ath10k_core_probe_fw(struct ath10k *ar)
-
- device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
-
-+ mac = of_get_mac_address(ar->dev->of_node);
-+ if (!IS_ERR(mac))
-+ ether_addr_copy(ar->mac_addr, mac);
-+
- ret = ath10k_core_init_firmware_features(ar);
- if (ret) {
- ath10k_err(ar, "fatal problem with firmware features: %d\n",
---
-2.27.0
-
diff --git a/package/kernel/ath10k-ct/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch b/package/kernel/ath10k-ct/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
index af9c3d455b5..b0e6ef76fa4 100644
--- a/package/kernel/ath10k-ct/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
+++ b/package/kernel/ath10k-ct/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
@@ -1,5 +1,5 @@
---- a/ath10k-5.10/htt.h
-+++ b/ath10k-5.10/htt.h
+--- a/ath10k-6.4/htt.h
++++ b/ath10k-6.4/htt.h
@@ -237,7 +237,11 @@ enum htt_rx_ring_flags {
};
diff --git a/package/kernel/ath10k-ct/patches/960-0011-ath10k-limit-pci-buffer-size.patch b/package/kernel/ath10k-ct/patches/960-0011-ath10k-limit-pci-buffer-size.patch
index 1fc2566f9c8..82109995d99 100644
--- a/package/kernel/ath10k-ct/patches/960-0011-ath10k-limit-pci-buffer-size.patch
+++ b/package/kernel/ath10k-ct/patches/960-0011-ath10k-limit-pci-buffer-size.patch
@@ -1,5 +1,5 @@
---- a/ath10k-5.10/pci.c
-+++ b/ath10k-5.10/pci.c
+--- a/ath10k-6.4/pci.c
++++ b/ath10k-6.4/pci.c
@@ -131,7 +131,11 @@ static const struct ce_attr pci_host_ce_
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
diff --git a/package/kernel/ath10k-ct/patches/988-ath10k-always-use-mac80211-loss-detection.patch b/package/kernel/ath10k-ct/patches/988-ath10k-always-use-mac80211-loss-detection.patch
new file mode 100644
index 00000000000..8aef577debc
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/988-ath10k-always-use-mac80211-loss-detection.patch
@@ -0,0 +1,28 @@
+From f7d6edafe4358e3880a26775cfde4cd5c71ba063 Mon Sep 17 00:00:00 2001
+From: David Bauer <mail@david-bauer.net>
+Date: Wed, 5 Jul 2023 01:30:29 +0200
+Subject: [PATCH] ath10k: always use mac80211 loss detection
+
+ath10k does not report excessive loss in case of broken block-ack
+sessions. The loss is communicated to the host-os, but ath10k does not
+trigger a low-ack events by itself.
+
+The mac80211 framework for loss detection however detects this
+circumstance well in case of ath10k. So use it regardless of ath10k's
+own loss detection mechanism.
+
+Signed-off-by: David Bauer <mail@david-bauer.net>
+---
+ ath10k-6.4/mac.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/ath10k-6.4/mac.c
++++ b/ath10k-6.4/mac.c
+@@ -11305,7 +11305,6 @@ int ath10k_mac_register(struct ath10k *a
+ ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA);
+ ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
+ ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
+- ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
+
+ if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags))
+ ieee80211_hw_set(ar->hw, SW_CRYPTO_CONTROL);