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