This contains the following commits: ``` git log --oneline v6.12.52...v6.12.61 -- drivers/net/wireless/ net/mac80211/ net/wireless/ a1eb56723b32 wifi: ath12k: correctly handle mcast packets for clients c0a9c2c1b7b9 wifi: mac80211: use wiphy_hrtimer_work for csa.switch_work d4caee32a9f8 wifi: cfg80211: add an hrtimer based delayed work item 6455948c8aab wifi: mac80211: reject address change while connecting 80dc5a2ce5b7 wifi: ath11k: Clear affinity hint before calling ath11k_pcic_free_irq() in error path acd24d509227 wifi: mac80211: skip rate verification for not captured PSDUs 53cf801b8555 wifi: ath11k: zero init info->status in wmi_process_mgmt_tx_comp() e8fa86b0bd96 wifi: mac80211_hwsim: Limit destroy_on_close radio removal to netgroup 77d4afd6c78b Revert "wifi: ath10k: avoid unnecessary wait for service ready message" 07d862c7de3d wifi: ath12k: Increase DP_REO_CMD_RING_SIZE to 256 522734fc807c wifi: mac80211: Track NAN interface start/stop 8db790c2491e wifi: ath10k: Fix connection after GTK rekeying 72f1984246e6 wifi: rtw89: renew a completion for each H2C command waiting C2H event 336da4414300 wifi: rtw89: obtain RX path from ppdu status IE00 da91687f01f4 wifi: mt76: mt7996: fix memory leak on mt7996_mcu_sta_key_tlv error a534dd44b70e wifi: mt76: mt76_eeprom_override to int aa5ed215cfe8 wifi: mt76: mt7996: Temporarily disable EPCS efe2ef24feab wifi: mt76: mt7921: Add 160MHz beamformee capability for mt7922 device 5de410dfb4d9 wifi: mac80211: Fix HE capabilities element check f157d1cb2cdc wifi: iwlwifi: fw: Add ASUS to PPAG and TAS list c9df78e84e85 wifi: mac80211: Fix 6 GHz Band capabilities element advertisement in lower bands 958234997dd5 wifi: rtw89: fix BSSID comparison for non-transmitted BSSID ca18975c4de2 wifi: rtw89: wow: remove notify during WoWLAN net-detect bc1ca06998c1 wifi: rtw88: sdio: use indirect IO for device registers before power-on 8ebef59d0294 wifi: rtw89: print just once for unknown C2H events 5596a90c8952 wifi: mac80211: fix key tailroom accounting leak 23b8682f05ec wifi: mac80211: don't mark keys for inactive links as uploaded e3373f10c6a6 wifi: ath11k: avoid bit operation on key flags 50f50dd024b4 wifi: ath11k: add support for MU EDCA 2a6cd5951ba8 wifi: ath12k: free skb during idr cleanup callback 775e37df2acc wifi: ath11k: Add missing platform IDs for quirk table c4840991ee4c wifi: ath10k: Fix memory leak on unsupported WMI command a6eed58249e7 wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode 57100b87c778 wifi: ath12k: fix read pointer after free in ath12k_mac_assign_vif_to_vdev() 4a63523d3541 wifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac() e9fd43b799d2 wifi: rtw89: avoid possible TX wait initialization race b419093e5e42 wifi: mt76: mt7921u: Add VID/PID for Netgear A7500 feb1774aaf85 wifi: mt76: mt7925u: Add VID/PID for Netgear A9000 bd3ac455a88d wifi: ath11k: HAL SRNG: don't deinitialize and re-initialize again 8055133a9f64 wifi: rtw89: avoid circular locking dependency in ser_state_run() 1c873416758f wifi: mac80211: fix Rx packet handling when pubsta information is not available 6e7d9fa61d7d wifi: ath10k: avoid unnecessary wait for service ready message 8d4f6ab4c53e wifi: ath12k: fix wrong logging ID used for CE fc00890c55e3 wifi: mt76: mt7915: fix mt7981 pre-calibration e18c4e6ba36c wifi: mt76: mt7996: Convert mt7996_wed_rro_addr to LE f481404a9826 wifi: mt76: mt7996: Fix RX packets configuration for primary WED device 57519239c76c wifi: mt76: fix potential memory leak in mt76_wmac_probe() 27c8e2e4b56f wifi: iwlwifi: Remove redundant header files 605402433eb8 wifi: mwifiex: send world regulatory domain to driver ``` The removed patch was added upstream. Link: https://github.com/openwrt/openwrt/pull/21134 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
130 lines
4.5 KiB
Diff
130 lines
4.5 KiB
Diff
From 4c1d4af0ac83705828dd11fded409163a87ea515 Mon Sep 17 00:00:00 2001
|
|
From: Kurt Lee <kurt.lee@cypress.com>
|
|
Date: Thu, 20 Aug 2020 03:07:02 -0500
|
|
Subject: [PATCH] brcmfmac: Fix interoperating DPP and other encryption network
|
|
access
|
|
|
|
1. If firmware supports 4-way handshake offload but not supports DPP
|
|
4-way offload, when user first connects encryption network, driver will
|
|
set "sup_wpa 1" to firmware, but it will further result in DPP
|
|
connection failure since firmware won't send EAPOL frame to host.
|
|
|
|
2. Fix DPP AP mode handling action frames.
|
|
|
|
3. For some firmware without fwsup support, the join procedure will be
|
|
skipped due to "sup_wpa" iovar returning not-support. Check the fwsup
|
|
feature before do such iovar.
|
|
|
|
Signed-off-by: Kurt Lee <kurt.lee@cypress.com>
|
|
Signed-off-by: Double Lo <double.lo@cypress.com>
|
|
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
|
|
---
|
|
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 67 ++++++++++---------
|
|
.../broadcom/brcm80211/brcmfmac/p2p.c | 5 ++
|
|
2 files changed, 42 insertions(+), 30 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
@@ -2491,43 +2491,50 @@ brcmf_cfg80211_connect(struct wiphy *wip
|
|
goto done;
|
|
}
|
|
|
|
- if (sme->crypto.psk &&
|
|
- profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
|
|
- if (WARN_ON(profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE)) {
|
|
- err = -EINVAL;
|
|
- goto done;
|
|
+ if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FWSUP)) {
|
|
+ if (sme->crypto.psk) {
|
|
+ if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
|
|
+ if (WARN_ON(profile->use_fwsup !=
|
|
+ BRCMF_PROFILE_FWSUP_NONE)) {
|
|
+ err = -EINVAL;
|
|
+ goto done;
|
|
+ }
|
|
+ brcmf_dbg(INFO, "using PSK offload\n");
|
|
+ profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
|
|
+ }
|
|
+ } else {
|
|
+ profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
|
|
}
|
|
- brcmf_dbg(INFO, "using PSK offload\n");
|
|
- profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
|
|
- }
|
|
|
|
- if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
|
|
- /* enable firmware supplicant for this interface */
|
|
- err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 1);
|
|
- if (err < 0) {
|
|
- bphy_err(drvr, "failed to enable fw supplicant\n");
|
|
- goto done;
|
|
+ if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
|
|
+ /* enable firmware supplicant for this interface */
|
|
+ err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 1);
|
|
+ if (err < 0) {
|
|
+ bphy_err(drvr, "failed to enable fw supplicant\n");
|
|
+ goto done;
|
|
+ }
|
|
+ } else {
|
|
+ err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 0);
|
|
}
|
|
- }
|
|
|
|
- if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_PSK)
|
|
- err = brcmf_set_pmk(ifp, sme->crypto.psk,
|
|
- BRCMF_WSEC_MAX_PSK_LEN);
|
|
- else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
|
|
- /* clean up user-space RSNE */
|
|
- err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0);
|
|
- if (err) {
|
|
- bphy_err(drvr, "failed to clean up user-space RSNE\n");
|
|
- goto done;
|
|
- }
|
|
- err = brcmf_fwvid_set_sae_password(ifp, &sme->crypto);
|
|
- if (!err && sme->crypto.psk)
|
|
+ if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_PSK) {
|
|
err = brcmf_set_pmk(ifp, sme->crypto.psk,
|
|
BRCMF_WSEC_MAX_PSK_LEN);
|
|
+ } else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
|
|
+ /* clean up user-space RSNE */
|
|
+ err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0);
|
|
+ if (err) {
|
|
+ bphy_err(drvr, "failed to clean up user-space RSNE\n");
|
|
+ goto done;
|
|
+ }
|
|
+ err = brcmf_fwvid_set_sae_password(ifp, &sme->crypto);
|
|
+ if (!err && sme->crypto.psk)
|
|
+ err = brcmf_set_pmk(ifp, sme->crypto.psk,
|
|
+ BRCMF_WSEC_MAX_PSK_LEN);
|
|
+ }
|
|
+ if (err)
|
|
+ goto done;
|
|
}
|
|
- if (err)
|
|
- goto done;
|
|
-
|
|
/* Join with specific BSSID and cached SSID
|
|
* If SSID is zero join based on BSSID only
|
|
*/
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
|
@@ -1281,6 +1281,10 @@ static s32 brcmf_p2p_abort_action_frame(
|
|
brcmf_dbg(TRACE, "Enter\n");
|
|
|
|
vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
|
|
+
|
|
+ if (!vif)
|
|
+ vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif;
|
|
+
|
|
err = brcmf_fil_bsscfg_data_set(vif->ifp, "actframe_abort", &int_val,
|
|
sizeof(s32));
|
|
if (err)
|
|
@@ -1817,6 +1821,7 @@ bool brcmf_p2p_send_action_frame(struct
|
|
/* validate channel and p2p ies */
|
|
if (config_af_params.search_channel &&
|
|
IS_P2P_SOCIAL_CHANNEL(le32_to_cpu(af_params->channel)) &&
|
|
+ p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif &&
|
|
p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif->saved_ie.probe_req_ie_len) {
|
|
afx_hdl = &p2p->afx_hdl;
|
|
afx_hdl->peer_listen_chan = le32_to_cpu(af_params->channel);
|