Skip to content

Commit 1952e19

Browse files
committed
Johannes Berg says: ==================== More features for 6.15, major changes: * cfg80211/mac80211: fix and enable link reconfiguration * rtw88: support RTL8814AE/RTL8814AU * mt7996: preparations for MLO * ath12k: continued work on MLO * iwlwifi: add new iwlmld sub-driver/op-mode for some current and future devices * wfx: wowlan support * tag 'wireless-next-2025-03-20' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (311 commits) wifi: mt76: mt7996: fix locking in mt7996_mac_sta_rc_work() wifi: mt76: mt76x2u: add TP-Link TL-WDN6200 ID to device table wifi: mt76: mt792x: re-register CHANCTX_STA_CSA only for the mt7921 series wifi: mt76: mt7996: Update mt7996_tx to MLO support wifi: mt76: mt7996: rework mt7996_ampdu_action to support MLO wifi: mt76: mt7996: rework set/get_tsf callabcks to support MLO wifi: mt76: mt7996: set vif default link_id adding/removing vif links wifi: mt76: mt7996: rework mt7996_mcu_beacon_inband_discov to support MLO wifi: mt76: mt7996: rework mt7996_mcu_add_obss_spr to support MLO wifi: mt76: mt7996: rework mt7996_net_fill_forward_path to support MLO wifi: mt76: mt7996: rework mt7996_update_mu_group to support MLO wifi: mt76: mt7996: rework mt7996_mac_sta_poll to support MLO wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO wifi: mt76: mt7996: remove mt7996_mac_enable_rtscts() wifi: mt76: mt7996: rework mt7996_sta_hw_queue_read to support MLO wifi: mt76: mt7996: rework mt7996_set_hw_key to support MLO wifi: mt76: mt7996: Add mt7996_sta_link to mt7996_mcu_add_bss_info signature wifi: mt76: mt7996: rework mt7996_sta_set_4addr and mt7996_sta_set_decap_offload to support MLO wifi: mt76: mt7996: rework mt7996_rx_get_wcid to support MLO wifi: mt76: mt7996: Rely on wcid_to_sta in mt7996_mac_add_txs_skb() ... ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 28d47bc + 1794d7a commit 1952e19

File tree

274 files changed

+68252
-2703
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

274 files changed

+68252
-2703
lines changed

Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,41 @@ properties:
9292

9393
ieee80211-freq-limit: true
9494

95+
qcom,calibration-data:
96+
$ref: /schemas/types.yaml#/definitions/uint8-array
97+
description:
98+
Calibration data + board-specific data as a byte array. The length
99+
can vary between hardware versions.
100+
95101
qcom,ath10k-calibration-data:
96102
$ref: /schemas/types.yaml#/definitions/uint8-array
103+
deprecated: true
97104
description:
98105
Calibration data + board-specific data as a byte array. The length
99106
can vary between hardware versions.
100107

108+
qcom,calibration-variant:
109+
$ref: /schemas/types.yaml#/definitions/string
110+
description:
111+
Unique variant identifier of the calibration data in board-2.bin
112+
for designs with colliding bus and device specific ids
113+
101114
qcom,ath10k-calibration-variant:
102115
$ref: /schemas/types.yaml#/definitions/string
116+
deprecated: true
103117
description:
104118
Unique variant identifier of the calibration data in board-2.bin
105119
for designs with colliding bus and device specific ids
106120

121+
qcom,pre-calibration-data:
122+
$ref: /schemas/types.yaml#/definitions/uint8-array
123+
description:
124+
Pre-calibration data as a byte array. The length can vary between
125+
hardware versions.
126+
107127
qcom,ath10k-pre-calibration-data:
108128
$ref: /schemas/types.yaml#/definitions/uint8-array
129+
deprecated: true
109130
description:
110131
Pre-calibration data as a byte array. The length can vary between
111132
hardware versions.

Documentation/devicetree/bindings/net/wireless/qcom,ath11k-pci.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,15 @@ properties:
2222
reg:
2323
maxItems: 1
2424

25+
qcom,calibration-variant:
26+
$ref: /schemas/types.yaml#/definitions/string
27+
description: |
28+
string to uniquely identify variant of the calibration data for designs
29+
with colliding bus and device ids
30+
2531
qcom,ath11k-calibration-variant:
2632
$ref: /schemas/types.yaml#/definitions/string
33+
deprecated: true
2734
description: |
2835
string to uniquely identify variant of the calibration data for designs
2936
with colliding bus and device ids
@@ -127,7 +134,7 @@ examples:
127134
vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
128135
vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
129136
130-
qcom,ath11k-calibration-variant = "LE_X13S";
137+
qcom,calibration-variant = "LE_X13S";
131138
};
132139
};
133140
};

Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,15 @@ properties:
4141
* reg
4242
* reg-names
4343

44+
qcom,calibration-variant:
45+
$ref: /schemas/types.yaml#/definitions/string
46+
description:
47+
string to uniquely identify variant of the calibration data in the
48+
board-2.bin for designs with colliding bus and device specific ids
49+
4450
qcom,ath11k-calibration-variant:
4551
$ref: /schemas/types.yaml#/definitions/string
52+
deprecated: true
4653
description:
4754
string to uniquely identify variant of the calibration data in the
4855
board-2.bin for designs with colliding bus and device specific ids

Documentation/devicetree/bindings/net/wireless/qcom,ath12k-wsi.yaml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,15 @@ properties:
5252
reg:
5353
maxItems: 1
5454

55+
qcom,calibration-variant:
56+
$ref: /schemas/types.yaml#/definitions/string
57+
description:
58+
String to uniquely identify variant of the calibration data for designs
59+
with colliding bus and device ids
60+
5561
qcom,ath12k-calibration-variant:
5662
$ref: /schemas/types.yaml#/definitions/string
63+
deprecated: true
5764
description:
5865
String to uniquely identify variant of the calibration data for designs
5966
with colliding bus and device ids
@@ -103,7 +110,7 @@ examples:
103110
compatible = "pci17cb,1109";
104111
reg = <0x0 0x0 0x0 0x0 0x0>;
105112
106-
qcom,ath12k-calibration-variant = "RDP433_1";
113+
qcom,calibration-variant = "RDP433_1";
107114
108115
ports {
109116
#address-cells = <1>;
@@ -139,7 +146,7 @@ examples:
139146
compatible = "pci17cb,1109";
140147
reg = <0x0 0x0 0x0 0x0 0x0>;
141148
142-
qcom,ath12k-calibration-variant = "RDP433_2";
149+
qcom,calibration-variant = "RDP433_2";
143150
qcom,wsi-controller;
144151
145152
ports {
@@ -176,7 +183,7 @@ examples:
176183
compatible = "pci17cb,1109";
177184
reg = <0x0 0x0 0x0 0x0 0x0>;
178185
179-
qcom,ath12k-calibration-variant = "RDP433_3";
186+
qcom,calibration-variant = "RDP433_3";
180187
181188
ports {
182189
#address-cells = <1>;

drivers/net/wireless/ath/ath10k/core.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,8 +1163,11 @@ int ath10k_core_check_dt(struct ath10k *ar)
11631163
if (!node)
11641164
return -ENOENT;
11651165

1166-
of_property_read_string(node, "qcom,ath10k-calibration-variant",
1166+
of_property_read_string(node, "qcom,calibration-variant",
11671167
&variant);
1168+
if (!variant)
1169+
of_property_read_string(node, "qcom,ath10k-calibration-variant",
1170+
&variant);
11681171
if (!variant)
11691172
return -ENODATA;
11701173

@@ -2259,7 +2262,9 @@ static int ath10k_core_pre_cal_download(struct ath10k *ar)
22592262
"boot did not find a pre calibration file, try DT next: %d\n",
22602263
ret);
22612264

2262-
ret = ath10k_download_cal_dt(ar, "qcom,ath10k-pre-calibration-data");
2265+
ret = ath10k_download_cal_dt(ar, "qcom,pre-calibration-data");
2266+
if (ret == -ENOENT)
2267+
ret = ath10k_download_cal_dt(ar, "qcom,ath10k-pre-calibration-data");
22632268
if (ret) {
22642269
ath10k_dbg(ar, ATH10K_DBG_BOOT,
22652270
"unable to load pre cal data from DT: %d\n", ret);
@@ -2337,7 +2342,9 @@ static int ath10k_download_cal_data(struct ath10k *ar)
23372342
"boot did not find a calibration file, try DT next: %d\n",
23382343
ret);
23392344

2340-
ret = ath10k_download_cal_dt(ar, "qcom,ath10k-calibration-data");
2345+
ret = ath10k_download_cal_dt(ar, "qcom,calibration-data");
2346+
if (ret == -ENOENT)
2347+
ret = ath10k_download_cal_dt(ar, "qcom,ath10k-calibration-data");
23412348
if (ret == 0) {
23422349
ar->cal_mode = ATH10K_CAL_MODE_DT;
23432350
goto done;

drivers/net/wireless/ath/ath11k/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ ath11k-$(CONFIG_ATH11K_TRACING) += trace.o
2727
ath11k-$(CONFIG_THERMAL) += thermal.o
2828
ath11k-$(CONFIG_ATH11K_SPECTRAL) += spectral.o
2929
ath11k-$(CONFIG_PM) += wow.o
30+
ath11k-$(CONFIG_DEV_COREDUMP) += coredump.o
3031

3132
obj-$(CONFIG_ATH11K_AHB) += ath11k_ahb.o
3233
ath11k_ahb-y += ahb.o

drivers/net/wireless/ath/ath11k/ahb.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: BSD-3-Clause-Clear
22
/*
33
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4-
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4+
* Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved.
55
*/
66

77
#include <linux/module.h>
@@ -1290,6 +1290,7 @@ static void ath11k_ahb_remove(struct platform_device *pdev)
12901290
ath11k_core_deinit(ab);
12911291

12921292
qmi_fail:
1293+
ath11k_fw_destroy(ab);
12931294
ath11k_ahb_free_resources(ab);
12941295
}
12951296

@@ -1309,6 +1310,7 @@ static void ath11k_ahb_shutdown(struct platform_device *pdev)
13091310
ath11k_core_deinit(ab);
13101311

13111312
free_resources:
1313+
ath11k_fw_destroy(ab);
13121314
ath11k_ahb_free_resources(ab);
13131315
}
13141316

drivers/net/wireless/ath/ath11k/core.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: BSD-3-Clause-Clear
22
/*
33
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4-
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4+
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
55
*/
66

77
#include <linux/module.h>
@@ -1175,8 +1175,11 @@ int ath11k_core_check_dt(struct ath11k_base *ab)
11751175
if (!node)
11761176
return -ENOENT;
11771177

1178-
of_property_read_string(node, "qcom,ath11k-calibration-variant",
1178+
of_property_read_string(node, "qcom,calibration-variant",
11791179
&variant);
1180+
if (!variant)
1181+
of_property_read_string(node, "qcom,ath11k-calibration-variant",
1182+
&variant);
11801183
if (!variant)
11811184
return -ENODATA;
11821185

@@ -2056,6 +2059,7 @@ void ath11k_core_halt(struct ath11k *ar)
20562059
ath11k_mac_scan_finish(ar);
20572060
ath11k_mac_peer_cleanup_all(ar);
20582061
cancel_delayed_work_sync(&ar->scan.timeout);
2062+
cancel_work_sync(&ar->channel_update_work);
20592063
cancel_work_sync(&ar->regd_update_work);
20602064
cancel_work_sync(&ab->update_11d_work);
20612065

@@ -2257,6 +2261,7 @@ static void ath11k_core_reset(struct work_struct *work)
22572261
reinit_completion(&ab->recovery_start);
22582262
atomic_set(&ab->recovery_start_count, 0);
22592263

2264+
ath11k_coredump_collect(ab);
22602265
ath11k_core_pre_reconfigure_recovery(ab);
22612266

22622267
reinit_completion(&ab->reconfigure_complete);
@@ -2346,7 +2351,6 @@ void ath11k_core_deinit(struct ath11k_base *ab)
23462351
ath11k_hif_power_down(ab);
23472352
ath11k_mac_destroy(ab);
23482353
ath11k_core_soc_destroy(ab);
2349-
ath11k_fw_destroy(ab);
23502354
}
23512355
EXPORT_SYMBOL(ath11k_core_deinit);
23522356

@@ -2393,6 +2397,7 @@ struct ath11k_base *ath11k_core_alloc(struct device *dev, size_t priv_size,
23932397
INIT_WORK(&ab->restart_work, ath11k_core_restart);
23942398
INIT_WORK(&ab->update_11d_work, ath11k_update_11d);
23952399
INIT_WORK(&ab->reset_work, ath11k_core_reset);
2400+
INIT_WORK(&ab->dump_work, ath11k_coredump_upload);
23962401
timer_setup(&ab->rx_replenish_retry, ath11k_ce_rx_replenish_retry, 0);
23972402
init_completion(&ab->htc_suspend);
23982403
init_completion(&ab->wow.wakeup_completed);

drivers/net/wireless/ath/ath11k/core.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
22
/*
33
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4-
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4+
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
55
*/
66

77
#ifndef ATH11K_CORE_H
@@ -32,6 +32,7 @@
3232
#include "spectral.h"
3333
#include "wow.h"
3434
#include "fw.h"
35+
#include "coredump.h"
3536

3637
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
3738

@@ -370,6 +371,7 @@ struct ath11k_vif {
370371
struct ieee80211_vif *vif;
371372

372373
struct wmi_wmm_params_all_arg wmm_params;
374+
struct wmi_wmm_params_all_arg muedca_params;
373375
struct list_head list;
374376
union {
375377
struct {
@@ -685,7 +687,7 @@ struct ath11k {
685687
struct mutex conf_mutex;
686688
/* protects the radio specific data like debug stats, ppdu_stats_info stats,
687689
* vdev_stop_status info, scan data, ath11k_sta info, ath11k_vif info,
688-
* channel context data, survey info, test mode data.
690+
* channel context data, survey info, test mode data, channel_update_queue.
689691
*/
690692
spinlock_t data_lock;
691693

@@ -743,6 +745,9 @@ struct ath11k {
743745
struct completion bss_survey_done;
744746

745747
struct work_struct regd_update_work;
748+
struct work_struct channel_update_work;
749+
/* protected with data_lock */
750+
struct list_head channel_update_queue;
746751

747752
struct work_struct wmi_mgmt_tx_work;
748753
struct sk_buff_head wmi_mgmt_tx_queue;
@@ -900,6 +905,10 @@ struct ath11k_base {
900905
/* HW channel counters frequency value in hertz common to all MACs */
901906
u32 cc_freq_hz;
902907

908+
struct ath11k_dump_file_data *dump_data;
909+
size_t ath11k_coredump_len;
910+
struct work_struct dump_work;
911+
903912
struct ath11k_htc htc;
904913

905914
struct ath11k_dp dp;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// SPDX-License-Identifier: BSD-3-Clause-Clear
2+
/*
3+
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
4+
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
5+
*/
6+
#include <linux/devcoredump.h>
7+
#include "hif.h"
8+
#include "coredump.h"
9+
#include "debug.h"
10+
11+
enum
12+
ath11k_fw_crash_dump_type ath11k_coredump_get_dump_type(int type)
13+
{
14+
enum ath11k_fw_crash_dump_type dump_type;
15+
16+
switch (type) {
17+
case HOST_DDR_REGION_TYPE:
18+
dump_type = FW_CRASH_DUMP_REMOTE_MEM_DATA;
19+
break;
20+
case M3_DUMP_REGION_TYPE:
21+
dump_type = FW_CRASH_DUMP_M3_DUMP;
22+
break;
23+
case PAGEABLE_MEM_REGION_TYPE:
24+
dump_type = FW_CRASH_DUMP_PAGEABLE_DATA;
25+
break;
26+
case BDF_MEM_REGION_TYPE:
27+
case CALDB_MEM_REGION_TYPE:
28+
dump_type = FW_CRASH_DUMP_NONE;
29+
break;
30+
default:
31+
dump_type = FW_CRASH_DUMP_TYPE_MAX;
32+
break;
33+
}
34+
35+
return dump_type;
36+
}
37+
EXPORT_SYMBOL(ath11k_coredump_get_dump_type);
38+
39+
void ath11k_coredump_upload(struct work_struct *work)
40+
{
41+
struct ath11k_base *ab = container_of(work, struct ath11k_base, dump_work);
42+
43+
ath11k_info(ab, "Uploading coredump\n");
44+
/* dev_coredumpv() takes ownership of the buffer */
45+
dev_coredumpv(ab->dev, ab->dump_data, ab->ath11k_coredump_len, GFP_KERNEL);
46+
ab->dump_data = NULL;
47+
}
48+
49+
void ath11k_coredump_collect(struct ath11k_base *ab)
50+
{
51+
ath11k_hif_coredump_download(ab);
52+
}

0 commit comments

Comments
 (0)