Skip to content

Commit 561e0ac

Browse files
committed
Merge: Wireless core and drivers rebase to v6.15
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10/-/merge_requests/966 JIRA: https://issues.redhat.com/browse/RHEL-89169 ARK MR: cki-project/kernel-ark!3897 Tested: basic testing with several supported WiFi cards (Intel, Qualcomm, Mediatek and Realtek). Wireless core and drivers update to v6.15. MHI will be updated in a separate way. Upstream status: linux.git Commented fix was already included: Omitted-fix: 175e69e wifi: iwlwifi: restore missing initialization of async_handlers_list Not important fixes (postponed): Omitted-fix: 9a353a4 wifi: ath12k: avoid burning CPU while waiting for firmware stats Omitted-fix: ac7b8ff wifi: ath12k: don't use static variables in ath12k_wmi_fw_stats_process() Omitted-fix: ad5e917 wifi: ath12k: don't wait when there is no vdev started Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com> Approved-by: Radu Rendec <rrendec@redhat.com> Approved-by: Davide Caratti <dcaratti@redhat.com> Approved-by: Michal Schmidt <mschmidt@redhat.com> Merged-by: Julio Faracco <jfaracco@redhat.com>
2 parents c39ea9a + 49f1180 commit 561e0ac

File tree

364 files changed

+74489
-7103
lines changed

Some content is hidden

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

364 files changed

+74489
-7103
lines changed

Documentation/devicetree/bindings/net/rfkill-gpio.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ properties:
3232
shutdown-gpios:
3333
maxItems: 1
3434

35+
default-blocked:
36+
$ref: /schemas/types.yaml#/definitions/flag
37+
description: configure rfkill state as blocked at boot
38+
3539
required:
3640
- compatible
3741
- radio-type
@@ -48,4 +52,5 @@ examples:
4852
label = "rfkill-pcie-wlan";
4953
radio-type = "wlan";
5054
shutdown-gpios = <&gpio2 25 GPIO_ACTIVE_HIGH>;
55+
default-blocked;
5156
};

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

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

9494
ieee80211-freq-limit: true
9595

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

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

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

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

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

26+
qcom,calibration-variant:
27+
$ref: /schemas/types.yaml#/definitions/string
28+
description: |
29+
string to uniquely identify variant of the calibration data for designs
30+
with colliding bus and device ids
31+
2632
qcom,ath11k-calibration-variant:
2733
$ref: /schemas/types.yaml#/definitions/string
34+
deprecated: true
2835
description: |
2936
string to uniquely identify variant of the calibration data for designs
3037
with colliding bus and device ids
@@ -50,6 +57,9 @@ properties:
5057
vddrfa1p7-supply:
5158
description: VDD_RFA_1P7 supply regulator handle
5259

60+
vddrfa1p8-supply:
61+
description: VDD_RFA_1P8 supply regulator handle
62+
5363
vddpcie0p9-supply:
5464
description: VDD_PCIE_0P9 supply regulator handle
5565

@@ -77,6 +87,22 @@ allOf:
7787
- vddrfa1p7-supply
7888
- vddpcie0p9-supply
7989
- vddpcie1p8-supply
90+
- if:
91+
properties:
92+
compatible:
93+
contains:
94+
const: pci17cb,1103
95+
then:
96+
required:
97+
- vddrfacmn-supply
98+
- vddaon-supply
99+
- vddwlcx-supply
100+
- vddwlmx-supply
101+
- vddrfa0p8-supply
102+
- vddrfa1p2-supply
103+
- vddrfa1p8-supply
104+
- vddpcie0p9-supply
105+
- vddpcie1p8-supply
80106

81107
additionalProperties: false
82108

@@ -99,7 +125,17 @@ examples:
99125
compatible = "pci17cb,1103";
100126
reg = <0x10000 0x0 0x0 0x0 0x0>;
101127
102-
qcom,ath11k-calibration-variant = "LE_X13S";
128+
vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
129+
vddaon-supply = <&vreg_pmu_aon_0p8>;
130+
vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
131+
vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
132+
vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
133+
vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
134+
vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
135+
vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
136+
vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
137+
138+
qcom,calibration-variant = "LE_X13S";
103139
};
104140
};
105141
};

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

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

45+
qcom,calibration-variant:
46+
$ref: /schemas/types.yaml#/definitions/string
47+
description:
48+
string to uniquely identify variant of the calibration data in the
49+
board-2.bin for designs with colliding bus and device specific ids
50+
4551
qcom,ath11k-calibration-variant:
4652
$ref: /schemas/types.yaml#/definitions/string
53+
deprecated: true
4754
description:
4855
string to uniquely identify variant of the calibration data in the
4956
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
@@ -53,8 +53,15 @@ properties:
5353
reg:
5454
maxItems: 1
5555

56+
qcom,calibration-variant:
57+
$ref: /schemas/types.yaml#/definitions/string
58+
description:
59+
String to uniquely identify variant of the calibration data for designs
60+
with colliding bus and device ids
61+
5662
qcom,ath12k-calibration-variant:
5763
$ref: /schemas/types.yaml#/definitions/string
64+
deprecated: true
5865
description:
5966
String to uniquely identify variant of the calibration data for designs
6067
with colliding bus and device ids
@@ -104,7 +111,7 @@ examples:
104111
compatible = "pci17cb,1109";
105112
reg = <0x0 0x0 0x0 0x0 0x0>;
106113
107-
qcom,ath12k-calibration-variant = "RDP433_1";
114+
qcom,calibration-variant = "RDP433_1";
108115
109116
ports {
110117
#address-cells = <1>;
@@ -140,7 +147,7 @@ examples:
140147
compatible = "pci17cb,1109";
141148
reg = <0x0 0x0 0x0 0x0 0x0>;
142149
143-
qcom,ath12k-calibration-variant = "RDP433_2";
150+
qcom,calibration-variant = "RDP433_2";
144151
qcom,wsi-controller;
145152
146153
ports {
@@ -177,7 +184,7 @@ examples:
177184
compatible = "pci17cb,1109";
178185
reg = <0x0 0x0 0x0 0x0 0x0>;
179186
180-
qcom,ath12k-calibration-variant = "RDP433_3";
187+
qcom,calibration-variant = "RDP433_3";
181188
182189
ports {
183190
#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;

0 commit comments

Comments
 (0)