* [PATCH 0/4] wifi: brcmfmac: per-vendor changes and SAE offload support
@ 2024-01-01 8:44 Arend van Spriel
2024-01-01 8:44 ` [PATCH 1/4] wifi: brcmfmac: export firmware interface functions Arend van Spriel
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Arend van Spriel @ 2024-01-01 8:44 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel
[-- Attachment #1: Type: text/plain, Size: 1341 bytes --]
This series builds around the patch from Hector Martin which enables
SAE offload for WCC vendor devices like the BCM4378.
Other patches involve exposing firmware interface layer functions to
per-vendor modules and allowing per-vendor feature detection or override.
This series applies to the main branch of the wireless-next repository.
Arend van Spriel (3):
wifi: brcmfmac: export firmware interface functions
wifi: brcmfmac: add per-vendor feature detection callback
wifi: brcmfmac: move feature overrides before feature_disable
Hector Martin (1):
wifi: brcmfmac: cfg80211: Use WSEC to set SAE password
.../broadcom/brcm80211/brcmfmac/bca/core.c | 8 ++
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 58 ++++----
.../broadcom/brcm80211/brcmfmac/cfg80211.h | 2 +
.../broadcom/brcm80211/brcmfmac/core.c | 2 +-
.../broadcom/brcm80211/brcmfmac/cyw/core.c | 28 ++++
.../broadcom/brcm80211/brcmfmac/feature.c | 11 +-
.../broadcom/brcm80211/brcmfmac/fwil.c | 116 ++--------------
.../broadcom/brcm80211/brcmfmac/fwil.h | 127 +++++++++++++++---
.../broadcom/brcm80211/brcmfmac/fwil_types.h | 2 +-
.../broadcom/brcm80211/brcmfmac/fwvid.h | 25 ++++
.../broadcom/brcm80211/brcmfmac/wcc/core.c | 9 ++
12 files changed, 224 insertions(+), 167 deletions(-)
--
2.32.0
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
2024-01-01 8:44 [PATCH 0/4] wifi: brcmfmac: per-vendor changes and SAE offload support Arend van Spriel
@ 2024-01-01 8:44 ` Arend van Spriel
2024-01-02 1:37 ` kernel test robot
2024-01-02 3:31 ` kernel test robot
2024-01-01 8:44 ` [PATCH 2/4] wifi: brcmfmac: add per-vendor feature detection callback Arend van Spriel
` (2 subsequent siblings)
3 siblings, 2 replies; 9+ messages in thread
From: Arend van Spriel @ 2024-01-01 8:44 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel
[-- Attachment #1: Type: text/plain, Size: 12172 bytes --]
With multi-vendor support the vendor-specific module may need to use
the firmware interface functions so export them using the macro
BRCMF_EXPORT_SYMBOL_GPL() which exports them to driver namespace.
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +-
.../broadcom/brcm80211/brcmfmac/core.c | 2 +-
.../broadcom/brcm80211/brcmfmac/feature.c | 2 +-
.../broadcom/brcm80211/brcmfmac/fwil.c | 115 +---------------
.../broadcom/brcm80211/brcmfmac/fwil.h | 127 +++++++++++++++---
5 files changed, 120 insertions(+), 128 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 133c5ea6429c..7a7c2a0e863e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -7269,7 +7269,7 @@ static int brcmf_setup_wiphybands(struct brcmf_cfg80211_info *cfg)
u32 nmode = 0;
u32 vhtmode = 0;
u32 bw_cap[2] = { WLC_BW_20MHZ_BIT, WLC_BW_20MHZ_BIT };
- u32 rxchain;
+ u32 rxchain = 0;
u32 nchain;
int err;
s32 i;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
index f599d5f896e8..a92f78026cfd 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -691,7 +691,7 @@ static int brcmf_net_mon_open(struct net_device *ndev)
{
struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_pub *drvr = ifp->drvr;
- u32 monitor;
+ u32 monitor = 0;
int err;
brcmf_dbg(TRACE, "Enter\n");
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
index 6d10c9efbe93..7348f73680d6 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -183,7 +183,7 @@ static void brcmf_feat_wlc_version_overrides(struct brcmf_pub *drv)
static void brcmf_feat_iovar_int_get(struct brcmf_if *ifp,
enum brcmf_feat_id id, char *name)
{
- u32 data;
+ u32 data = 0;
int err;
/* we need to know firmware error */
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c
index 72fe8bce6eaf..2aec7d2abd52 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c
@@ -142,6 +142,7 @@ brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
return err;
}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_cmd_data_set);
s32
brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
@@ -160,36 +161,7 @@ brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
return err;
}
-
-
-s32
-brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data)
-{
- s32 err;
- __le32 data_le = cpu_to_le32(data);
-
- mutex_lock(&ifp->drvr->proto_block);
- brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data);
- err = brcmf_fil_cmd_data(ifp, cmd, &data_le, sizeof(data_le), true);
- mutex_unlock(&ifp->drvr->proto_block);
-
- return err;
-}
-
-s32
-brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data)
-{
- s32 err;
- __le32 data_le = cpu_to_le32(*data);
-
- mutex_lock(&ifp->drvr->proto_block);
- err = brcmf_fil_cmd_data(ifp, cmd, &data_le, sizeof(data_le), false);
- mutex_unlock(&ifp->drvr->proto_block);
- *data = le32_to_cpu(data_le);
- brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, *data);
-
- return err;
-}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_cmd_data_get);
static u32
brcmf_create_iovar(const char *name, const char *data, u32 datalen,
@@ -270,26 +242,7 @@ brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,
mutex_unlock(&drvr->proto_block);
return err;
}
-
-s32
-brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data)
-{
- __le32 data_le = cpu_to_le32(data);
-
- return brcmf_fil_iovar_data_set(ifp, name, &data_le, sizeof(data_le));
-}
-
-s32
-brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
-{
- __le32 data_le = cpu_to_le32(*data);
- s32 err;
-
- err = brcmf_fil_iovar_data_get(ifp, name, &data_le, sizeof(data_le));
- if (err == 0)
- *data = le32_to_cpu(data_le);
- return err;
-}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_iovar_data_get);
static u32
brcmf_create_bsscfg(s32 bsscfgidx, const char *name, char *data, u32 datalen,
@@ -364,6 +317,7 @@ brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name,
mutex_unlock(&drvr->proto_block);
return err;
}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_bsscfg_data_set);
s32
brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
@@ -394,28 +348,7 @@ brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
mutex_unlock(&drvr->proto_block);
return err;
}
-
-s32
-brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data)
-{
- __le32 data_le = cpu_to_le32(data);
-
- return brcmf_fil_bsscfg_data_set(ifp, name, &data_le,
- sizeof(data_le));
-}
-
-s32
-brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
-{
- __le32 data_le = cpu_to_le32(*data);
- s32 err;
-
- err = brcmf_fil_bsscfg_data_get(ifp, name, &data_le,
- sizeof(data_le));
- if (err == 0)
- *data = le32_to_cpu(data_le);
- return err;
-}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_bsscfg_data_get);
static u32 brcmf_create_xtlv(const char *name, u16 id, char *data, u32 len,
char *buf, u32 buflen)
@@ -465,6 +398,7 @@ s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id,
mutex_unlock(&drvr->proto_block);
return err;
}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_xtlv_data_set);
s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
void *data, u32 len)
@@ -494,39 +428,4 @@ s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
mutex_unlock(&drvr->proto_block);
return err;
}
-
-s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id, u32 data)
-{
- __le32 data_le = cpu_to_le32(data);
-
- return brcmf_fil_xtlv_data_set(ifp, name, id, &data_le,
- sizeof(data_le));
-}
-
-s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id, u32 *data)
-{
- __le32 data_le = cpu_to_le32(*data);
- s32 err;
-
- err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
- if (err == 0)
- *data = le32_to_cpu(data_le);
- return err;
-}
-
-s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id, u8 *data)
-{
- return brcmf_fil_xtlv_data_get(ifp, name, id, data, sizeof(*data));
-}
-
-s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id, u16 *data)
-{
- __le16 data_le = cpu_to_le16(*data);
- s32 err;
-
- err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
- if (err == 0)
- *data = le16_to_cpu(data_le);
- return err;
-}
-
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_xtlv_data_get);
\ No newline at end of file
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
index bc693157c4b1..a315a7fac6a0 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
@@ -81,29 +81,122 @@
s32 brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);
s32 brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);
-s32 brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data);
-s32 brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data);
+static inline
+s32 brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data)
+{
+ s32 err;
+ __le32 data_le = cpu_to_le32(data);
-s32 brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name, const void *data,
- u32 len);
+ brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data);
+ err = brcmf_fil_cmd_data_set(ifp, cmd, &data_le, sizeof(data_le));
+
+ return err;
+}
+static inline
+s32 brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data)
+{
+ s32 err;
+ __le32 data_le = cpu_to_le32(*data);
+
+ err = brcmf_fil_cmd_data_get(ifp, cmd, &data_le, sizeof(data_le));
+ if (err == 0)
+ *data = le32_to_cpu(data_le);
+ brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, *data);
+
+ return err;
+}
+
+s32 brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name,
+ const void *data, u32 len);
s32 brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,
u32 len);
-s32 brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data);
-s32 brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data);
-
-s32 brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name, void *data,
- u32 len);
-s32 brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name, void *data,
- u32 len);
-s32 brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data);
-s32 brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data);
+static inline
+s32 brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data)
+{
+ __le32 data_le = cpu_to_le32(data);
+
+ return brcmf_fil_iovar_data_set(ifp, name, &data_le, sizeof(data_le));
+}
+static inline
+s32 brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
+{
+ __le32 data_le = cpu_to_le32(*data);
+ s32 err;
+
+ err = brcmf_fil_iovar_data_get(ifp, name, &data_le, sizeof(data_le));
+ if (err == 0)
+ *data = le32_to_cpu(data_le);
+ return err;
+}
+
+
+s32 brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name,
+ void *data, u32 len);
+s32 brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
+ void *data, u32 len);
+static inline
+s32 brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data)
+{
+ __le32 data_le = cpu_to_le32(data);
+
+ return brcmf_fil_bsscfg_data_set(ifp, name, &data_le,
+ sizeof(data_le));
+}
+static inline
+s32 brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
+{
+ __le32 data_le = cpu_to_le32(*data);
+ s32 err;
+
+ err = brcmf_fil_bsscfg_data_get(ifp, name, &data_le,
+ sizeof(data_le));
+ if (err == 0)
+ *data = le32_to_cpu(data_le);
+ return err;
+}
+
s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id,
void *data, u32 len);
s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
void *data, u32 len);
-s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id, u32 data);
-s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id, u32 *data);
-s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id, u8 *data);
-s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id, u16 *data);
+static inline
+s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id,
+ u32 data)
+{
+ __le32 data_le = cpu_to_le32(data);
+
+ return brcmf_fil_xtlv_data_set(ifp, name, id, &data_le,
+ sizeof(data_le));
+}
+static inline
+s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id,
+ u32 *data)
+{
+ __le32 data_le = cpu_to_le32(*data);
+ s32 err;
+
+ err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
+ if (err == 0)
+ *data = le32_to_cpu(data_le);
+ return err;
+}
+static inline
+s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id,
+ u8 *data)
+{
+ return brcmf_fil_xtlv_data_get(ifp, name, id, data, sizeof(*data));
+}
+static inline
+s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id,
+ u16 *data)
+{
+ __le16 data_le = cpu_to_le16(*data);
+ s32 err;
+
+ err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
+ if (err == 0)
+ *data = le16_to_cpu(data_le);
+ return err;
+}
#endif /* _fwil_h_ */
--
2.32.0
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/4] wifi: brcmfmac: add per-vendor feature detection callback
2024-01-01 8:44 [PATCH 0/4] wifi: brcmfmac: per-vendor changes and SAE offload support Arend van Spriel
2024-01-01 8:44 ` [PATCH 1/4] wifi: brcmfmac: export firmware interface functions Arend van Spriel
@ 2024-01-01 8:44 ` Arend van Spriel
2024-01-01 8:44 ` [PATCH 3/4] wifi: brcmfmac: move feature overrides before feature_disable Arend van Spriel
2024-01-01 8:44 ` [PATCH 4/4] wifi: brcmfmac: cfg80211: Use WSEC to set SAE password Arend van Spriel
3 siblings, 0 replies; 9+ messages in thread
From: Arend van Spriel @ 2024-01-01 8:44 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel
[-- Attachment #1: Type: text/plain, Size: 3250 bytes --]
Adding a .feat_attach() callback allowing per-vendor overrides
of the driver feature flags. In this patch the callback is only
provided by BCA vendor to disable SAE feature as it has not been
confirmed yet. BCA chips generally do not have the in-driver
supplicant (idsup) feature so they rely on NL80211_CMD_EXTERNAL_AUTH
to trigger user-space authentication.
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
.../wireless/broadcom/brcm80211/brcmfmac/bca/core.c | 8 ++++++++
.../wireless/broadcom/brcm80211/brcmfmac/feature.c | 3 +++
.../net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h | 12 ++++++++++++
3 files changed, 23 insertions(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca/core.c
index ac3a36fa3640..a5d9ac5e6763 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca/core.c
@@ -7,6 +7,7 @@
#include <core.h>
#include <bus.h>
#include <fwvid.h>
+#include <feature.h>
#include "vops.h"
@@ -21,7 +22,14 @@ static void brcmf_bca_detach(struct brcmf_pub *drvr)
pr_err("%s: executing\n", __func__);
}
+static void brcmf_bca_feat_attach(struct brcmf_if *ifp)
+{
+ /* SAE support not confirmed so disabling for now */
+ ifp->drvr->feat_flags &= ~BIT(BRCMF_FEAT_SAE);
+}
+
const struct brcmf_fwvid_ops brcmf_bca_ops = {
.attach = brcmf_bca_attach,
.detach = brcmf_bca_detach,
+ .feat_attach = brcmf_bca_feat_attach,
};
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
index 7348f73680d6..7fef93ede0fb 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -13,6 +13,7 @@
#include "debug.h"
#include "fwil.h"
#include "fwil_types.h"
+#include "fwvid.h"
#include "feature.h"
#include "common.h"
@@ -339,6 +340,8 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_FWSUP, "sup_wpa");
brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_SCAN_V2, "scan_ver");
+ brcmf_fwvid_feat_attach(ifp);
+
if (drvr->settings->feature_disable) {
brcmf_dbg(INFO, "Features: 0x%02x, disable: 0x%02x\n",
ifp->drvr->feat_flags,
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
index 43df58bb70ad..17fbdbb76f51 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
@@ -8,10 +8,12 @@
#include "firmware.h"
struct brcmf_pub;
+struct brcmf_if;
struct brcmf_fwvid_ops {
int (*attach)(struct brcmf_pub *drvr);
void (*detach)(struct brcmf_pub *drvr);
+ void (*feat_attach)(struct brcmf_if *ifp);
};
/* exported functions */
@@ -44,4 +46,14 @@ static inline void brcmf_fwvid_detach(struct brcmf_pub *drvr)
brcmf_fwvid_detach_ops(drvr);
}
+static inline void brcmf_fwvid_feat_attach(struct brcmf_if *ifp)
+{
+ const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;
+
+ if (!vops->feat_attach)
+ return;
+
+ vops->feat_attach(ifp);
+}
+
#endif /* FWVID_H_ */
--
2.32.0
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/4] wifi: brcmfmac: move feature overrides before feature_disable
2024-01-01 8:44 [PATCH 0/4] wifi: brcmfmac: per-vendor changes and SAE offload support Arend van Spriel
2024-01-01 8:44 ` [PATCH 1/4] wifi: brcmfmac: export firmware interface functions Arend van Spriel
2024-01-01 8:44 ` [PATCH 2/4] wifi: brcmfmac: add per-vendor feature detection callback Arend van Spriel
@ 2024-01-01 8:44 ` Arend van Spriel
2024-01-01 8:44 ` [PATCH 4/4] wifi: brcmfmac: cfg80211: Use WSEC to set SAE password Arend van Spriel
3 siblings, 0 replies; 9+ messages in thread
From: Arend van Spriel @ 2024-01-01 8:44 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel
[-- Attachment #1: Type: text/plain, Size: 1401 bytes --]
The feature_disable option in brcmf_feat_attach() is a debugging or
workaround option to disable features that cause driver issues. Hence
they should be done as last step after all feature detection mechanisms
have been completed.
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
index 7fef93ede0fb..f23310a77a5d 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -340,6 +340,9 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_FWSUP, "sup_wpa");
brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_SCAN_V2, "scan_ver");
+ brcmf_feat_wlc_version_overrides(drvr);
+ brcmf_feat_firmware_overrides(drvr);
+
brcmf_fwvid_feat_attach(ifp);
if (drvr->settings->feature_disable) {
@@ -349,9 +352,6 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
ifp->drvr->feat_flags &= ~drvr->settings->feature_disable;
}
- brcmf_feat_wlc_version_overrides(drvr);
- brcmf_feat_firmware_overrides(drvr);
-
/* set chip related quirks */
switch (drvr->bus_if->chip) {
case BRCM_CC_43236_CHIP_ID:
--
2.32.0
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/4] wifi: brcmfmac: cfg80211: Use WSEC to set SAE password
2024-01-01 8:44 [PATCH 0/4] wifi: brcmfmac: per-vendor changes and SAE offload support Arend van Spriel
` (2 preceding siblings ...)
2024-01-01 8:44 ` [PATCH 3/4] wifi: brcmfmac: move feature overrides before feature_disable Arend van Spriel
@ 2024-01-01 8:44 ` Arend van Spriel
3 siblings, 0 replies; 9+ messages in thread
From: Arend van Spriel @ 2024-01-01 8:44 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, Hector Martin, Neal Gompa, Arend van Spriel
[-- Attachment #1: Type: text/plain, Size: 10267 bytes --]
From: Hector Martin <marcan@marcan.st>
Using the WSEC command instead of sae_password seems to be the supported
mechanism on newer firmware, and also how the brcmdhd driver does it.
According to user reports [1], the sae_password codepath doesn't actually
work on machines with Cypress chips anyway, so no harm in removing it.
This makes WPA3 work with iwd, or with wpa_supplicant pending a support
patchset [2].
[1] https://rachelbythebay.com/w/2023/11/06/wpa3/
[2] http://lists.infradead.org/pipermail/hostap/2023-July/041653.html
Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Neal Gompa <neal@gompa.dev>
[arend.vanspriel@broadcom.com: use multi-vendor framework]
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 56 ++++++++-----------
.../broadcom/brcm80211/brcmfmac/cfg80211.h | 2 +
.../broadcom/brcm80211/brcmfmac/cyw/core.c | 28 ++++++++++
.../broadcom/brcm80211/brcmfmac/fwil.c | 1 +
.../broadcom/brcm80211/brcmfmac/fwil_types.h | 2 +-
.../broadcom/brcm80211/brcmfmac/fwvid.h | 13 +++++
.../broadcom/brcm80211/brcmfmac/wcc/core.c | 9 +++
7 files changed, 76 insertions(+), 35 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 7a7c2a0e863e..ade1f9da5ae1 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -32,6 +32,7 @@
#include "vendor.h"
#include "bus.h"
#include "common.h"
+#include "fwvid.h"
#define BRCMF_SCAN_IE_LEN_MAX 2048
@@ -1687,52 +1688,39 @@ static u16 brcmf_map_fw_linkdown_reason(const struct brcmf_event_msg *e)
return reason;
}
-static int brcmf_set_pmk(struct brcmf_if *ifp, const u8 *pmk_data, u16 pmk_len)
+int brcmf_set_wsec(struct brcmf_if *ifp, const u8 *key, u16 key_len, u16 flags)
{
struct brcmf_pub *drvr = ifp->drvr;
struct brcmf_wsec_pmk_le pmk;
int err;
+ if (key_len > sizeof(pmk.key)) {
+ bphy_err(drvr, "key must be less than %zu bytes\n",
+ sizeof(pmk.key));
+ return -EINVAL;
+ }
+
memset(&pmk, 0, sizeof(pmk));
- /* pass pmk directly */
- pmk.key_len = cpu_to_le16(pmk_len);
- pmk.flags = cpu_to_le16(0);
- memcpy(pmk.key, pmk_data, pmk_len);
+ /* pass key material directly */
+ pmk.key_len = cpu_to_le16(key_len);
+ pmk.flags = cpu_to_le16(flags);
+ memcpy(pmk.key, key, key_len);
- /* store psk in firmware */
+ /* store key material in firmware */
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_WSEC_PMK,
&pmk, sizeof(pmk));
if (err < 0)
bphy_err(drvr, "failed to change PSK in firmware (len=%u)\n",
- pmk_len);
+ key_len);
return err;
}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_set_wsec);
-static int brcmf_set_sae_password(struct brcmf_if *ifp, const u8 *pwd_data,
- u16 pwd_len)
+static int brcmf_set_pmk(struct brcmf_if *ifp, const u8 *pmk_data, u16 pmk_len)
{
- struct brcmf_pub *drvr = ifp->drvr;
- struct brcmf_wsec_sae_pwd_le sae_pwd;
- int err;
-
- if (pwd_len > BRCMF_WSEC_MAX_SAE_PASSWORD_LEN) {
- bphy_err(drvr, "sae_password must be less than %d\n",
- BRCMF_WSEC_MAX_SAE_PASSWORD_LEN);
- return -EINVAL;
- }
-
- sae_pwd.key_len = cpu_to_le16(pwd_len);
- memcpy(sae_pwd.key, pwd_data, pwd_len);
-
- err = brcmf_fil_iovar_data_set(ifp, "sae_password", &sae_pwd,
- sizeof(sae_pwd));
- if (err < 0)
- bphy_err(drvr, "failed to set SAE password in firmware (len=%u)\n",
- pwd_len);
-
- return err;
+ return brcmf_set_wsec(ifp, pmk_data, pmk_len, 0);
}
static void brcmf_link_down(struct brcmf_cfg80211_vif *vif, u16 reason,
@@ -2503,8 +2491,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
bphy_err(drvr, "failed to clean up user-space RSNE\n");
goto done;
}
- err = brcmf_set_sae_password(ifp, sme->crypto.sae_pwd,
- sme->crypto.sae_pwd_len);
+ 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);
@@ -5252,8 +5239,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
if (crypto->sae_pwd) {
brcmf_dbg(INFO, "using SAE offload\n");
profile->use_fwauth |= BIT(BRCMF_PROFILE_FWAUTH_SAE);
- err = brcmf_set_sae_password(ifp, crypto->sae_pwd,
- crypto->sae_pwd_len);
+ err = brcmf_fwvid_set_sae_password(ifp, crypto);
if (err < 0)
goto exit;
}
@@ -5360,10 +5346,12 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev,
msleep(400);
if (profile->use_fwauth != BIT(BRCMF_PROFILE_FWAUTH_NONE)) {
+ struct cfg80211_crypto_settings crypto = {};
+
if (profile->use_fwauth & BIT(BRCMF_PROFILE_FWAUTH_PSK))
brcmf_set_pmk(ifp, NULL, 0);
if (profile->use_fwauth & BIT(BRCMF_PROFILE_FWAUTH_SAE))
- brcmf_set_sae_password(ifp, NULL, 0);
+ brcmf_fwvid_set_sae_password(ifp, &crypto);
profile->use_fwauth = BIT(BRCMF_PROFILE_FWAUTH_NONE);
}
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
index 0e1fa3f0dea2..dc3a6a537507 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
@@ -468,4 +468,6 @@ void brcmf_set_mpc(struct brcmf_if *ndev, int mpc);
void brcmf_abort_scanning(struct brcmf_cfg80211_info *cfg);
void brcmf_cfg80211_free_netdev(struct net_device *ndev);
+int brcmf_set_wsec(struct brcmf_if *ifp, const u8 *key, u16 key_len, u16 flags);
+
#endif /* BRCMFMAC_CFG80211_H */
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
index b75652ba9359..24670497f1a4 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
@@ -7,6 +7,7 @@
#include <core.h>
#include <bus.h>
#include <fwvid.h>
+#include <fwil.h>
#include "vops.h"
@@ -21,7 +22,34 @@ static void brcmf_cyw_detach(struct brcmf_pub *drvr)
pr_err("%s: executing\n", __func__);
}
+static int brcmf_cyw_set_sae_pwd(struct brcmf_if *ifp,
+ struct cfg80211_crypto_settings *crypto)
+{
+ struct brcmf_pub *drvr = ifp->drvr;
+ struct brcmf_wsec_sae_pwd_le sae_pwd;
+ u16 pwd_len = crypto->sae_pwd_len;
+ int err;
+
+ if (pwd_len > BRCMF_WSEC_MAX_SAE_PASSWORD_LEN) {
+ bphy_err(drvr, "sae_password must be less than %d\n",
+ BRCMF_WSEC_MAX_SAE_PASSWORD_LEN);
+ return -EINVAL;
+ }
+
+ sae_pwd.key_len = cpu_to_le16(pwd_len);
+ memcpy(sae_pwd.key, crypto->sae_pwd, pwd_len);
+
+ err = brcmf_fil_iovar_data_set(ifp, "sae_password", &sae_pwd,
+ sizeof(sae_pwd));
+ if (err < 0)
+ bphy_err(drvr, "failed to set SAE password in firmware (len=%u)\n",
+ pwd_len);
+
+ return err;
+}
+
const struct brcmf_fwvid_ops brcmf_cyw_ops = {
.attach = brcmf_cyw_attach,
.detach = brcmf_cyw_detach,
+ .set_sae_password = brcmf_cyw_set_sae_pwd,
};
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c
index 2aec7d2abd52..bc1c6b5a6e31 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.c
@@ -211,6 +211,7 @@ brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name, const void *dat
mutex_unlock(&drvr->proto_block);
return err;
}
+BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_iovar_data_set);
s32
brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
index 9d248ba1c0b2..e74a23e11830 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
@@ -584,7 +584,7 @@ struct brcmf_wsec_key_le {
struct brcmf_wsec_pmk_le {
__le16 key_len;
__le16 flags;
- u8 key[2 * BRCMF_WSEC_MAX_PSK_LEN + 1];
+ u8 key[BRCMF_WSEC_MAX_SAE_PASSWORD_LEN];
};
/**
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
index 17fbdbb76f51..d9fc76b46db9 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
@@ -6,6 +6,7 @@
#define FWVID_H_
#include "firmware.h"
+#include "cfg80211.h"
struct brcmf_pub;
struct brcmf_if;
@@ -14,6 +15,7 @@ struct brcmf_fwvid_ops {
int (*attach)(struct brcmf_pub *drvr);
void (*detach)(struct brcmf_pub *drvr);
void (*feat_attach)(struct brcmf_if *ifp);
+ int (*set_sae_password)(struct brcmf_if *ifp, struct cfg80211_crypto_settings *crypto);
};
/* exported functions */
@@ -56,4 +58,15 @@ static inline void brcmf_fwvid_feat_attach(struct brcmf_if *ifp)
vops->feat_attach(ifp);
}
+static inline int brcmf_fwvid_set_sae_password(struct brcmf_if *ifp,
+ struct cfg80211_crypto_settings *crypto)
+{
+ const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;
+
+ if (!vops || !vops->set_sae_password)
+ return -EOPNOTSUPP;
+
+ return vops->set_sae_password(ifp, crypto);
+}
+
#endif /* FWVID_H_ */
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc/core.c
index 5573a47766ad..2d8f80bd7382 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc/core.c
@@ -7,6 +7,7 @@
#include <core.h>
#include <bus.h>
#include <fwvid.h>
+#include <fwil.h>
#include "vops.h"
@@ -21,7 +22,15 @@ static void brcmf_wcc_detach(struct brcmf_pub *drvr)
pr_debug("%s: executing\n", __func__);
}
+static int brcmf_wcc_set_sae_pwd(struct brcmf_if *ifp,
+ struct cfg80211_crypto_settings *crypto)
+{
+ return brcmf_set_wsec(ifp, crypto->sae_pwd, crypto->sae_pwd_len,
+ BRCMF_WSEC_PASSPHRASE);
+}
+
const struct brcmf_fwvid_ops brcmf_wcc_ops = {
.attach = brcmf_wcc_attach,
.detach = brcmf_wcc_detach,
+ .set_sae_password = brcmf_wcc_set_sae_pwd,
};
--
2.32.0
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
2024-01-01 8:44 ` [PATCH 1/4] wifi: brcmfmac: export firmware interface functions Arend van Spriel
@ 2024-01-02 1:37 ` kernel test robot
2024-01-02 3:31 ` kernel test robot
1 sibling, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-01-02 1:37 UTC (permalink / raw)
To: Arend van Spriel, Kalle Valo
Cc: oe-kbuild-all, linux-wireless, Arend van Spriel
Hi Arend,
kernel test robot noticed the following build warnings:
[auto build test WARNING on wireless-next/main]
[also build test WARNING on wireless/main linus/master v6.7-rc8 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Arend-van-Spriel/wifi-brcmfmac-export-firmware-interface-functions/20240101-164717
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/20240101084430.161821-2-arend.vanspriel%40broadcom.com
patch subject: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20240102/202401020903.F2PfPAdw-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240102/202401020903.F2PfPAdw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401020903.F2PfPAdw-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from include/uapi/linux/swab.h:8,
from include/linux/swab.h:5,
from include/uapi/linux/byteorder/big_endian.h:14,
from include/linux/byteorder/big_endian.h:5,
from arch/m68k/include/uapi/asm/byteorder.h:5,
from include/asm-generic/bitops/le.h:6,
from arch/m68k/include/asm/bitops.h:566,
from include/linux/bitops.h:68,
from include/linux/kernel.h:23,
from drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:8:
In function '__arch_swab32',
inlined from '__fswab32' at include/uapi/linux/swab.h:60:9,
inlined from 'brcmf_fil_cmd_int_get' at drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h:99:19,
inlined from 'brcmf_cfg80211_get_station_ibss' at drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:3088:8:
>> arch/m68k/include/uapi/asm/swab.h:22:9: warning: 'rate' is used uninitialized [-Wuninitialized]
22 | __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val));
| ^~~~~~~
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c: In function 'brcmf_cfg80211_get_station_ibss':
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:3084:13: note: 'rate' was declared here
3084 | u32 rate;
| ^~~~
vim +/rate +22 arch/m68k/include/uapi/asm/swab.h
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 19
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 20 static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 21 {
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 @22 __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val));
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 23 return val;
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 24 }
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 25 #define __arch_swab32 __arch_swab32
6aeea60aee9454 arch/m68k/include/asm/swab.h Harvey Harrison 2009-01-20 26 #endif
9863a0babc2f0d arch/m68k/include/asm/swab.h Greg Ungerer 2009-03-16 27
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
2024-01-01 8:44 ` [PATCH 1/4] wifi: brcmfmac: export firmware interface functions Arend van Spriel
2024-01-02 1:37 ` kernel test robot
@ 2024-01-02 3:31 ` kernel test robot
2024-01-02 17:37 ` Arend Van Spriel
1 sibling, 1 reply; 9+ messages in thread
From: kernel test robot @ 2024-01-02 3:31 UTC (permalink / raw)
To: Arend van Spriel, Kalle Valo
Cc: oe-kbuild-all, linux-wireless, Arend van Spriel
Hi Arend,
kernel test robot noticed the following build warnings:
[auto build test WARNING on wireless-next/main]
[also build test WARNING on wireless/main linus/master v6.7-rc8 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Arend-van-Spriel/wifi-brcmfmac-export-firmware-interface-functions/20240101-164717
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/20240101084430.161821-2-arend.vanspriel%40broadcom.com
patch subject: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
config: sparc-allmodconfig (https://download.01.org/0day-ci/archive/20240102/202401021103.U0Y8xoJK-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240102/202401021103.U0Y8xoJK-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401021103.U0Y8xoJK-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from include/linux/swab.h:5,
from include/uapi/linux/byteorder/big_endian.h:14,
from include/linux/byteorder/big_endian.h:5,
from arch/sparc/include/uapi/asm/byteorder.h:5,
from arch/sparc/include/asm/bitops_64.h:16,
from arch/sparc/include/asm/bitops.h:5,
from include/linux/bitops.h:68,
from include/linux/kernel.h:23,
from drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:8:
In function '__fswab32',
inlined from 'brcmf_fil_cmd_int_get' at drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h:99:19,
inlined from 'brcmf_cfg80211_get_station_ibss' at drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:3088:8:
>> include/uapi/linux/swab.h:19:45: warning: 'rate' is used uninitialized [-Wuninitialized]
19 | (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/uapi/linux/swab.h:62:16: note: in expansion of macro '___constant_swab32'
62 | return ___constant_swab32(val);
| ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c: In function 'brcmf_cfg80211_get_station_ibss':
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:3084:13: note: 'rate' was declared here
3084 | u32 rate;
| ^~~~
vim +/rate +19 include/uapi/linux/swab.h
607ca46e97a1b6 David Howells 2012-10-13 9
607ca46e97a1b6 David Howells 2012-10-13 10 /*
607ca46e97a1b6 David Howells 2012-10-13 11 * casts are necessary for constants, because we never know how for sure
607ca46e97a1b6 David Howells 2012-10-13 12 * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way.
607ca46e97a1b6 David Howells 2012-10-13 13 */
607ca46e97a1b6 David Howells 2012-10-13 14 #define ___constant_swab16(x) ((__u16)( \
607ca46e97a1b6 David Howells 2012-10-13 15 (((__u16)(x) & (__u16)0x00ffU) << 8) | \
607ca46e97a1b6 David Howells 2012-10-13 16 (((__u16)(x) & (__u16)0xff00U) >> 8)))
607ca46e97a1b6 David Howells 2012-10-13 17
607ca46e97a1b6 David Howells 2012-10-13 18 #define ___constant_swab32(x) ((__u32)( \
607ca46e97a1b6 David Howells 2012-10-13 @19 (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
607ca46e97a1b6 David Howells 2012-10-13 20 (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \
607ca46e97a1b6 David Howells 2012-10-13 21 (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \
607ca46e97a1b6 David Howells 2012-10-13 22 (((__u32)(x) & (__u32)0xff000000UL) >> 24)))
607ca46e97a1b6 David Howells 2012-10-13 23
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
2024-01-02 3:31 ` kernel test robot
@ 2024-01-02 17:37 ` Arend Van Spriel
0 siblings, 0 replies; 9+ messages in thread
From: Arend Van Spriel @ 2024-01-02 17:37 UTC (permalink / raw)
To: kernel test robot, Kalle Valo; +Cc: oe-kbuild-all, linux-wireless
[-- Attachment #1: Type: text/plain, Size: 1036 bytes --]
On January 2, 2024 4:31:53 AM kernel test robot <lkp@intel.com> wrote:
> Hi Arend,
>
> kernel test robot noticed the following build warnings:
[...]
> 'brcmf_cfg80211_get_station_ibss' at
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:3088:8:
>>> include/uapi/linux/swab.h:19:45: warning: 'rate' is used uninitialized
>>> [-Wuninitialized]
> 19 | (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
> include/uapi/linux/swab.h:62:16: note: in expansion of macro
> '___constant_swab32'
> 62 | return ___constant_swab32(val);
> | ^~~~~~~~~~~~~~~~~~
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c: In function
> 'brcmf_cfg80211_get_station_ibss':
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:3084:13: note:
> 'rate' was declared here
> 3084 | u32 rate;
> | ^~~~
Will fix it and respin this patch series.
Regards,
Arend
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
@ 2024-01-03 1:35 kernel test robot
0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-01-03 1:35 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20240101084430.161821-2-arend.vanspriel@broadcom.com>
References: <20240101084430.161821-2-arend.vanspriel@broadcom.com>
TO: Arend van Spriel <arend.vanspriel@broadcom.com>
TO: Kalle Valo <kvalo@kernel.org>
CC: linux-wireless@vger.kernel.org
CC: Arend van Spriel <arend.vanspriel@broadcom.com>
Hi Arend,
kernel test robot noticed the following build warnings:
[auto build test WARNING on wireless-next/main]
[also build test WARNING on wireless/main linus/master v6.7-rc8 next-20240102]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Arend-van-Spriel/wifi-brcmfmac-export-firmware-interface-functions/20240101-164717
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/20240101084430.161821-2-arend.vanspriel%40broadcom.com
patch subject: [PATCH 1/4] wifi: brcmfmac: export firmware interface functions
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: i386-randconfig-141-20240102 (https://download.01.org/0day-ci/archive/20240103/202401030944.GxNYBoIe-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202401030944.GxNYBoIe-lkp@intel.com/
New smatch warnings:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:5587 brcmf_cfg80211_mgmt_tx() error: uninitialized symbol 'freq'.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:610 brcmf_netdev_open() error: uninitialized symbol 'toe_ol'.
Old smatch warnings:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:1115 brcmf_inet6addr_changed() error: buffer overflow 'table' 8 <= 8
vim +/freq +5587 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5501
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5502
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5503 static int
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5504 brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
b176e629402f41 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Andrei Otcheretianski 2013-11-18 5505 struct cfg80211_mgmt_tx_params *params, u64 *cookie)
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5506 {
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5507 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
b176e629402f41 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Andrei Otcheretianski 2013-11-18 5508 struct ieee80211_channel *chan = params->chan;
16e64676839633 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Rafał Miłecki 2019-02-15 5509 struct brcmf_pub *drvr = cfg->pub;
b176e629402f41 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Andrei Otcheretianski 2013-11-18 5510 const u8 *buf = params->buf;
b176e629402f41 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Andrei Otcheretianski 2013-11-18 5511 size_t len = params->len;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5512 const struct ieee80211_mgmt *mgmt;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5513 struct brcmf_cfg80211_vif *vif;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5514 s32 err = 0;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5515 s32 ie_offset;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5516 s32 ie_len;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5517 struct brcmf_fil_action_frame_le *action_frame;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5518 struct brcmf_fil_af_params_le *af_params;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5519 bool ack;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5520 s32 chan_nr;
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5521 u32 freq;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5522
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5523 brcmf_dbg(TRACE, "Enter\n");
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5524
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5525 *cookie = 0;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5526
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5527 mgmt = (const struct ieee80211_mgmt *)buf;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5528
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5529 if (!ieee80211_is_mgmt(mgmt->frame_control)) {
16e64676839633 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Rafał Miłecki 2019-02-15 5530 bphy_err(drvr, "Driver only allows MGMT packet type\n");
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5531 return -EPERM;
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5532 }
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5533
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5534 vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5535
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5536 if (ieee80211_is_probe_resp(mgmt->frame_control)) {
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5537 /* Right now the only reason to get a probe response */
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5538 /* is for p2p listen response or for p2p GO from */
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5539 /* wpa_supplicant. Unfortunately the probe is send */
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5540 /* on primary ndev, while dongle wants it on the p2p */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5541 /* vif. Since this is only reason for a probe */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5542 /* response to be sent, the vif is taken from cfg. */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5543 /* If ever desired to send proberesp for non p2p */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5544 /* response then data should be checked for */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5545 /* "DIRECT-". Note in future supplicant will take */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5546 /* dedicated p2p wdev to do this and then this 'hack'*/
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5547 /* is not needed anymore. */
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5548 ie_offset = DOT11_MGMT_HDR_LEN +
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5549 DOT11_BCN_PRB_FIXED_LEN;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5550 ie_len = len - ie_offset;
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5551 if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif)
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5552 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5553 err = brcmf_vif_set_mgmt_ie(vif,
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5554 BRCMF_VNDR_IE_PRBRSP_FLAG,
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5555 &buf[ie_offset],
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5556 ie_len);
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5557 cfg80211_mgmt_tx_status(wdev, *cookie, buf, len, true,
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5558 GFP_KERNEL);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5559 } else if (ieee80211_is_action(mgmt->frame_control)) {
8f44c9a4138672 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-07-07 5560 if (len > BRCMF_FIL_ACTION_FRAME_SIZE + DOT11_MGMT_HDR_LEN) {
16e64676839633 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Rafał Miłecki 2019-02-15 5561 bphy_err(drvr, "invalid action frame length\n");
8f44c9a4138672 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-07-07 5562 err = -EINVAL;
8f44c9a4138672 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-07-07 5563 goto exit;
8f44c9a4138672 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-07-07 5564 }
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5565 af_params = kzalloc(sizeof(*af_params), GFP_KERNEL);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5566 if (af_params == NULL) {
16e64676839633 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Rafał Miłecki 2019-02-15 5567 bphy_err(drvr, "unable to allocate frame\n");
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5568 err = -ENOMEM;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5569 goto exit;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5570 }
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5571 action_frame = &af_params->action_frame;
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5572 /* Add the packet Id */
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5573 action_frame->packet_id = cpu_to_le32(*cookie);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5574 /* Add BSSID */
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5575 memcpy(&action_frame->da[0], &mgmt->da[0], ETH_ALEN);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5576 memcpy(&af_params->bssid[0], &mgmt->bssid[0], ETH_ALEN);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5577 /* Add the length exepted for 802.11 header */
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5578 action_frame->len = cpu_to_le16(len - DOT11_MGMT_HDR_LEN);
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5579 /* Add the channel. Use the one specified as parameter if any or
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5580 * the current one (got from the firmware) otherwise
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5581 */
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5582 if (chan)
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5583 freq = chan->center_freq;
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5584 else
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5585 brcmf_fil_cmd_int_get(vif->ifp, BRCMF_C_GET_CHANNEL,
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 5586 &freq);
c2ff8cad64233b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-11 @5587 chan_nr = ieee80211_frequency_to_channel(freq);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5588 af_params->channel = cpu_to_le32(chan_nr);
ad96bc27032c27 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Joseph Chuang 2020-06-10 5589 af_params->dwell_time = cpu_to_le32(params->wait);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5590 memcpy(action_frame->data, &buf[DOT11_MGMT_HDR_LEN],
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5591 le16_to_cpu(action_frame->len));
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5592
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5593 brcmf_dbg(TRACE, "Action frame, cookie=%lld, len=%d, freq=%d\n",
86a9c4a28b2c1a drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Antonio Quartulli 2013-06-19 5594 *cookie, le16_to_cpu(action_frame->len), freq);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5595
7fa2e3529c51f1 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2013-04-05 5596 ack = brcmf_p2p_send_action_frame(cfg, cfg_to_ndev(cfg),
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5597 af_params);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5598
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5599 cfg80211_mgmt_tx_status(wdev, *cookie, buf, len, ack,
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5600 GFP_KERNEL);
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5601 kfree(af_params);
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5602 } else {
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5603 brcmf_dbg(TRACE, "Unhandled, fc=%04x!!\n", mgmt->frame_control);
5b5e0928f742cf drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Alexey Dobriyan 2017-02-27 5604 brcmf_dbg_hex_dump(true, buf, len, "payload, len=%zu\n", len);
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5605 }
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5606
18e2f61db3b708 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5607 exit:
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5608 return err;
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5609 }
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5610
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-01-03 1:36 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-01 8:44 [PATCH 0/4] wifi: brcmfmac: per-vendor changes and SAE offload support Arend van Spriel
2024-01-01 8:44 ` [PATCH 1/4] wifi: brcmfmac: export firmware interface functions Arend van Spriel
2024-01-02 1:37 ` kernel test robot
2024-01-02 3:31 ` kernel test robot
2024-01-02 17:37 ` Arend Van Spriel
2024-01-01 8:44 ` [PATCH 2/4] wifi: brcmfmac: add per-vendor feature detection callback Arend van Spriel
2024-01-01 8:44 ` [PATCH 3/4] wifi: brcmfmac: move feature overrides before feature_disable Arend van Spriel
2024-01-01 8:44 ` [PATCH 4/4] wifi: brcmfmac: cfg80211: Use WSEC to set SAE password Arend van Spriel
-- strict thread matches above, loose matches on Subject: below --
2024-01-03 1:35 [PATCH 1/4] wifi: brcmfmac: export firmware interface functions kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.