istoreos/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch
Hauke Mehrtens 454fd69589 mac80211: update to version 6.12.61
This contains the following commits:
```
git log --oneline   v6.12.52...v6.12.61 -- drivers/net/wireless/ net/mac80211/ net/wireless/
a1eb56723b32 wifi: ath12k: correctly handle mcast packets for clients
c0a9c2c1b7b9 wifi: mac80211: use wiphy_hrtimer_work for csa.switch_work
d4caee32a9f8 wifi: cfg80211: add an hrtimer based delayed work item
6455948c8aab wifi: mac80211: reject address change while connecting
80dc5a2ce5b7 wifi: ath11k: Clear affinity hint before calling ath11k_pcic_free_irq() in error path
acd24d509227 wifi: mac80211: skip rate verification for not captured PSDUs
53cf801b8555 wifi: ath11k: zero init info->status in wmi_process_mgmt_tx_comp()
e8fa86b0bd96 wifi: mac80211_hwsim: Limit destroy_on_close radio removal to netgroup
77d4afd6c78b Revert "wifi: ath10k: avoid unnecessary wait for service ready message"
07d862c7de3d wifi: ath12k: Increase DP_REO_CMD_RING_SIZE to 256
522734fc807c wifi: mac80211: Track NAN interface start/stop
8db790c2491e wifi: ath10k: Fix connection after GTK rekeying
72f1984246e6 wifi: rtw89: renew a completion for each H2C command waiting C2H event
336da4414300 wifi: rtw89: obtain RX path from ppdu status IE00
da91687f01f4 wifi: mt76: mt7996: fix memory leak on mt7996_mcu_sta_key_tlv error
a534dd44b70e wifi: mt76: mt76_eeprom_override to int
aa5ed215cfe8 wifi: mt76: mt7996: Temporarily disable EPCS
efe2ef24feab wifi: mt76: mt7921: Add 160MHz beamformee capability for mt7922 device
5de410dfb4d9 wifi: mac80211: Fix HE capabilities element check
f157d1cb2cdc wifi: iwlwifi: fw: Add ASUS to PPAG and TAS list
c9df78e84e85 wifi: mac80211: Fix 6 GHz Band capabilities element advertisement in lower bands
958234997dd5 wifi: rtw89: fix BSSID comparison for non-transmitted BSSID
ca18975c4de2 wifi: rtw89: wow: remove notify during WoWLAN net-detect
bc1ca06998c1 wifi: rtw88: sdio: use indirect IO for device registers before power-on
8ebef59d0294 wifi: rtw89: print just once for unknown C2H events
5596a90c8952 wifi: mac80211: fix key tailroom accounting leak
23b8682f05ec wifi: mac80211: don't mark keys for inactive links as uploaded
e3373f10c6a6 wifi: ath11k: avoid bit operation on key flags
50f50dd024b4 wifi: ath11k: add support for MU EDCA
2a6cd5951ba8 wifi: ath12k: free skb during idr cleanup callback
775e37df2acc wifi: ath11k: Add missing platform IDs for quirk table
c4840991ee4c wifi: ath10k: Fix memory leak on unsupported WMI command
a6eed58249e7 wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode
57100b87c778 wifi: ath12k: fix read pointer after free in ath12k_mac_assign_vif_to_vdev()
4a63523d3541 wifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac()
e9fd43b799d2 wifi: rtw89: avoid possible TX wait initialization race
b419093e5e42 wifi: mt76: mt7921u: Add VID/PID for Netgear A7500
feb1774aaf85 wifi: mt76: mt7925u: Add VID/PID for Netgear A9000
bd3ac455a88d wifi: ath11k: HAL SRNG: don't deinitialize and re-initialize again
8055133a9f64 wifi: rtw89: avoid circular locking dependency in ser_state_run()
1c873416758f wifi: mac80211: fix Rx packet handling when pubsta information is not available
6e7d9fa61d7d wifi: ath10k: avoid unnecessary wait for service ready message
8d4f6ab4c53e wifi: ath12k: fix wrong logging ID used for CE
fc00890c55e3 wifi: mt76: mt7915: fix mt7981 pre-calibration
e18c4e6ba36c wifi: mt76: mt7996: Convert mt7996_wed_rro_addr to LE
f481404a9826 wifi: mt76: mt7996: Fix RX packets configuration for primary WED device
57519239c76c wifi: mt76: fix potential memory leak in mt76_wmac_probe()
27c8e2e4b56f wifi: iwlwifi: Remove redundant header files
605402433eb8 wifi: mwifiex: send world regulatory domain to driver
```

The removed patch was added upstream.

Link: https://github.com/openwrt/openwrt/pull/21134
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-14 22:41:16 +01:00

76 lines
2.5 KiB
Diff

From fb1c40c225cbc413d82c872dd8c8af3469b2b921 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
Date: Fri, 16 Dec 2022 17:17:52 +0100
Subject: [PATCH] ath11k: support setting FW memory mode via DT
ath11k is really memory intensive for devices with less that 1GB of RAM,
so lets allow saving a significant amount of memory by setting the FW to
Mode-1 via DTS for devices that need it.
However the drawback is reduced number of VDEV-s and peers which is a
reasonable tradeoff.
Mode-2 allows for further reduction, but it has further restrictions.
While we are here, lets add a print to be able to easily determine what
FW memory mode is being used.
Signed-off-by: Robert Marko <robimarko@gmail.com>
---
drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -37,7 +37,7 @@ bool ath11k_ftm_mode;
module_param_named(ftm_mode, ath11k_ftm_mode, bool, 0444);
MODULE_PARM_DESC(ftm_mode, "Boots up in factory test mode");
-static const struct ath11k_hw_params ath11k_hw_params[] = {
+static struct ath11k_hw_params ath11k_hw_params[] = {
{
.hw_rev = ATH11K_HW_IPQ8074,
.name = "ipq8074 hw2.0",
@@ -2239,7 +2239,8 @@ static void ath11k_core_reset(struct wor
static int ath11k_init_hw_params(struct ath11k_base *ab)
{
const struct ath11k_hw_params *hw_params = NULL;
- int i;
+ u32 fw_mem_mode;
+ int i, ret;
for (i = 0; i < ARRAY_SIZE(ath11k_hw_params); i++) {
hw_params = &ath11k_hw_params[i];
@@ -2255,7 +2256,31 @@ static int ath11k_init_hw_params(struct
ab->hw_params = *hw_params;
+ ret = of_property_read_u32(ab->dev->of_node,
+ "qcom,ath11k-fw-memory-mode",
+ &fw_mem_mode);
+ if (!ret) {
+ if (fw_mem_mode == 0) {
+ ab->hw_params.fw_mem_mode = 0;
+ ab->hw_params.num_vdevs = 16 + 1;
+ ab->hw_params.num_peers = 512;
+ }
+ else if (fw_mem_mode == 1) {
+ ab->hw_params.fw_mem_mode = 1;
+ ab->hw_params.num_vdevs = 8;
+ ab->hw_params.num_peers = 128;
+ } else if (fw_mem_mode == 2) {
+ ab->hw_params.fw_mem_mode = 2;
+ ab->hw_params.num_vdevs = 8;
+ ab->hw_params.num_peers = 128;
+ ab->hw_params.coldboot_cal_mm = false;
+ ab->hw_params.coldboot_cal_ftm = false;
+ } else
+ ath11k_info(ab, "Unsupported FW memory mode: %u\n", fw_mem_mode);
+ }
+
ath11k_info(ab, "%s\n", ab->hw_params.name);
+ ath11k_info(ab, "FW memory mode: %d\n", ab->hw_params.fw_mem_mode);
return 0;
}