Skip to content

Commit 0ee28c9

Browse files
committed
Merge tag 'wireless-next-2023-12-18' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
Kalle Valo says: ==================== wireless-next patches for v6.8 The second features pull request for v6.8. A bigger one this time with changes both to stack and drivers. We have a new Wifi band RFI (WBRF) mitigation feature for which we pulled an immutable branch shared with other subsystems. And, as always, other new features and bug fixes all over. Major changes: cfg80211/mac80211 * AMD ACPI based Wifi band RFI (WBRF) mitigation feature * Basic Service Set (BSS) usage reporting * TID to link mapping support * mac80211 hardware flag to disallow puncturing iwlwifi * new debugfs file fw_dbg_clear mt76 * NVMEM EEPROM improvements * mt7996 Extremely High Throughpu (EHT) improvements * mt7996 Wireless Ethernet Dispatcher (WED) support * mt7996 36-bit DMA support ath12k * support one MSI vector * WCN7850: support AP mode * tag 'wireless-next-2023-12-18' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (207 commits) wifi: mt76: mt7996: Use DECLARE_FLEX_ARRAY() and fix -Warray-bounds warnings wifi: ath11k: workaround too long expansion sparse warnings Revert "wifi: ath12k: use ATH12K_PCI_IRQ_DP_OFFSET for DP IRQ" wifi: rt2x00: remove useless code in rt2x00queue_create_tx_descriptor() wifi: rtw89: only reset BB/RF for existing WiFi 6 chips while starting up wifi: rtw89: add DBCC H2C to notify firmware the status wifi: rtw89: mac: add suffix _ax to MAC functions wifi: rtw89: mac: add flags to check if CMAC and DMAC are enabled wifi: rtw89: 8922a: add power on/off functions wifi: rtw89: add XTAL SI for WiFi 7 chips wifi: rtw89: phy: print out RFK log with formatted string wifi: rtw89: parse and print out RFK log from C2H events wifi: rtw89: add C2H event handlers of RFK log and report wifi: rtw89: load RFK log format string from firmware file wifi: rtw89: fw: add version field to BB MCU firmware element wifi: rtw89: fw: load TX power track tables from fw_element wifi: mwifiex: configure BSSID consistently when starting AP wifi: mwifiex: add extra delay for firmware ready wifi: mac80211: sta_info.c: fix sentence grammar wifi: mac80211: rx.c: fix sentence grammar ... ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 509afc7 + c5a3f56 commit 0ee28c9

File tree

292 files changed

+10703
-2086
lines changed

Some content is hidden

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

292 files changed

+10703
-2086
lines changed

Documentation/driver-api/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ available subsections can be seen below.
115115
hte/index
116116
wmi
117117
dpll
118+
wbrf
118119

119120
.. only:: subproject and html
120121

Documentation/driver-api/wbrf.rst

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
.. SPDX-License-Identifier: GPL-2.0-or-later
2+
3+
=================================
4+
WBRF - Wifi Band RFI Mitigations
5+
=================================
6+
7+
Due to electrical and mechanical constraints in certain platform designs
8+
there may be likely interference of relatively high-powered harmonics of
9+
the GPU memory clocks with local radio module frequency bands used by
10+
certain Wifi bands.
11+
12+
To mitigate possible RFI interference producers can advertise the
13+
frequencies in use and consumers can use this information to avoid using
14+
these frequencies for sensitive features.
15+
16+
When a platform is known to have this issue with any contained devices,
17+
the platform designer will advertise the availability of this feature via
18+
ACPI devices with a device specific method (_DSM).
19+
* Producers with this _DSM will be able to advertise the frequencies in use.
20+
* Consumers with this _DSM will be able to register for notifications of
21+
frequencies in use.
22+
23+
Some general terms
24+
==================
25+
26+
Producer: such component who can produce high-powered radio frequency
27+
Consumer: such component who can adjust its in-use frequency in
28+
response to the radio frequencies of other components to mitigate the
29+
possible RFI.
30+
31+
To make the mechanism function, those producers should notify active use
32+
of their particular frequencies so that other consumers can make relative
33+
internal adjustments as necessary to avoid this resonance.
34+
35+
ACPI interface
36+
==============
37+
38+
Although initially used by for wifi + dGPU use cases, the ACPI interface
39+
can be scaled to any type of device that a platform designer discovers
40+
can cause interference.
41+
42+
The GUID used for the _DSM is 7B7656CF-DC3D-4C1C-83E9-66E721DE3070.
43+
44+
3 functions are available in this _DSM:
45+
46+
* 0: discover # of functions available
47+
* 1: record RF bands in use
48+
* 2: retrieve RF bands in use
49+
50+
Driver programming interface
51+
============================
52+
53+
.. kernel-doc:: drivers/platform/x86/amd/wbrf.c
54+
55+
Sample Usage
56+
=============
57+
58+
The expected flow for the producers:
59+
1. During probe, call `acpi_amd_wbrf_supported_producer` to check if WBRF
60+
can be enabled for the device.
61+
2. On using some frequency band, call `acpi_amd_wbrf_add_remove` with 'add'
62+
param to get other consumers properly notified.
63+
3. Or on stopping using some frequency band, call
64+
`acpi_amd_wbrf_add_remove` with 'remove' param to get other consumers notified.
65+
66+
The expected flow for the consumers:
67+
1. During probe, call `acpi_amd_wbrf_supported_consumer` to check if WBRF
68+
can be enabled for the device.
69+
2. Call `amd_wbrf_register_notifier` to register for notification
70+
of frequency band change(add or remove) from other producers.
71+
3. Call the `amd_wbrf_retrieve_freq_band` initally to retrieve
72+
current active frequency bands considering some producers may broadcast
73+
such information before the consumer is up.
74+
4. On receiving a notification for frequency band change, run
75+
`amd_wbrf_retrieve_freq_band` again to retrieve the latest
76+
active frequency bands.
77+
5. During driver cleanup, call `amd_wbrf_unregister_notifier` to
78+
unregister the notifier.

drivers/bcma/driver_pci_host.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ static u8 bcma_find_pci_capability(struct bcma_drv_pci *pc, unsigned int dev,
280280
/* check for Header type 0 */
281281
bcma_extpci_read_config(pc, dev, func, PCI_HEADER_TYPE, &byte_val,
282282
sizeof(u8));
283-
if ((byte_val & 0x7F) != PCI_HEADER_TYPE_NORMAL)
283+
if ((byte_val & PCI_HEADER_TYPE_MASK) != PCI_HEADER_TYPE_NORMAL)
284284
return cap_ptr;
285285

286286
/* check if the capability pointer field exists */

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*
33
* Copyright (c) 2005-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2014,2016-2017 Qualcomm Atheros, Inc.
5+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
56
*/
67

78
#include "bmi.h"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +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.
67
*/
78

89
#include "hif.h"

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright (c) 2005-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
55
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
6+
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
67
*/
78

89
#include <linux/module.h>
@@ -100,6 +101,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
100101
.hw_restart_disconnect = false,
101102
.use_fw_tx_credits = true,
102103
.delay_unmap_buffer = false,
104+
.mcast_frame_registration = false,
103105
},
104106
{
105107
.id = QCA988X_HW_2_0_VERSION,
@@ -140,6 +142,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
140142
.hw_restart_disconnect = false,
141143
.use_fw_tx_credits = true,
142144
.delay_unmap_buffer = false,
145+
.mcast_frame_registration = false,
143146
},
144147
{
145148
.id = QCA9887_HW_1_0_VERSION,
@@ -181,6 +184,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
181184
.hw_restart_disconnect = false,
182185
.use_fw_tx_credits = true,
183186
.delay_unmap_buffer = false,
187+
.mcast_frame_registration = false,
184188
},
185189
{
186190
.id = QCA6174_HW_3_2_VERSION,
@@ -217,6 +221,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
217221
.hw_restart_disconnect = false,
218222
.use_fw_tx_credits = true,
219223
.delay_unmap_buffer = false,
224+
.mcast_frame_registration = false,
220225
},
221226
{
222227
.id = QCA6174_HW_2_1_VERSION,
@@ -257,6 +262,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
257262
.hw_restart_disconnect = false,
258263
.use_fw_tx_credits = true,
259264
.delay_unmap_buffer = false,
265+
.mcast_frame_registration = false,
260266
},
261267
{
262268
.id = QCA6174_HW_2_1_VERSION,
@@ -297,6 +303,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
297303
.hw_restart_disconnect = false,
298304
.use_fw_tx_credits = true,
299305
.delay_unmap_buffer = false,
306+
.mcast_frame_registration = false,
300307
},
301308
{
302309
.id = QCA6174_HW_3_0_VERSION,
@@ -337,6 +344,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
337344
.hw_restart_disconnect = false,
338345
.use_fw_tx_credits = true,
339346
.delay_unmap_buffer = false,
347+
.mcast_frame_registration = false,
340348
},
341349
{
342350
.id = QCA6174_HW_3_2_VERSION,
@@ -381,6 +389,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
381389
.hw_restart_disconnect = false,
382390
.use_fw_tx_credits = true,
383391
.delay_unmap_buffer = false,
392+
.mcast_frame_registration = true,
384393
},
385394
{
386395
.id = QCA99X0_HW_2_0_DEV_VERSION,
@@ -427,6 +436,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
427436
.hw_restart_disconnect = false,
428437
.use_fw_tx_credits = true,
429438
.delay_unmap_buffer = false,
439+
.mcast_frame_registration = false,
430440
},
431441
{
432442
.id = QCA9984_HW_1_0_DEV_VERSION,
@@ -480,6 +490,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
480490
.hw_restart_disconnect = false,
481491
.use_fw_tx_credits = true,
482492
.delay_unmap_buffer = false,
493+
.mcast_frame_registration = false,
483494
},
484495
{
485496
.id = QCA9888_HW_2_0_DEV_VERSION,
@@ -530,6 +541,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
530541
.hw_restart_disconnect = false,
531542
.use_fw_tx_credits = true,
532543
.delay_unmap_buffer = false,
544+
.mcast_frame_registration = false,
533545
},
534546
{
535547
.id = QCA9377_HW_1_0_DEV_VERSION,
@@ -570,6 +582,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
570582
.hw_restart_disconnect = false,
571583
.use_fw_tx_credits = true,
572584
.delay_unmap_buffer = false,
585+
.mcast_frame_registration = false,
573586
},
574587
{
575588
.id = QCA9377_HW_1_1_DEV_VERSION,
@@ -612,6 +625,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
612625
.hw_restart_disconnect = false,
613626
.use_fw_tx_credits = true,
614627
.delay_unmap_buffer = false,
628+
.mcast_frame_registration = false,
615629
},
616630
{
617631
.id = QCA9377_HW_1_1_DEV_VERSION,
@@ -645,6 +659,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
645659
.hw_restart_disconnect = false,
646660
.use_fw_tx_credits = true,
647661
.delay_unmap_buffer = false,
662+
.mcast_frame_registration = false,
648663
},
649664
{
650665
.id = QCA4019_HW_1_0_DEV_VERSION,
@@ -692,6 +707,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
692707
.hw_restart_disconnect = false,
693708
.use_fw_tx_credits = true,
694709
.delay_unmap_buffer = false,
710+
.mcast_frame_registration = false,
695711
},
696712
{
697713
.id = WCN3990_HW_1_0_DEV_VERSION,
@@ -725,6 +741,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
725741
.hw_restart_disconnect = true,
726742
.use_fw_tx_credits = false,
727743
.delay_unmap_buffer = true,
744+
.mcast_frame_registration = false,
728745
},
729746
};
730747

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright (c) 2005-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
55
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
6+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
67
*/
78

89
#ifndef _CORE_H_
@@ -607,7 +608,7 @@ struct ath10k_vif {
607608
u8 tim_bitmap[64];
608609
u8 tim_len;
609610
u32 ssid_len;
610-
u8 ssid[IEEE80211_MAX_SSID_LEN];
611+
u8 ssid[IEEE80211_MAX_SSID_LEN] __nonstring;
611612
bool hidden_ssid;
612613
/* P2P_IE with NoA attribute for P2P_GO case */
613614
u32 noa_len;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*
33
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
44
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
5+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
56
*/
67

78
#include "coredump.h"

drivers/net/wireless/ath/ath10k/coredump.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* SPDX-License-Identifier: ISC */
22
/*
33
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
4+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
45
*/
56

67
#ifndef _COREDUMP_H_

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +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.
67
*/
78

89
#include <linux/module.h>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*
33
* Copyright (c) 2014-2017 Qualcomm Atheros, Inc.
44
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
5+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
56
*/
67

78
#include "core.h"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*
33
* Copyright (c) 2005-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
5+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
56
*/
67

78
#include "core.h"

drivers/net/wireless/ath/ath10k/htc.h

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -246,26 +246,12 @@ struct ath10k_htc_lookahead_bundle {
246246
struct ath10k_htc_record {
247247
struct ath10k_ath10k_htc_record_hdr hdr;
248248
union {
249-
struct ath10k_htc_credit_report credit_report[0];
250-
struct ath10k_htc_lookahead_report lookahead_report[0];
251-
struct ath10k_htc_lookahead_bundle lookahead_bundle[0];
252-
u8 pauload[0];
249+
DECLARE_FLEX_ARRAY(struct ath10k_htc_credit_report, credit_report);
250+
DECLARE_FLEX_ARRAY(struct ath10k_htc_lookahead_report, lookahead_report);
251+
DECLARE_FLEX_ARRAY(struct ath10k_htc_lookahead_bundle, lookahead_bundle);
253252
};
254253
} __packed __aligned(4);
255254

256-
/*
257-
* note: the trailer offset is dynamic depending
258-
* on payload length. this is only a struct layout draft
259-
*/
260-
struct ath10k_htc_frame {
261-
struct ath10k_htc_hdr hdr;
262-
union {
263-
struct ath10k_htc_msg msg;
264-
u8 payload[0];
265-
};
266-
struct ath10k_htc_record trailer[0];
267-
} __packed __aligned(4);
268-
269255
/*******************/
270256
/* Host-side stuff */
271257
/*******************/

drivers/net/wireless/ath/ath10k/htt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +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) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved.
67
*/
78

89
#ifndef _HTT_H_

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +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.
67
*/
78

89
#include "core.h"

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*
33
* Copyright (c) 2005-2011 Atheros Communications Inc.
44
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
5+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
56
*/
67

78
#include <linux/etherdevice.h>
@@ -40,7 +41,6 @@ static void __ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
4041
struct ath10k *ar = hw->priv;
4142
struct ath10k_sta *arsta;
4243
struct ath10k_vif *arvif = (void *)txq->vif->drv_priv;
43-
unsigned long frame_cnt;
4444
unsigned long byte_cnt;
4545
int idx;
4646
u32 bit;
@@ -67,7 +67,7 @@ static void __ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
6767
bit = BIT(peer_id % 32);
6868
idx = peer_id / 32;
6969

70-
ieee80211_txq_get_depth(txq, &frame_cnt, &byte_cnt);
70+
ieee80211_txq_get_depth(txq, NULL, &byte_cnt);
7171
count = ath10k_htt_tx_txq_calc_size(byte_cnt);
7272

7373
if (unlikely(peer_id >= ar->htt.tx_q_state.num_peers) ||

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: ISC
22
/*
33
* Copyright (c) 2014-2017 Qualcomm Atheros, Inc.
4+
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
45
*/
56

67
#include <linux/types.h>

0 commit comments

Comments
 (0)