Skip to content

Instantly share code, notes, and snippets.

@marcan
Created December 20, 2021 10:24
Show Gist options
  • Save marcan/2fc31da6c173d35a5c20f135cf93cf7a to your computer and use it in GitHub Desktop.
Save marcan/2fc31da6c173d35a5c20f135cf93cf7a to your computer and use it in GitHub Desktop.
commit e89c8eecc756600ec3dbf1fed73620592eae55af
Author: Hector Martin <[email protected]>
Date: Mon Dec 20 19:15:58 2021 +0900
brcmfmac: cfg80211: Pass PMK in binary
Apparently the hex passphrase mechanism does not work on newer firmware.
(Does this need a feature flag?)
Signed-off-by: Hector Martin <[email protected]>
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index bca788cc37fd..c80b78b7b93c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -1420,11 +1420,12 @@ static int brcmf_set_pmk(struct brcmf_if *ifp, const u8 *pmk_data, u16 pmk_len)
struct brcmf_wsec_pmk_le pmk;
int i, err;
- /* convert to firmware key format */
- pmk.key_len = cpu_to_le16(pmk_len << 1);
- pmk.flags = cpu_to_le16(BRCMF_WSEC_PASSPHRASE);
- for (i = 0; i < pmk_len; i++)
- snprintf(&pmk.key[2 * i], 3, "%02x", pmk_data[i]);
+ 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);
/* store psk in firmware */
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_WSEC_PMK,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment