Skip to content

Commit 5c46638

Browse files
committed
Merge tag 'wireless-next-2024-11-13' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
Kalle Valo says: ==================== wireless-next patches for v6.13 Most likely the last -next pull request for v6.13. Most changes are in Realtek and Qualcomm drivers, otherwise not really anything noteworthy. Major changes: mac80211 * EHT 1024 aggregation size for transmissions ath12k * switch to using wiphy_lock() and remove ar->conf_mutex * firmware coredump collection support * add debugfs support for a multitude of statistics ath11k * dt: document WCN6855 hardware inputs ath9k * remove include/linux/ath9k_platform.h ath5k * Arcadyan ARV45XX AR2417 & Gigaset SX76[23] AR241[34]A support rtw88: * 8821au and 8812au USB adapters support rtw89 * thermal protection * firmware secure boot for WiFi 6 chip * tag 'wireless-next-2024-11-13' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (154 commits) Revert "wifi: iwlegacy: do not skip frames with bad FCS" wifi: mac80211: pass MBSSID config by reference wifi: mac80211: Support EHT 1024 aggregation size in TX net: rfkill: gpio: Add check for clk_enable() wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw() wifi: Switch back to struct platform_driver::remove() wifi: ipw2x00: libipw_rx_any(): fix bad alignment wifi: brcmfmac: release 'root' node in all execution paths wifi: iwlwifi: mvm: don't call power_update_mac in fast suspend wifi: iwlwifi: s/IWL_MVM_INVALID_STA/IWL_INVALID_STA wifi: iwlwifi: bump minimum API version in BZ/SC to 92 wifi: iwlwifi: move IWL_LMAC_*_INDEX to fw/api/context.h wifi: iwlwifi: be less noisy if the NIC is dead in S3 wifi: iwlwifi: mvm: tell iwlmei when we finished suspending wifi: iwlwifi: allow fast resume on ax200 wifi: iwlwifi: mvm: support new initiator and responder command version wifi: iwlwifi: mvm: use wiphy locked debugfs for low-latency wifi: iwlwifi: mvm: MLO scan upon channel condition degradation wifi: iwlwifi: mvm: support new versions of the wowlan APIs wifi: iwlwifi: mvm: allow always calling iwl_mvm_get_bss_vif() ... ==================== Link: https://patch.msgid.link/20241113172918.A8A11C4CEC3@smtp.kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 31a1f87 + 1159704 commit 5c46638

File tree

199 files changed

+15730
-2011
lines changed

Some content is hidden

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

199 files changed

+15730
-2011
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ properties:
5050
vddrfa1p7-supply:
5151
description: VDD_RFA_1P7 supply regulator handle
5252

53+
vddrfa1p8-supply:
54+
description: VDD_RFA_1P8 supply regulator handle
55+
5356
vddpcie0p9-supply:
5457
description: VDD_PCIE_0P9 supply regulator handle
5558

@@ -77,6 +80,22 @@ allOf:
7780
- vddrfa1p7-supply
7881
- vddpcie0p9-supply
7982
- vddpcie1p8-supply
83+
- if:
84+
properties:
85+
compatible:
86+
contains:
87+
const: pci17cb,1103
88+
then:
89+
required:
90+
- vddrfacmn-supply
91+
- vddaon-supply
92+
- vddwlcx-supply
93+
- vddwlmx-supply
94+
- vddrfa0p8-supply
95+
- vddrfa1p2-supply
96+
- vddrfa1p8-supply
97+
- vddpcie0p9-supply
98+
- vddpcie1p8-supply
8099

81100
additionalProperties: false
82101

@@ -99,6 +118,16 @@ examples:
99118
compatible = "pci17cb,1103";
100119
reg = <0x10000 0x0 0x0 0x0 0x0>;
101120
121+
vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
122+
vddaon-supply = <&vreg_pmu_aon_0p8>;
123+
vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
124+
vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
125+
vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
126+
vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
127+
vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
128+
vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
129+
vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
130+
102131
qcom,ath11k-calibration-variant = "LE_X13S";
103132
};
104133
};

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -837,12 +837,12 @@ static void ath10k_ahb_remove(struct platform_device *pdev)
837837
}
838838

839839
static struct platform_driver ath10k_ahb_driver = {
840-
.driver = {
841-
.name = "ath10k_ahb",
840+
.driver = {
841+
.name = "ath10k_ahb",
842842
.of_match_table = ath10k_ahb_of_match,
843843
},
844-
.probe = ath10k_ahb_probe,
845-
.remove_new = ath10k_ahb_remove,
844+
.probe = ath10k_ahb_probe,
845+
.remove = ath10k_ahb_remove,
846846
};
847847

848848
int ath10k_ahb_init(void)

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

Lines changed: 57 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6369,7 +6369,7 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw,
63696369
struct ath10k *ar = hw->priv;
63706370
struct ath10k_vif *arvif = (void *)vif->drv_priv;
63716371
struct cfg80211_scan_request *req = &hw_req->req;
6372-
struct wmi_start_scan_arg arg;
6372+
struct wmi_start_scan_arg *arg = NULL;
63736373
int ret = 0;
63746374
int i;
63756375
u32 scan_timeout;
@@ -6402,56 +6402,61 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw,
64026402
if (ret)
64036403
goto exit;
64046404

6405-
memset(&arg, 0, sizeof(arg));
6406-
ath10k_wmi_start_scan_init(ar, &arg);
6407-
arg.vdev_id = arvif->vdev_id;
6408-
arg.scan_id = ATH10K_SCAN_ID;
6405+
arg = kzalloc(sizeof(*arg), GFP_KERNEL);
6406+
if (!arg) {
6407+
ret = -ENOMEM;
6408+
goto exit;
6409+
}
6410+
6411+
ath10k_wmi_start_scan_init(ar, arg);
6412+
arg->vdev_id = arvif->vdev_id;
6413+
arg->scan_id = ATH10K_SCAN_ID;
64096414

64106415
if (req->ie_len) {
6411-
arg.ie_len = req->ie_len;
6412-
memcpy(arg.ie, req->ie, arg.ie_len);
6416+
arg->ie_len = req->ie_len;
6417+
memcpy(arg->ie, req->ie, arg->ie_len);
64136418
}
64146419

64156420
if (req->n_ssids) {
6416-
arg.n_ssids = req->n_ssids;
6417-
for (i = 0; i < arg.n_ssids; i++) {
6418-
arg.ssids[i].len = req->ssids[i].ssid_len;
6419-
arg.ssids[i].ssid = req->ssids[i].ssid;
6421+
arg->n_ssids = req->n_ssids;
6422+
for (i = 0; i < arg->n_ssids; i++) {
6423+
arg->ssids[i].len = req->ssids[i].ssid_len;
6424+
arg->ssids[i].ssid = req->ssids[i].ssid;
64206425
}
64216426
} else {
6422-
arg.scan_ctrl_flags |= WMI_SCAN_FLAG_PASSIVE;
6427+
arg->scan_ctrl_flags |= WMI_SCAN_FLAG_PASSIVE;
64236428
}
64246429

64256430
if (req->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) {
6426-
arg.scan_ctrl_flags |= WMI_SCAN_ADD_SPOOFED_MAC_IN_PROBE_REQ;
6427-
ether_addr_copy(arg.mac_addr.addr, req->mac_addr);
6428-
ether_addr_copy(arg.mac_mask.addr, req->mac_addr_mask);
6431+
arg->scan_ctrl_flags |= WMI_SCAN_ADD_SPOOFED_MAC_IN_PROBE_REQ;
6432+
ether_addr_copy(arg->mac_addr.addr, req->mac_addr);
6433+
ether_addr_copy(arg->mac_mask.addr, req->mac_addr_mask);
64296434
}
64306435

64316436
if (req->n_channels) {
6432-
arg.n_channels = req->n_channels;
6433-
for (i = 0; i < arg.n_channels; i++)
6434-
arg.channels[i] = req->channels[i]->center_freq;
6437+
arg->n_channels = req->n_channels;
6438+
for (i = 0; i < arg->n_channels; i++)
6439+
arg->channels[i] = req->channels[i]->center_freq;
64356440
}
64366441

64376442
/* if duration is set, default dwell times will be overwritten */
64386443
if (req->duration) {
6439-
arg.dwell_time_active = req->duration;
6440-
arg.dwell_time_passive = req->duration;
6441-
arg.burst_duration_ms = req->duration;
6444+
arg->dwell_time_active = req->duration;
6445+
arg->dwell_time_passive = req->duration;
6446+
arg->burst_duration_ms = req->duration;
64426447

6443-
scan_timeout = min_t(u32, arg.max_rest_time *
6444-
(arg.n_channels - 1) + (req->duration +
6448+
scan_timeout = min_t(u32, arg->max_rest_time *
6449+
(arg->n_channels - 1) + (req->duration +
64456450
ATH10K_SCAN_CHANNEL_SWITCH_WMI_EVT_OVERHEAD) *
6446-
arg.n_channels, arg.max_scan_time);
6451+
arg->n_channels, arg->max_scan_time);
64476452
} else {
6448-
scan_timeout = arg.max_scan_time;
6453+
scan_timeout = arg->max_scan_time;
64496454
}
64506455

64516456
/* Add a 200ms margin to account for event/command processing */
64526457
scan_timeout += 200;
64536458

6454-
ret = ath10k_start_scan(ar, &arg);
6459+
ret = ath10k_start_scan(ar, arg);
64556460
if (ret) {
64566461
ath10k_warn(ar, "failed to start hw scan: %d\n", ret);
64576462
spin_lock_bh(&ar->data_lock);
@@ -6463,6 +6468,8 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw,
64636468
msecs_to_jiffies(scan_timeout));
64646469

64656470
exit:
6471+
kfree(arg);
6472+
64666473
mutex_unlock(&ar->conf_mutex);
64676474
return ret;
64686475
}
@@ -7899,7 +7906,7 @@ static int ath10k_remain_on_channel(struct ieee80211_hw *hw,
78997906
{
79007907
struct ath10k *ar = hw->priv;
79017908
struct ath10k_vif *arvif = (void *)vif->drv_priv;
7902-
struct wmi_start_scan_arg arg;
7909+
struct wmi_start_scan_arg *arg = NULL;
79037910
int ret = 0;
79047911
u32 scan_time_msec;
79057912

@@ -7936,20 +7943,25 @@ static int ath10k_remain_on_channel(struct ieee80211_hw *hw,
79367943

79377944
scan_time_msec = ar->hw->wiphy->max_remain_on_channel_duration * 2;
79387945

7939-
memset(&arg, 0, sizeof(arg));
7940-
ath10k_wmi_start_scan_init(ar, &arg);
7941-
arg.vdev_id = arvif->vdev_id;
7942-
arg.scan_id = ATH10K_SCAN_ID;
7943-
arg.n_channels = 1;
7944-
arg.channels[0] = chan->center_freq;
7945-
arg.dwell_time_active = scan_time_msec;
7946-
arg.dwell_time_passive = scan_time_msec;
7947-
arg.max_scan_time = scan_time_msec;
7948-
arg.scan_ctrl_flags |= WMI_SCAN_FLAG_PASSIVE;
7949-
arg.scan_ctrl_flags |= WMI_SCAN_FILTER_PROBE_REQ;
7950-
arg.burst_duration_ms = duration;
7951-
7952-
ret = ath10k_start_scan(ar, &arg);
7946+
arg = kzalloc(sizeof(*arg), GFP_KERNEL);
7947+
if (!arg) {
7948+
ret = -ENOMEM;
7949+
goto exit;
7950+
}
7951+
7952+
ath10k_wmi_start_scan_init(ar, arg);
7953+
arg->vdev_id = arvif->vdev_id;
7954+
arg->scan_id = ATH10K_SCAN_ID;
7955+
arg->n_channels = 1;
7956+
arg->channels[0] = chan->center_freq;
7957+
arg->dwell_time_active = scan_time_msec;
7958+
arg->dwell_time_passive = scan_time_msec;
7959+
arg->max_scan_time = scan_time_msec;
7960+
arg->scan_ctrl_flags |= WMI_SCAN_FLAG_PASSIVE;
7961+
arg->scan_ctrl_flags |= WMI_SCAN_FILTER_PROBE_REQ;
7962+
arg->burst_duration_ms = duration;
7963+
7964+
ret = ath10k_start_scan(ar, arg);
79537965
if (ret) {
79547966
ath10k_warn(ar, "failed to start roc scan: %d\n", ret);
79557967
spin_lock_bh(&ar->data_lock);
@@ -7975,6 +7987,8 @@ static int ath10k_remain_on_channel(struct ieee80211_hw *hw,
79757987

79767988
ret = 0;
79777989
exit:
7990+
kfree(arg);
7991+
79787992
mutex_unlock(&ar->conf_mutex);
79797993
return ret;
79807994
}
@@ -9122,7 +9136,7 @@ static const struct ath10k_index_vht_data_rate_type supported_vht_mcs_rate_nss1[
91229136
{6, {2633, 2925}, {1215, 1350}, {585, 650} },
91239137
{7, {2925, 3250}, {1350, 1500}, {650, 722} },
91249138
{8, {3510, 3900}, {1620, 1800}, {780, 867} },
9125-
{9, {3900, 4333}, {1800, 2000}, {780, 867} }
9139+
{9, {3900, 4333}, {1800, 2000}, {865, 960} }
91269140
};
91279141

91289142
/*MCS parameters with Nss = 2 */
@@ -9137,7 +9151,7 @@ static const struct ath10k_index_vht_data_rate_type supported_vht_mcs_rate_nss2[
91379151
{6, {5265, 5850}, {2430, 2700}, {1170, 1300} },
91389152
{7, {5850, 6500}, {2700, 3000}, {1300, 1444} },
91399153
{8, {7020, 7800}, {3240, 3600}, {1560, 1733} },
9140-
{9, {7800, 8667}, {3600, 4000}, {1560, 1733} }
9154+
{9, {7800, 8667}, {3600, 4000}, {1730, 1920} }
91419155
};
91429156

91439157
static void ath10k_mac_get_rate_flags_ht(struct ath10k *ar, u32 rate, u8 nss, u8 mcs,

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Copyright (c) 2004-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2012,2017 Qualcomm Atheros, Inc.
55
* Copyright (c) 2016-2017 Erik Stromdahl <erik.stromdahl@gmail.com>
6-
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
6+
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
77
*/
88

99
#include <linux/module.h>
@@ -2648,9 +2648,9 @@ static void ath10k_sdio_remove(struct sdio_func *func)
26482648

26492649
netif_napi_del(&ar->napi);
26502650

2651-
ath10k_core_destroy(ar);
2652-
26532651
destroy_workqueue(ar_sdio->workqueue);
2652+
2653+
ath10k_core_destroy(ar);
26542654
}
26552655

26562656
static const struct sdio_device_id ath10k_sdio_devices[] = {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1885,11 +1885,11 @@ static void ath10k_snoc_shutdown(struct platform_device *pdev)
18851885
}
18861886

18871887
static struct platform_driver ath10k_snoc_driver = {
1888-
.probe = ath10k_snoc_probe,
1889-
.remove_new = ath10k_snoc_remove,
1888+
.probe = ath10k_snoc_probe,
1889+
.remove = ath10k_snoc_remove,
18901890
.shutdown = ath10k_snoc_shutdown,
18911891
.driver = {
1892-
.name = "ath10k_snoc",
1892+
.name = "ath10k_snoc",
18931893
.of_match_table = ath10k_snoc_dt_match,
18941894
},
18951895
};

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,18 +1000,18 @@ static int ath11k_ahb_fw_resources_init(struct ath11k_base *ab)
10001000
if (!ab->hw_params.fixed_fw_mem)
10011001
return 0;
10021002

1003-
ret = ath11k_ahb_setup_msa_resources(ab);
1004-
if (ret) {
1005-
ath11k_err(ab, "failed to setup msa resources\n");
1006-
return ret;
1007-
}
1008-
10091003
node = of_get_child_by_name(host_dev->of_node, "wifi-firmware");
10101004
if (!node) {
10111005
ab_ahb->fw.use_tz = true;
10121006
return 0;
10131007
}
10141008

1009+
ret = ath11k_ahb_setup_msa_resources(ab);
1010+
if (ret) {
1011+
ath11k_err(ab, "failed to setup msa resources\n");
1012+
return ret;
1013+
}
1014+
10151015
info.fwnode = &node->fwnode;
10161016
info.parent = host_dev;
10171017
info.name = node->name;
@@ -1313,12 +1313,12 @@ static void ath11k_ahb_shutdown(struct platform_device *pdev)
13131313
}
13141314

13151315
static struct platform_driver ath11k_ahb_driver = {
1316-
.driver = {
1317-
.name = "ath11k",
1316+
.driver = {
1317+
.name = "ath11k",
13181318
.of_match_table = ath11k_ahb_of_match,
13191319
},
1320-
.probe = ath11k_ahb_probe,
1321-
.remove_new = ath11k_ahb_remove,
1320+
.probe = ath11k_ahb_probe,
1321+
.remove = ath11k_ahb_remove,
13221322
.shutdown = ath11k_ahb_shutdown,
13231323
};
13241324

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
616616
.supports_dynamic_smps_6ghz = false,
617617
.alloc_cacheable_memory = false,
618618
.supports_rssi_stats = true,
619-
.fw_wmi_diag_event = false,
619+
.fw_wmi_diag_event = true,
620620
.current_cc_support = true,
621621
.dbr_debug_support = false,
622622
.global_reset = false,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,7 @@ void ath11k_hal_srng_deinit(struct ath11k_base *ab)
13511351
ath11k_hal_free_cont_rdp(ab);
13521352
ath11k_hal_free_cont_wrp(ab);
13531353
kfree(hal->srng_config);
1354+
hal->srng_config = NULL;
13541355
}
13551356
EXPORT_SYMBOL(ath11k_hal_srng_deinit);
13561357

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2180,6 +2180,9 @@ static int ath11k_qmi_request_device_info(struct ath11k_base *ab)
21802180
ab->mem = bar_addr_va;
21812181
ab->mem_len = resp.bar_size;
21822182

2183+
if (!ab->hw_params.ce_remap)
2184+
ab->mem_ce = ab->mem;
2185+
21832186
return 0;
21842187
out:
21852188
return ret;

0 commit comments

Comments
 (0)