From 951d51d0d401cf884f02a3c18ddac7c4ef49796b Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Wed, 23 Mar 2022 23:15:03 +0800 Subject: [PATCH] ath10k-ct/mt76: bump to latest 5.15 git HEAD --- package/kernel/ath10k-ct/Makefile | 4 +- ...calibration-data-via-nvmem-subsystem.patch | 162 ++++++++++++++++++ ...rolling-support-for-various-chipsets.patch | 106 ++++++------ ...02-ath10k-use-tpt-trigger-by-default.patch | 24 +-- ...0k-ct-Fix-spectral-scan-NULL-pointer.patch | 32 ++++ ...0-0010-ath10k-limit-htt-rx-ring-size.patch | 6 +- ...60-0011-ath10k-limit-pci-buffer-size.patch | 6 +- package/kernel/mt76/Makefile | 64 ++++++- ...x-mt76-driver-build-with-kernel-5.15.patch | 22 --- 9 files changed, 322 insertions(+), 104 deletions(-) create mode 100644 package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch create mode 100644 package/kernel/ath10k-ct/patches/300-ath10k-ct-Fix-spectral-scan-NULL-pointer.patch delete mode 100644 package/kernel/mt76/patches/001-fix-mt76-driver-build-with-kernel-5.15.patch diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile index 2753849fc..278f6d737 100644 --- a/package/kernel/ath10k-ct/Makefile +++ b/package/kernel/ath10k-ct/Makefile @@ -12,10 +12,10 @@ PKG_SOURCE_DATE:=2021-11-28 PKG_SOURCE_VERSION:=dc350bbf41d987c5b2db54405bcc9ef3cd66d5db PKG_MIRROR_HASH:=92422485c7b92be840a40bf8d157bb6731d14d3811907b6cb4e4cfab0777b60d -# Build the 5.10 ath10k-ct driver version. +# Build the 5.15 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="-5.15" PKG_MAINTAINER:=Ben Greear PKG_BUILD_PARALLEL:=1 diff --git a/package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch b/package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch new file mode 100644 index 000000000..2a4b09ac2 --- /dev/null +++ b/package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch @@ -0,0 +1,162 @@ +From e2333703373e8b81294da5d1c73c30154f75b082 Mon Sep 17 00:00:00 2001 +From: Christian Lamparter +Date: Fri, 15 Oct 2021 18:56:33 +0200 +Subject: [PATCH] ath10k: fetch (pre-)calibration data via nvmem subsystem + +On most embedded ath10k devices (like range extenders, +routers, accesspoints, ...) the calibration data is +stored in a easily accessible MTD partitions named +"ART", "caldata", "calibration", etc... + +Since commit 4b361cfa8624 ("mtd: core: add OTP nvmem provider support"): +MTD partitions and portions of them can be specified +as potential nvmem-cells which are accessible through +the nvmem subsystem. + +This feature - together with an nvmem cell definition either +in the platform data or via device-tree allows drivers to get +the (pre-)calibration data which is required for initializing +the WIFI. + +Tested with Netgear EX6150v2 (IPQ4018) + +Cc: Robert Marko +Cc: Thibaut Varene +Signed-off-by: Christian Lamparter +--- +--- a/ath10k-5.15/core.c ++++ b/ath10k-5.15/core.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -988,7 +989,8 @@ static int ath10k_core_get_board_id_from + } + + if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT || +- ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE) ++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE || ++ ar->cal_mode == ATH10K_PRE_CAL_MODE_NVMEM) + bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID; + else + bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID; +@@ -2087,7 +2089,8 @@ static int ath10k_download_and_run_otp(s + + /* As of now pre-cal is valid for 10_4 variants */ + if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT || +- ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE) ++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE || ++ ar->cal_mode == ATH10K_PRE_CAL_MODE_NVMEM) + bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL; + + ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result); +@@ -2221,6 +2224,39 @@ struct ath10k_bss_rom_ie { + __le32 rom_len; + } __packed; + ++static int ath10k_download_cal_nvmem(struct ath10k *ar, const char *cell_name) ++{ ++ struct nvmem_cell *cell; ++ void *buf; ++ size_t len; ++ int ret; ++ ++ cell = devm_nvmem_cell_get(ar->dev, cell_name); ++ if (IS_ERR(cell)) { ++ ret = PTR_ERR(cell); ++ return ret; ++ } ++ ++ buf = nvmem_cell_read(cell, &len); ++ if (IS_ERR(buf)) ++ return PTR_ERR(buf); ++ ++ if (ar->hw_params.cal_data_len != len) { ++ kfree(buf); ++ ath10k_warn(ar, "invalid calibration data length in nvmem-cell '%s': %zu != %u\n", ++ cell_name, len, ar->hw_params.cal_data_len); ++ return -EMSGSIZE; ++ } ++ ++ ret = ath10k_download_board_data(ar, buf, len); ++ kfree(buf); ++ if (ret) ++ ath10k_warn(ar, "failed to download calibration data from nvmem-cell '%s': %d\n", ++ cell_name, ret); ++ ++ return ret; ++} ++ + int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name, + struct ath10k_fw_file *fw_file) + { +@@ -2597,6 +2633,18 @@ static int ath10k_core_pre_cal_download( + { + int ret; + ++ ret = ath10k_download_cal_nvmem(ar, "pre-calibration"); ++ if (ret == 0) { ++ ar->cal_mode = ATH10K_PRE_CAL_MODE_NVMEM; ++ goto success; ++ } else if (ret == -EPROBE_DEFER) { ++ return ret; ++ } ++ ++ ath10k_dbg(ar, ATH10K_DBG_BOOT, ++ "boot did not find a pre-calibration nvmem-cell, try file next: %d\n", ++ ret); ++ + ret = ath10k_download_cal_file(ar, ar->pre_cal_file); + if (ret == 0) { + ar->cal_mode = ATH10K_PRE_CAL_MODE_FILE; +@@ -2663,6 +2711,18 @@ static int ath10k_download_cal_data(stru + "pre cal download procedure failed, try cal file: %d\n", + ret); + ++ ret = ath10k_download_cal_nvmem(ar, "calibration"); ++ if (ret == 0) { ++ ar->cal_mode = ATH10K_CAL_MODE_NVMEM; ++ goto done; ++ } else if (ret == -EPROBE_DEFER) { ++ return ret; ++ } ++ ++ ath10k_dbg(ar, ATH10K_DBG_BOOT, ++ "boot did not find a calibration nvmem-cell, try file next: %d\n", ++ ret); ++ + ret = ath10k_download_cal_file(ar, ar->cal_file); + if (ret == 0) { + ar->cal_mode = ATH10K_CAL_MODE_FILE; +--- a/ath10k-5.15/core.h ++++ b/ath10k-5.15/core.h +@@ -1109,8 +1109,10 @@ enum ath10k_cal_mode { + ATH10K_CAL_MODE_FILE, + ATH10K_CAL_MODE_OTP, + ATH10K_CAL_MODE_DT, ++ ATH10K_CAL_MODE_NVMEM, + ATH10K_PRE_CAL_MODE_FILE, + ATH10K_PRE_CAL_MODE_DT, ++ ATH10K_PRE_CAL_MODE_NVMEM, + ATH10K_CAL_MODE_EEPROM, + }; + +@@ -1130,10 +1132,14 @@ static inline const char *ath10k_cal_mod + return "otp"; + case ATH10K_CAL_MODE_DT: + return "dt"; ++ case ATH10K_CAL_MODE_NVMEM: ++ return "nvmem"; + case ATH10K_PRE_CAL_MODE_FILE: + return "pre-cal-file"; + case ATH10K_PRE_CAL_MODE_DT: + return "pre-cal-dt"; ++ case ATH10K_PRE_CAL_MODE_NVMEM: ++ return "pre-cal-nvmem"; + case ATH10K_CAL_MODE_EEPROM: + return "eeprom"; + } 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 e0c242f5d..0f75c496e 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-5.15/Kconfig | 10 +++ + ath10k-5.15/Makefile | 1 + + ath10k-5.15/core.c | 22 +++++++ + ath10k-5.15/core.h | 9 ++- + ath10k-5.15/hw.h | 1 + + ath10k-5.15/leds.c | 103 ++++++++++++++++++++++++++++++ + ath10k-5.15/leds.h | 45 +++++++++++++ + ath10k-5.15/mac.c | 1 + + ath10k-5.15/wmi-ops.h | 32 ++++++++++ + ath10k-5.15/wmi-tlv.c | 2 + + ath10k-5.15/wmi.c | 54 ++++++++++++++++ + ath10k-5.15/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-5.15/leds.c + create mode 100644 ath10k-5.15/leds.h ---- a/ath10k-5.10/Kconfig -+++ b/ath10k-5.10/Kconfig -@@ -65,6 +65,16 @@ config ATH10K_DEBUGFS +--- a/ath10k-5.15/Kconfig ++++ b/ath10k-5.15/Kconfig +@@ -66,6 +66,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-5.15/Makefile ++++ b/ath10k-5.15/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-5.15/core.c ++++ b/ath10k-5.15/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 +@@ -70,6 +71,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 +@@ -141,6 +143,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 +@@ -352,6 +355,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 +@@ -393,6 +397,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 +@@ -441,6 +446,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, +@@ -3942,6 +3948,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 +@@ -4203,9 +4213,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 +@@ -4265,6 +4284,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-5.15/core.h ++++ b/ath10k-5.15/core.h @@ -14,6 +14,7 @@ #include #include @@ -210,7 +210,7 @@ v13: #include "htt.h" #include "htc.h" -@@ -1557,6 +1558,13 @@ struct ath10k { +@@ -1577,6 +1578,13 @@ struct ath10k { } testmode; struct { @@ -224,8 +224,8 @@ 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 +--- a/ath10k-5.15/hw.h ++++ b/ath10k-5.15/hw.h @@ -521,6 +521,7 @@ struct ath10k_hw_params { const char *name; u32 patch_load_addr; @@ -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-5.15/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-5.15/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-5.15/mac.c ++++ b/ath10k-5.15/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-5.15/wmi-ops.h ++++ b/ath10k-5.15/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,8 +443,8 @@ 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 +--- a/ath10k-5.15/wmi-tlv.c ++++ b/ath10k-5.15/wmi-tlv.c @@ -4594,6 +4594,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, @@ -454,8 +454,8 @@ 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 +--- a/ath10k-5.15/wmi.c ++++ b/ath10k-5.15/wmi.c @@ -8409,6 +8409,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 = { +@@ -10240,6 +10283,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 +@@ -10310,6 +10356,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 +@@ -10389,6 +10437,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 +@@ -10460,6 +10510,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 +@@ -10542,6 +10594,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-5.15/wmi.h ++++ b/ath10k-5.15/wmi.h @@ -3133,6 +3133,41 @@ enum wmi_10_4_feature_mask { }; @@ -595,4 +595,4 @@ v13: + struct wmi_ext_resource_config_10_4_cmd { /* contains enum wmi_host_platform_type */ - __le32 host_platform_config; \ No newline at end of file + __le32 host_platform_config; 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 bee16f67b..4c4a0edd5 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 --- - ath10k-5.10/core.h | 4 ++++ - ath10k-5.10/leds.c | 4 +--- - ath10k-5.10/mac.c | 2 +- + ath10k-5.15/core.h | 4 ++++ + ath10k-5.15/leds.c | 4 +--- + ath10k-5.15/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-5.15/core.h ++++ b/ath10k-5.15/core.h +@@ -1692,6 +1692,10 @@ struct ath10k { u8 csi_data[4096]; u16 csi_data_len; @@ -27,8 +27,8 @@ Signed-off-by: Mathias Kresin /* must be last */ u8 drv_priv[] __aligned(sizeof(void *)); }; ---- a/ath10k-5.10/leds.c -+++ b/ath10k-5.10/leds.c +--- a/ath10k-5.15/leds.c ++++ b/ath10k-5.15/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 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 -@@ -11405,7 +11405,7 @@ int ath10k_mac_register(struct ath10k *a +--- a/ath10k-5.15/mac.c ++++ b/ath10k-5.15/mac.c +@@ -11521,7 +11521,7 @@ int ath10k_mac_register(struct ath10k *a ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER; #ifdef CPTCFG_MAC80211_LEDS @@ -50,4 +50,4 @@ Signed-off-by: Mathias Kresin + ar->led_default_trigger = ieee80211_create_tpt_led_trigger(ar->hw, IEEE80211_TPT_LEDTRIG_FL_RADIO, ath10k_tpt_blink, ARRAY_SIZE(ath10k_tpt_blink)); - #endif \ No newline at end of file + #endif diff --git a/package/kernel/ath10k-ct/patches/300-ath10k-ct-Fix-spectral-scan-NULL-pointer.patch b/package/kernel/ath10k-ct/patches/300-ath10k-ct-Fix-spectral-scan-NULL-pointer.patch new file mode 100644 index 000000000..a3822a7e4 --- /dev/null +++ b/package/kernel/ath10k-ct/patches/300-ath10k-ct-Fix-spectral-scan-NULL-pointer.patch @@ -0,0 +1,32 @@ +From 0d2e335d780bda1432a9ba719c8200f796d27854 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Mon, 29 Nov 2021 12:27:12 +0100 +Subject: [PATCH] ath10k-ct: Fix spectral scan NULL pointer + +If spectral scan support is enabled then ath10k-ct will cause a NULL +pointer due to relay_open() being called with a const callback struct +which is only supported in kernel 5.11 and later. + +So, simply check the kernel version and if 5.11 and newer use the const +callback struct, otherwise use the regular struct. + +Fixes: 553a3ac ("ath10k-ct: use 5.15 version") +Signed-off-by: Robert Marko +--- + ath10k-5.15/spectral.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/ath10k-5.15/spectral.c ++++ b/ath10k-5.15/spectral.c +@@ -497,7 +497,11 @@ static int remove_buf_file_handler(struc + return 0; + } + ++#if LINUX_VERSION_IS_GEQ(5,11,0) + static const struct rchan_callbacks rfs_spec_scan_cb = { ++#else ++static struct rchan_callbacks rfs_spec_scan_cb = { ++#endif + .create_buf_file = create_buf_file_handler, + .remove_buf_file = remove_buf_file_handler, + }; 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 949fc120a..d50611b97 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-5.15/htt.h ++++ b/ath10k-5.15/htt.h @@ -237,7 +237,11 @@ enum htt_rx_ring_flags { }; @@ -11,4 +11,4 @@ +#endif #define HTT_RX_RING_SIZE HTT_RX_RING_SIZE_MAX #define HTT_RX_RING_FILL_LEVEL (((HTT_RX_RING_SIZE) / 2) - 1) - #define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1) \ No newline at end of file + #define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1) 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 a639995cb..b8c6c3532 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-5.15/pci.c ++++ b/ath10k-5.15/pci.c @@ -131,7 +131,11 @@ static const struct ce_attr pci_host_ce_ .flags = CE_ATTR_FLAGS, .src_nentries = 0, @@ -47,4 +47,4 @@ +#endif .recv_cb = ath10k_pci_pktlog_rx_cb, }, - \ No newline at end of file + diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile index 5701545f3..0ccf067d3 100644 --- a/package/kernel/mt76/Makefile +++ b/package/kernel/mt76/Makefile @@ -1,16 +1,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mt76 -PKG_RELEASE=6 +PKG_RELEASE=4 PKG_LICENSE:=GPLv2 PKG_LICENSE_FILES:= PKG_SOURCE_URL:=https://github.com/openwrt/mt76 PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2021-07-15 -PKG_SOURCE_VERSION:=bbebea7d6dc64313132226adc3f7369d36e9359d -PKG_MIRROR_HASH:=17cd74e72c1f6c8742b698bf6772afacc6fba71b233af8c4d59530600cf44d5b +PKG_SOURCE_DATE:=2022-03-28 +PKG_SOURCE_VERSION:=376ea8152b2bdd84fd43137cf02da383edf20462 +PKG_MIRROR_HASH:=900a1f42015f099b575ae94553b63043e530748909ca30fe51fe61986f96d854 PKG_MAINTAINER:=Felix Fietkau PKG_USE_NINJA:=0 @@ -152,6 +152,14 @@ define KernelPackage/mt76-connac FILES:= $(PKG_BUILD_DIR)/mt76-connac-lib.ko endef +define KernelPackage/mt76-sdio + $(KernelPackage/mt76-default) + TITLE:=MediaTek MT7615/MT79xx SDIO driver common code + HIDDEN:=1 + DEPENDS+=+kmod-mt76-core +kmod-mmc + FILES:= $(PKG_BUILD_DIR)/mt76-sdio.ko +endef + define KernelPackage/mt7615-common $(KernelPackage/mt76-default) TITLE:=MediaTek MT7615 wireless driver common code @@ -196,9 +204,8 @@ endef define KernelPackage/mt7663s $(KernelPackage/mt76-default) TITLE:=MediaTek MT7663s wireless driver - DEPENDS+=+kmod-mmc +kmod-mt7615-common +kmod-mt7663-usb-sdio + DEPENDS+=+kmod-mt76-sdio +kmod-mt7615-common +kmod-mt7663-usb-sdio FILES:= \ - $(PKG_BUILD_DIR)/mt76-sdio.ko \ $(PKG_BUILD_DIR)/mt7615/mt7663s.ko AUTOLOAD:=$(call AutoProbe,mt7663s) endef @@ -214,15 +221,39 @@ endef define KernelPackage/mt7915e $(KernelPackage/mt76-default) TITLE:=MediaTek MT7915e wireless driver - DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT + DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT +@KERNEL_RELAY FILES:= $(PKG_BUILD_DIR)/mt7915/mt7915e.ko AUTOLOAD:=$(call AutoProbe,mt7915e) endef +define KernelPackage/mt7921-common + $(KernelPackage/mt76-default) + TITLE:=MediaTek MT7615 wireless driver common code + HIDDEN:=1 + DEPENDS+=+kmod-mt76-connac +@DRIVER_11AX_SUPPORT + FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921-common.ko +endef + +define KernelPackage/mt7921u + $(KernelPackage/mt76-default) + TITLE:=MediaTek MT7921U wireless driver + DEPENDS+=+kmod-mt76-usb +kmod-mt7921-common + FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921u.ko + AUTOLOAD:=$(call AutoProbe,mt7921u) +endef + +define KernelPackage/mt7921s + $(KernelPackage/mt76-default) + TITLE:=MediaTek MT7921S wireless driver + DEPENDS+=+kmod-mt76-sdio +kmod-mt7921-common + FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921s.ko + AUTOLOAD:=$(call AutoProbe,mt7921s) +endef + define KernelPackage/mt7921e $(KernelPackage/mt76-default) TITLE:=MediaTek MT7921e wireless driver - DEPENDS+=@PCI_SUPPORT +kmod-mt76-connac + DEPENDS+=@PCI_SUPPORT +kmod-mt7921-common FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921e.ko AUTOLOAD:=$(call AutoProbe,mt7921e) endef @@ -288,6 +319,9 @@ endif ifdef CONFIG_PACKAGE_kmod-mt76-connac PKG_MAKE_FLAGS += CONFIG_MT76_CONNAC_LIB=m endif +ifdef CONFIG_PACKAGE_kmod-mt76-sdio + PKG_MAKE_FLAGS += CONFIG_MT76_SDIO=m +endif ifdef CONFIG_PACKAGE_kmod-mt7615-common PKG_MAKE_FLAGS += CONFIG_MT7615_COMMON=m endif @@ -302,7 +336,6 @@ ifdef CONFIG_PACKAGE_kmod-mt7663-usb-sdio PKG_MAKE_FLAGS += CONFIG_MT7663_USB_SDIO_COMMON=m endif ifdef CONFIG_PACKAGE_kmod-mt7663s - PKG_MAKE_FLAGS += CONFIG_MT76_SDIO=m PKG_MAKE_FLAGS += CONFIG_MT7663S=m endif ifdef CONFIG_PACKAGE_kmod-mt7663u @@ -311,6 +344,15 @@ endif ifdef CONFIG_PACKAGE_kmod-mt7915e PKG_MAKE_FLAGS += CONFIG_MT7915E=m endif +ifdef CONFIG_PACKAGE_kmod-mt7921-common + PKG_MAKE_FLAGS += CONFIG_MT7921_COMMON=m +endif +ifdef CONFIG_PACKAGE_kmod-mt7921u + PKG_MAKE_FLAGS += CONFIG_MT7921U=m +endif +ifdef CONFIG_PACKAGE_kmod-mt7921s + PKG_MAKE_FLAGS += CONFIG_MT7921S=m +endif ifdef CONFIG_PACKAGE_kmod-mt7921e PKG_MAKE_FLAGS += CONFIG_MT7921E=m endif @@ -433,6 +475,7 @@ $(eval $(call KernelPackage,mt76x2u)) $(eval $(call KernelPackage,mt76x2)) $(eval $(call KernelPackage,mt7603)) $(eval $(call KernelPackage,mt76-connac)) +$(eval $(call KernelPackage,mt76-sdio)) $(eval $(call KernelPackage,mt7615-common)) $(eval $(call KernelPackage,mt7615-firmware)) $(eval $(call KernelPackage,mt7615e)) @@ -442,6 +485,9 @@ $(eval $(call KernelPackage,mt7663-usb-sdio)) $(eval $(call KernelPackage,mt7663u)) $(eval $(call KernelPackage,mt7663s)) $(eval $(call KernelPackage,mt7915e)) +$(eval $(call KernelPackage,mt7921-common)) +$(eval $(call KernelPackage,mt7921u)) +$(eval $(call KernelPackage,mt7921s)) $(eval $(call KernelPackage,mt7921e)) $(eval $(call KernelPackage,mt76)) $(eval $(call BuildPackage,mt76-test)) diff --git a/package/kernel/mt76/patches/001-fix-mt76-driver-build-with-kernel-5.15.patch b/package/kernel/mt76/patches/001-fix-mt76-driver-build-with-kernel-5.15.patch deleted file mode 100644 index d35f64386..000000000 --- a/package/kernel/mt76/patches/001-fix-mt76-driver-build-with-kernel-5.15.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/eeprom.c -+++ b/eeprom.c -@@ -91,6 +91,10 @@ - { - struct mt76_dev *dev = phy->dev; - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) -+ struct device_node *np = dev->dev->of_node; -+ of_get_mac_address(np, phy->macaddr); -+#else - #ifdef CONFIG_OF - struct device_node *np = dev->dev->of_node; - const u8 *mac = NULL; -@@ -100,6 +104,7 @@ - if (!IS_ERR_OR_NULL(mac)) - ether_addr_copy(phy->macaddr, mac); - #endif -+#endif - - if (!is_valid_ether_addr(phy->macaddr)) { - eth_random_addr(phy->macaddr); - \ No newline at end of file