Skip to content

Commit 4e3db44

Browse files
committed
Merge tag 'wireless-drivers-next-2021-06-25' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says: ==================== wireless-drivers-next patches for v5.14 Second, and most likely the last, set of patches for v5.14. mt76 and iwlwifi have most patches in this round, but rtw88 also has some new features. Nothing special really standing out. mt76 * mt7915 MSI support * disable ASPM on mt7915 * mt7915 tx status reporting * mt7921 decap offload rtw88 * beacon filter support * path diversity support * firmware crash information via devcoredump * quirks for disabling pci capabilities mt7601u * add USB ID for a XiaoDu WiFi Dongle ath11k * enable support for QCN9074 PCI devices brcmfmac * support parse country code map from DeviceTree iwlwifi * support for new hardware * support for BIOS control of 11ax enablement in Russia * support UNII4 band enablement from BIOS ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents ac53c26 + c2a3823 commit 4e3db44

Some content is hidden

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

145 files changed

+5551
-3064
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2795,7 +2795,7 @@ void ath10k_wmi_event_chan_info(struct ath10k *ar, struct sk_buff *skb)
27952795
switch (ar->scan.state) {
27962796
case ATH10K_SCAN_IDLE:
27972797
case ATH10K_SCAN_STARTING:
2798-
ath10k_warn(ar, "received chan info event without a scan request, ignoring\n");
2798+
ath10k_dbg(ar, ATH10K_DBG_WMI, "received chan info event without a scan request, ignoring\n");
27992799
goto exit;
28002800
case ATH10K_SCAN_RUNNING:
28012801
case ATH10K_SCAN_ABORTING:

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,10 +1314,16 @@ static void ath11k_peer_assoc_h_he(struct ath11k *ar,
13141314

13151315
arg->he_flag = true;
13161316

1317-
memcpy(&arg->peer_he_cap_macinfo, he_cap->he_cap_elem.mac_cap_info,
1318-
sizeof(arg->peer_he_cap_macinfo));
1319-
memcpy(&arg->peer_he_cap_phyinfo, he_cap->he_cap_elem.phy_cap_info,
1320-
sizeof(arg->peer_he_cap_phyinfo));
1317+
memcpy_and_pad(&arg->peer_he_cap_macinfo,
1318+
sizeof(arg->peer_he_cap_macinfo),
1319+
he_cap->he_cap_elem.mac_cap_info,
1320+
sizeof(he_cap->he_cap_elem.mac_cap_info),
1321+
0);
1322+
memcpy_and_pad(&arg->peer_he_cap_phyinfo,
1323+
sizeof(arg->peer_he_cap_phyinfo),
1324+
he_cap->he_cap_elem.phy_cap_info,
1325+
sizeof(he_cap->he_cap_elem.phy_cap_info),
1326+
0);
13211327
arg->peer_he_ops = vif->bss_conf.he_oper.params;
13221328

13231329
/* the top most byte is used to indicate BSS color info */

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
static const struct pci_device_id ath11k_pci_id_table[] = {
4242
{ PCI_VDEVICE(QCOM, QCA6390_DEVICE_ID) },
4343
{ PCI_VDEVICE(QCOM, WCN6855_DEVICE_ID) },
44-
/* TODO: add QCN9074_DEVICE_ID) once firmware issues are resolved */
44+
{ PCI_VDEVICE(QCOM, QCN9074_DEVICE_ID) },
4545
{0}
4646
};
4747

drivers/net/wireless/ath/wcn36xx/smd.c

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -445,22 +445,12 @@ static int wcn36xx_smd_send_and_wait(struct wcn36xx *wcn, size_t len)
445445
return ret;
446446
}
447447

448-
static void init_hal_msg(struct wcn36xx_hal_msg_header *hdr,
449-
enum wcn36xx_hal_host_msg_type msg_type,
450-
size_t msg_size)
451-
{
452-
memset(hdr, 0, msg_size + sizeof(*hdr));
453-
hdr->msg_type = msg_type;
454-
hdr->msg_version = WCN36XX_HAL_MSG_VERSION0;
455-
hdr->len = msg_size + sizeof(*hdr);
456-
}
457-
458448
#define __INIT_HAL_MSG(msg_body, type, version) \
459449
do { \
460-
memset(&msg_body, 0, sizeof(msg_body)); \
461-
msg_body.header.msg_type = type; \
462-
msg_body.header.msg_version = version; \
463-
msg_body.header.len = sizeof(msg_body); \
450+
memset(&(msg_body), 0, sizeof(msg_body)); \
451+
(msg_body).header.msg_type = type; \
452+
(msg_body).header.msg_version = version; \
453+
(msg_body).header.len = sizeof(msg_body); \
464454
} while (0) \
465455

466456
#define INIT_HAL_MSG(msg_body, type) \
@@ -2729,8 +2719,7 @@ int wcn36xx_smd_set_mc_list(struct wcn36xx *wcn,
27292719

27302720
msg_body = (struct wcn36xx_hal_rcv_flt_pkt_set_mc_list_req_msg *)
27312721
wcn->hal_buf;
2732-
init_hal_msg(&msg_body->header, WCN36XX_HAL_8023_MULTICAST_LIST_REQ,
2733-
sizeof(msg_body->mc_addr_list));
2722+
INIT_HAL_MSG(*msg_body, WCN36XX_HAL_8023_MULTICAST_LIST_REQ);
27342723

27352724
/* An empty list means all mc traffic will be received */
27362725
if (fp)

drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2895,8 +2895,13 @@ brcmf_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *ndev,
28952895
&cfg->assoclist,
28962896
sizeof(cfg->assoclist));
28972897
if (err) {
2898-
bphy_err(drvr, "BRCMF_C_GET_ASSOCLIST unsupported, err=%d\n",
2899-
err);
2898+
/* GET_ASSOCLIST unsupported by firmware of older chips */
2899+
if (err == -EBADE)
2900+
bphy_info_once(drvr, "BRCMF_C_GET_ASSOCLIST unsupported\n");
2901+
else
2902+
bphy_err(drvr, "BRCMF_C_GET_ASSOCLIST failed, err=%d\n",
2903+
err);
2904+
29002905
cfg->assoclist.count = 0;
29012906
return -EOPNOTSUPP;
29022907
}
@@ -6851,7 +6856,12 @@ static int brcmf_setup_wiphybands(struct brcmf_cfg80211_info *cfg)
68516856

68526857
err = brcmf_fil_iovar_int_get(ifp, "rxchain", &rxchain);
68536858
if (err) {
6854-
bphy_err(drvr, "rxchain error (%d)\n", err);
6859+
/* rxchain unsupported by firmware of older chips */
6860+
if (err == -EBADE)
6861+
bphy_info_once(drvr, "rxchain unsupported\n");
6862+
else
6863+
bphy_err(drvr, "rxchain error (%d)\n", err);
6864+
68556865
nchain = 1;
68566866
} else {
68576867
for (nchain = 0; rxchain; nchain++)

drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,14 @@ static void _brcmf_set_multicast_list(struct work_struct *work)
188188
/*Finally, pick up the PROMISC flag */
189189
cmd_value = (ndev->flags & IFF_PROMISC) ? true : false;
190190
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PROMISC, cmd_value);
191-
if (err < 0)
192-
bphy_err(drvr, "Setting BRCMF_C_SET_PROMISC failed, %d\n",
193-
err);
191+
if (err < 0) {
192+
/* PROMISC unsupported by firmware of older chips */
193+
if (err == -EBADE)
194+
bphy_info_once(drvr, "BRCMF_C_SET_PROMISC unsupported\n");
195+
else
196+
bphy_err(drvr, "Setting BRCMF_C_SET_PROMISC failed, err=%d\n",
197+
err);
198+
}
194199
brcmf_configure_arp_nd_offload(ifp, !cmd_value);
195200
}
196201

drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ void __brcmf_err(struct brcmf_bus *bus, const char *func, const char *fmt, ...);
6060
##__VA_ARGS__); \
6161
} while (0)
6262

63+
#define bphy_info_once(drvr, fmt, ...) \
64+
wiphy_info_once((drvr)->wiphy, "%s: " fmt, __func__, \
65+
##__VA_ARGS__)
66+
6367
#if defined(DEBUG) || defined(CONFIG_BRCM_TRACING)
6468

6569
/* For debug/tracing purposes treat info messages as errors */

drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,59 @@
1212
#include "common.h"
1313
#include "of.h"
1414

15+
static int brcmf_of_get_country_codes(struct device *dev,
16+
struct brcmf_mp_device *settings)
17+
{
18+
struct device_node *np = dev->of_node;
19+
struct brcmfmac_pd_cc_entry *cce;
20+
struct brcmfmac_pd_cc *cc;
21+
int count;
22+
int i;
23+
24+
count = of_property_count_strings(np, "brcm,ccode-map");
25+
if (count < 0) {
26+
/* The property is optional, so return success if it doesn't
27+
* exist. Otherwise propagate the error code.
28+
*/
29+
return (count == -EINVAL) ? 0 : count;
30+
}
31+
32+
cc = devm_kzalloc(dev, sizeof(*cc) + count * sizeof(*cce), GFP_KERNEL);
33+
if (!cc)
34+
return -ENOMEM;
35+
36+
cc->table_size = count;
37+
38+
for (i = 0; i < count; i++) {
39+
const char *map;
40+
41+
cce = &cc->table[i];
42+
43+
if (of_property_read_string_index(np, "brcm,ccode-map",
44+
i, &map))
45+
continue;
46+
47+
/* String format e.g. US-Q2-86 */
48+
if (sscanf(map, "%2c-%2c-%d", cce->iso3166, cce->cc,
49+
&cce->rev) != 3)
50+
brcmf_err("failed to read country map %s\n", map);
51+
else
52+
brcmf_dbg(INFO, "%s-%s-%d\n", cce->iso3166, cce->cc,
53+
cce->rev);
54+
}
55+
56+
settings->country_codes = cc;
57+
58+
return 0;
59+
}
60+
1561
void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
1662
struct brcmf_mp_device *settings)
1763
{
1864
struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio;
1965
struct device_node *root, *np = dev->of_node;
2066
int irq;
67+
int err;
2168
u32 irqf;
2269
u32 val;
2370

@@ -43,8 +90,14 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
4390
of_node_put(root);
4491
}
4592

46-
if (!np || bus_type != BRCMF_BUSTYPE_SDIO ||
47-
!of_device_is_compatible(np, "brcm,bcm4329-fmac"))
93+
if (!np || !of_device_is_compatible(np, "brcm,bcm4329-fmac"))
94+
return;
95+
96+
err = brcmf_of_get_country_codes(dev, settings);
97+
if (err)
98+
brcmf_err("failed to get OF country code map (err=%d)\n", err);
99+
100+
if (bus_type != BRCMF_BUSTYPE_SDIO)
48101
return;
49102

50103
if (of_property_read_u32(np, "brcm,drive-strength", &val) == 0)

drivers/net/wireless/intel/iwlwifi/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ iwlwifi-objs += iwl-trans.o
1616
iwlwifi-objs += queue/tx.o
1717

1818
iwlwifi-objs += fw/img.o fw/notif-wait.o
19-
iwlwifi-objs += fw/dbg.o fw/pnvm.o
19+
iwlwifi-objs += fw/dbg.o fw/pnvm.o fw/dump.o
2020
iwlwifi-$(CONFIG_IWLMVM) += fw/paging.o fw/smem.o fw/init.o
2121
iwlwifi-$(CONFIG_ACPI) += fw/acpi.o
22+
iwlwifi-$(CONFIG_EFI) += fw/uefi.o
2223
iwlwifi-$(CONFIG_IWLWIFI_DEBUGFS) += fw/debugfs.o
2324

2425
iwlwifi-objs += $(iwlwifi-m)

drivers/net/wireless/intel/iwlwifi/cfg/22000.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
22
/*
33
* Copyright (C) 2015-2017 Intel Deutschland GmbH
4-
* Copyright (C) 2018-2020 Intel Corporation
4+
* Copyright (C) 2018-2021 Intel Corporation
55
*/
66
#include <linux/module.h>
77
#include <linux/stringify.h>
88
#include "iwl-config.h"
99
#include "iwl-prph.h"
1010

1111
/* Highest firmware API version supported */
12-
#define IWL_22000_UCODE_API_MAX 63
12+
#define IWL_22000_UCODE_API_MAX 64
1313

1414
/* Lowest firmware API version supported */
1515
#define IWL_22000_UCODE_API_MIN 39
@@ -47,6 +47,7 @@
4747
#define IWL_MA_A_GF_A_FW_PRE "iwlwifi-ma-a0-gf-a0-"
4848
#define IWL_MA_A_GF4_A_FW_PRE "iwlwifi-ma-a0-gf4-a0-"
4949
#define IWL_MA_A_MR_A_FW_PRE "iwlwifi-ma-a0-mr-a0-"
50+
#define IWL_MA_A_FM_A_FW_PRE "iwlwifi-ma-a0-fm-a0-"
5051
#define IWL_SNJ_A_MR_A_FW_PRE "iwlwifi-SoSnj-a0-mr-a0-"
5152
#define IWL_BZ_A_HR_B_FW_PRE "iwlwifi-bz-a0-hr-b0-"
5253
#define IWL_BZ_A_GF_A_FW_PRE "iwlwifi-bz-a0-gf-a0-"
@@ -93,6 +94,8 @@
9394
IWL_MA_A_GF4_A_FW_PRE __stringify(api) ".ucode"
9495
#define IWL_MA_A_MR_A_FW_MODULE_FIRMWARE(api) \
9596
IWL_MA_A_MR_A_FW_PRE __stringify(api) ".ucode"
97+
#define IWL_MA_A_FM_A_FW_MODULE_FIRMWARE(api) \
98+
IWL_MA_A_FM_A_FW_PRE __stringify(api) ".ucode"
9699
#define IWL_SNJ_A_MR_A_MODULE_FIRMWARE(api) \
97100
IWL_SNJ_A_MR_A_FW_PRE __stringify(api) ".ucode"
98101
#define IWL_BZ_A_HR_B_MODULE_FIRMWARE(api) \
@@ -389,6 +392,7 @@ const char iwl_ax201_name[] = "Intel(R) Wi-Fi 6 AX201 160MHz";
389392
const char iwl_ax203_name[] = "Intel(R) Wi-Fi 6 AX203";
390393
const char iwl_ax211_name[] = "Intel(R) Wi-Fi 6E AX211 160MHz";
391394
const char iwl_ax221_name[] = "Intel(R) Wi-Fi 6E AX221 160MHz";
395+
const char iwl_ax231_name[] = "Intel(R) Wi-Fi 6E AX231 160MHz";
392396
const char iwl_ax411_name[] = "Intel(R) Wi-Fi 6E AX411 160MHz";
393397

394398
const char iwl_ax200_killer_1650w_name[] =
@@ -724,6 +728,13 @@ const struct iwl_cfg iwl_cfg_ma_a0_mr_a0 = {
724728
.num_rbds = IWL_NUM_RBDS_AX210_HE,
725729
};
726730

731+
const struct iwl_cfg iwl_cfg_ma_a0_fm_a0 = {
732+
.fw_name_pre = IWL_MA_A_FM_A_FW_PRE,
733+
.uhb_supported = true,
734+
IWL_DEVICE_AX210,
735+
.num_rbds = IWL_NUM_RBDS_AX210_HE,
736+
};
737+
727738
const struct iwl_cfg iwl_cfg_snj_a0_mr_a0 = {
728739
.fw_name_pre = IWL_SNJ_A_MR_A_FW_PRE,
729740
.uhb_supported = true,
@@ -797,6 +808,7 @@ MODULE_FIRMWARE(IWL_MA_A_HR_B_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
797808
MODULE_FIRMWARE(IWL_MA_A_GF_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
798809
MODULE_FIRMWARE(IWL_MA_A_GF4_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
799810
MODULE_FIRMWARE(IWL_MA_A_MR_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
811+
MODULE_FIRMWARE(IWL_MA_A_FM_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
800812
MODULE_FIRMWARE(IWL_SNJ_A_MR_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
801813
MODULE_FIRMWARE(IWL_BZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
802814
MODULE_FIRMWARE(IWL_BZ_A_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));

0 commit comments

Comments
 (0)