Skip to content

Commit a18c097

Browse files
committed
Merge tag 'wireless-next-2024-09-11' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
Kalle Valo says: ==================== wireless-next patches for v6.12 The last -next "new features" pull request for v6.12. The stack now supports DFS on MLO but otherwise nothing really standing out. Major changes: cfg80211/mac80211 * EHT rate support in AQL airtime * DFS support for MLO rtw89 * complete BT-coexistence code for RTL8852BT * RTL8922A WoWLAN net-detect support * tag 'wireless-next-2024-09-11' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (105 commits) wifi: brcmfmac: cfg80211: Convert comma to semicolon wifi: rsi: Remove an unused field in struct rsi_debugfs wifi: libertas: Cleanup unused declarations wifi: wilc1000: Convert using devm_clk_get_optional_enabled() in wilc_bus_probe() wifi: wilc1000: Convert using devm_clk_get_optional_enabled() in wilc_sdio_probe() wifi: wilc1000: fix potential RCU dereference issue in wilc_parse_join_bss_param wifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_cmd_802_11_scan_ext() wifi: mac80211: use two-phase skb reclamation in ieee80211_do_stop() wifi: cfg80211: fix two more possible UBSAN-detected off-by-one errors wifi: cfg80211: fix kernel-doc for per-link data wifi: mt76: mt7925: replace chan config with extend txpower config for clc wifi: mt76: mt7925: fix a potential array-index-out-of-bounds issue for clc wifi: mt76: mt7615: check devm_kasprintf() returned value wifi: mt76: mt7925: convert comma to semicolon wifi: mt76: mt7925: fix a potential association failure upon resuming wifi: mt76: Avoid multiple -Wflex-array-member-not-at-end warnings wifi: mt76: mt7921: Check devm_kasprintf() returned value wifi: mt76: mt7915: check devm_kasprintf() returned value wifi: mt76: mt7915: avoid long MCU command timeouts during SER wifi: mt76: mt7996: fix uninitialized TLV data ... ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents bf73478 + fe57beb commit a18c097

File tree

159 files changed

+3126
-1565
lines changed

Some content is hidden

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

159 files changed

+3126
-1565
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Copyright (c) 2005-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
55
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
6-
* Copyright (c) 2022 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>
@@ -1774,7 +1774,7 @@ static ssize_t ath10k_write_simulate_radar(struct file *file,
17741774
if (!arvif->is_started)
17751775
return -EINVAL;
17761776

1777-
ieee80211_radar_detected(ar->hw);
1777+
ieee80211_radar_detected(ar->hw, NULL);
17781778

17791779
return count;
17801780
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1437,7 +1437,7 @@ static void ath10k_recalc_radar_detection(struct ath10k *ar)
14371437
* by indicating that radar was detected.
14381438
*/
14391439
ath10k_warn(ar, "failed to start CAC: %d\n", ret);
1440-
ieee80211_radar_detected(ar->hw);
1440+
ieee80211_radar_detected(ar->hw, NULL);
14411441
}
14421442
}
14431443

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3990,7 +3990,7 @@ static void ath10k_radar_detected(struct ath10k *ar)
39903990
if (ar->dfs_block_radar_events)
39913991
ath10k_info(ar, "DFS Radar detected, but ignored as requested\n");
39923992
else
3993-
ieee80211_radar_detected(ar->hw);
3993+
ieee80211_radar_detected(ar->hw, NULL);
39943994
}
39953995

39963996
static void ath10k_radar_confirmation_work(struct work_struct *work)

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,11 +407,17 @@ struct ath11k_vif {
407407
bool wpaie_present;
408408
bool bcca_zero_sent;
409409
bool do_not_send_tmpl;
410-
struct ieee80211_chanctx_conf chanctx;
411410
struct ath11k_arp_ns_offload arp_ns_offload;
412411
struct ath11k_rekey_data rekey_data;
413412

414413
struct ath11k_reg_tpc_power_info reg_tpc_info;
414+
415+
/* Must be last - ends in a flexible-array member.
416+
*
417+
* FIXME: Driver should not copy struct ieee80211_chanctx_conf,
418+
* especially because it has a flexible array. Find a better way.
419+
*/
420+
struct ieee80211_chanctx_conf chanctx;
415421
};
416422

417423
struct ath11k_vif_iter {

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

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1305,18 +1305,6 @@ struct htt_ppdu_stats_user_rate {
13051305
#define HTT_TX_INFO_PEERID(_flags) \
13061306
FIELD_GET(HTT_PPDU_STATS_TX_INFO_FLAGS_PEERID_M, _flags)
13071307

1308-
struct htt_tx_ppdu_stats_info {
1309-
struct htt_tlv tlv_hdr;
1310-
u32 tx_success_bytes;
1311-
u32 tx_retry_bytes;
1312-
u32 tx_failed_bytes;
1313-
u32 flags; /* %HTT_PPDU_STATS_TX_INFO_FLAGS_ */
1314-
u16 tx_success_msdus;
1315-
u16 tx_retry_msdus;
1316-
u16 tx_failed_msdus;
1317-
u16 tx_duration; /* united in us */
1318-
} __packed;
1319-
13201308
enum htt_ppdu_stats_usr_compln_status {
13211309
HTT_PPDU_STATS_USER_STATUS_OK,
13221310
HTT_PPDU_STATS_USER_STATUS_FILTERED,
@@ -1364,17 +1352,6 @@ struct htt_ppdu_stats_usr_cmpltn_ack_ba_status {
13641352
u32 success_bytes;
13651353
} __packed;
13661354

1367-
struct htt_ppdu_stats_usr_cmn_array {
1368-
struct htt_tlv tlv_hdr;
1369-
u32 num_ppdu_stats;
1370-
/* tx_ppdu_stats_info is filled by multiple struct htt_tx_ppdu_stats_info
1371-
* elements.
1372-
* tx_ppdu_stats_info is variable length, with length =
1373-
* number_of_ppdu_stats * sizeof (struct htt_tx_ppdu_stats_info)
1374-
*/
1375-
struct htt_tx_ppdu_stats_info tx_ppdu_info[];
1376-
} __packed;
1377-
13781355
struct htt_ppdu_user_stats {
13791356
u16 peer_id;
13801357
u32 tlv_flags;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8358,7 +8358,7 @@ ath11k_wmi_pdev_dfs_radar_detected_event(struct ath11k_base *ab, struct sk_buff
83588358
if (ar->dfs_block_radar_events)
83598359
ath11k_info(ab, "DFS Radar detected, but ignored as requested\n");
83608360
else
8361-
ieee80211_radar_detected(ar->hw);
8361+
ieee80211_radar_detected(ar->hw, NULL);
83628362

83638363
exit:
83648364
rcu_read_unlock();

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,14 +287,20 @@ struct ath12k_vif {
287287
int txpower;
288288
bool rsnie_present;
289289
bool wpaie_present;
290-
struct ieee80211_chanctx_conf chanctx;
291290
u32 key_cipher;
292291
u8 tx_encap_type;
293292
u8 vdev_stats_id;
294293
u32 punct_bitmap;
295294
bool ps;
296295
struct ath12k_vif_cache *cache;
297296
struct ath12k_rekey_data rekey_data;
297+
298+
/* Must be last - ends in a flexible-array member.
299+
*
300+
* FIXME: Driver should not copy struct ieee80211_chanctx_conf,
301+
* especially because it has a flexible array. Find a better way.
302+
*/
303+
struct ieee80211_chanctx_conf chanctx;
298304
};
299305

300306
struct ath12k_vif_iter {

drivers/net/wireless/ath/ath12k/dp.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,18 +1495,6 @@ struct htt_ppdu_stats_user_rate {
14951495
#define HTT_TX_INFO_PEERID(_flags) \
14961496
u32_get_bits(_flags, HTT_PPDU_STATS_TX_INFO_FLAGS_PEERID_M)
14971497

1498-
struct htt_tx_ppdu_stats_info {
1499-
struct htt_tlv tlv_hdr;
1500-
__le32 tx_success_bytes;
1501-
__le32 tx_retry_bytes;
1502-
__le32 tx_failed_bytes;
1503-
__le32 flags; /* %HTT_PPDU_STATS_TX_INFO_FLAGS_ */
1504-
__le16 tx_success_msdus;
1505-
__le16 tx_retry_msdus;
1506-
__le16 tx_failed_msdus;
1507-
__le16 tx_duration; /* united in us */
1508-
} __packed;
1509-
15101498
enum htt_ppdu_stats_usr_compln_status {
15111499
HTT_PPDU_STATS_USER_STATUS_OK,
15121500
HTT_PPDU_STATS_USER_STATUS_FILTERED,

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

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3663,7 +3663,7 @@ static int ath12k_mac_op_hw_scan(struct ieee80211_hw *hw,
36633663
struct ath12k *ar, *prev_ar;
36643664
struct ath12k_vif *arvif = ath12k_vif_to_arvif(vif);
36653665
struct cfg80211_scan_request *req = &hw_req->req;
3666-
struct ath12k_wmi_scan_req_arg arg = {};
3666+
struct ath12k_wmi_scan_req_arg *arg = NULL;
36673667
int ret;
36683668
int i;
36693669
bool create = true;
@@ -3745,42 +3745,47 @@ static int ath12k_mac_op_hw_scan(struct ieee80211_hw *hw,
37453745
if (ret)
37463746
goto exit;
37473747

3748-
ath12k_wmi_start_scan_init(ar, &arg);
3749-
arg.vdev_id = arvif->vdev_id;
3750-
arg.scan_id = ATH12K_SCAN_ID;
3748+
arg = kzalloc(sizeof(*arg), GFP_KERNEL);
3749+
if (!arg) {
3750+
ret = -ENOMEM;
3751+
goto exit;
3752+
}
3753+
3754+
ath12k_wmi_start_scan_init(ar, arg);
3755+
arg->vdev_id = arvif->vdev_id;
3756+
arg->scan_id = ATH12K_SCAN_ID;
37513757

37523758
if (req->ie_len) {
3753-
arg.extraie.ptr = kmemdup(req->ie, req->ie_len, GFP_KERNEL);
3754-
if (!arg.extraie.ptr) {
3759+
arg->extraie.ptr = kmemdup(req->ie, req->ie_len, GFP_KERNEL);
3760+
if (!arg->extraie.ptr) {
37553761
ret = -ENOMEM;
37563762
goto exit;
37573763
}
3758-
arg.extraie.len = req->ie_len;
3764+
arg->extraie.len = req->ie_len;
37593765
}
37603766

37613767
if (req->n_ssids) {
3762-
arg.num_ssids = req->n_ssids;
3763-
for (i = 0; i < arg.num_ssids; i++)
3764-
arg.ssid[i] = req->ssids[i];
3768+
arg->num_ssids = req->n_ssids;
3769+
for (i = 0; i < arg->num_ssids; i++)
3770+
arg->ssid[i] = req->ssids[i];
37653771
} else {
3766-
arg.scan_f_passive = 1;
3772+
arg->scan_f_passive = 1;
37673773
}
37683774

37693775
if (req->n_channels) {
3770-
arg.num_chan = req->n_channels;
3771-
arg.chan_list = kcalloc(arg.num_chan, sizeof(*arg.chan_list),
3772-
GFP_KERNEL);
3773-
3774-
if (!arg.chan_list) {
3776+
arg->num_chan = req->n_channels;
3777+
arg->chan_list = kcalloc(arg->num_chan, sizeof(*arg->chan_list),
3778+
GFP_KERNEL);
3779+
if (!arg->chan_list) {
37753780
ret = -ENOMEM;
37763781
goto exit;
37773782
}
37783783

3779-
for (i = 0; i < arg.num_chan; i++)
3780-
arg.chan_list[i] = req->channels[i]->center_freq;
3784+
for (i = 0; i < arg->num_chan; i++)
3785+
arg->chan_list[i] = req->channels[i]->center_freq;
37813786
}
37823787

3783-
ret = ath12k_start_scan(ar, &arg);
3788+
ret = ath12k_start_scan(ar, arg);
37843789
if (ret) {
37853790
ath12k_warn(ar->ab, "failed to start hw scan: %d\n", ret);
37863791
spin_lock_bh(&ar->data_lock);
@@ -3790,14 +3795,15 @@ static int ath12k_mac_op_hw_scan(struct ieee80211_hw *hw,
37903795

37913796
/* Add a margin to account for event/command processing */
37923797
ieee80211_queue_delayed_work(ath12k_ar_to_hw(ar), &ar->scan.timeout,
3793-
msecs_to_jiffies(arg.max_scan_time +
3798+
msecs_to_jiffies(arg->max_scan_time +
37943799
ATH12K_MAC_SCAN_TIMEOUT_MSECS));
37953800

37963801
exit:
3797-
kfree(arg.chan_list);
3798-
3799-
if (req->ie_len)
3800-
kfree(arg.extraie.ptr);
3802+
if (arg) {
3803+
kfree(arg->chan_list);
3804+
kfree(arg->extraie.ptr);
3805+
kfree(arg);
3806+
}
38013807

38023808
mutex_unlock(&ar->conf_mutex);
38033809

drivers/net/wireless/ath/ath12k/wmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6789,7 +6789,7 @@ ath12k_wmi_pdev_dfs_radar_detected_event(struct ath12k_base *ab, struct sk_buff
67896789
if (ar->dfs_block_radar_events)
67906790
ath12k_info(ab, "DFS Radar detected, but ignored as requested\n");
67916791
else
6792-
ieee80211_radar_detected(ath12k_ar_to_hw(ar));
6792+
ieee80211_radar_detected(ath12k_ar_to_hw(ar), NULL);
67936793

67946794
exit:
67956795
rcu_read_unlock();

0 commit comments

Comments
 (0)