Search Linux Wireless

Re: AP6275 / bcm43752 pcie on mainline brcmf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/18/2022 6:41 AM, Andy Green wrote:


On 11/17/22 21:52, Arend Van Spriel wrote:

I see. So could you load bcmdhd and provide log. Preferably with higher debug level. It also has a module parameter for it. I think it is called dhd_msg_level and please set it to 0x817.

It's here:

https://warmcat.com/ap6275p-dhd-log1.txt

Hi Andy,

Thanks for the log. Together with the dhd driver sources I could make some sense of it. Perhaps you can try the following hack and see if we make it over the first hurdle.

Regards,
Arend
---
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 97f0f13dfe50..ba436d71a7ec 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -11,6 +11,7 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/bcma/bcma.h>
+#include <linux/random.h>
 #include <linux/sched.h>
 #include <linux/io.h>
 #include <asm/unaligned.h>
@@ -1527,6 +1528,33 @@ brcmf_pcie_init_share_ram_info(struct brcmf_pciedev_info *devinfo,
 	return 0;
 }

+#define BRCMF_SEED_SIGNATURE		0xFEEDC0DE
+#define BRCMF_ENTROPY_HOST_SEED_LEN	128
+
+struct brcmf_entropy_metadata {
+	__le32 count;
+	__le32 signature;
+};
+
+static void brcmf_pcie_write_entropy_bytes(struct brcmf_pciedev_info *devinfo,
+					   u32 nvram_len)
+{
+	struct brcmf_entropy_metadata entropy_info;
+	u8 seed[BRCMF_ENTROPY_HOST_SEED_LEN] = { 0 };
+	u32 count = sizeof(seed);
+	u32 addr = devinfo->ci->rambase + devinfo->ci->ramsize - nvram_len;
+
+	entropy_info.signture = cpu_to_le32(BRCMF_SEED_SIGNATURE);
+	entropy_info.count = cpu_to_le32(BRCMF_ENTROPY_HOST_SEED_LEN);
+
+	addr -= sizeof(entropy_info);
+	memcpy_toio(devinfo->tcm + addr, &entropy_info, sizeof(entropy_info));
+
+	get_random_bytes(seed, count);
+
+	addr -= sizeof(count);
+	memcpy_toio(devinfo->tcm + addr, seed, count);
+}

static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
 					const struct firmware *fw, void *nvram,
@@ -1568,6 +1596,8 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
 			  devinfo->nvram_name);
 	}

+	brcmf_pcie_write_entropy_bytes(devinfo, nvram_len);
+
 	sharedram_addr_written = brcmf_pcie_read_ram32(devinfo,
 						       devinfo->ci->ramsize -
 						       4);

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux