Re: brcmfmac SAE/WPA3 negotiation

James Prestwood
2024-12-19T13:43:02Z

Hi Keith,

On 12/19/24 5:38 AM, KeithG wrote:
> On Thu, Dec 19, 2024 at 6:46 AM James Prestwood <prestwoj@gmail.com> wrote:
>> Hi Keith,
>>
>> On 12/18/24 5:46 PM, KeithG wrote:
>>> On Wed, Dec 18, 2024 at 8:10 AM KeithG <ys3al35l@gmail.com> wrote:
>>>> On Wed, Dec 18, 2024 at 4:21 AM Arend van Spriel
>>>> <arend.vanspriel@broadcom.com> wrote:
>>>>> On 12/18/2024 1:21 AM, KeithG wrote:
>>>>>> On Tue, Dec 17, 2024 at 7:47 AM Arend van Spriel
>>>>>> <arend.vanspriel@broadcom.com> wrote:
>>>>>>>
>>>>>>> On 12/17/2024 1:13 AM, KeithG wrote:
>>>>>>>> On Mon, Dec 16, 2024 at 1:50 PM Arend van Spriel
>>>>>>>> <arend.vanspriel@broadcom.com> wrote:
>>>>>>>>> On 12/16/2024 1:21 PM, KeithG wrote:
>>>>>>>>>> On Mon, Dec 16, 2024 at 3:47 AM Arend van Spriel
>>>>>>>>>> <arend.vanspriel@broadcom.com> wrote:
>>>>>>>>>>> On 12/16/2024 10:43 AM, Arend van Spriel wrote:
>>>>>>>>>>>> On 12/16/2024 1:17 AM, KeithG wrote:
>>>>>>>>>>>>> On Sun, Dec 15, 2024 at 11:33 AM Arend Van Spriel
>>>>>>>>>>>>> <arend.vanspriel@broadcom.com> wrote:
>>>>>>>>>>>>>> On December 15, 2024 5:08:12 PM KeithG <ys3al35l@gmail.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Dec 15, 2024 at 6:12 AM Arend van Spriel
>>>>>>>>>>>>>>> <arend.vanspriel@broadcom.com> wrote:
>>>>>>>>>>>>>>>> On 12/14/2024 2:34 PM, KeithG wrote:
>>>>>>>>>>>>>>>>> Arend,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I looked through the info where I got the latest firmware:
>>>>>>>>>>>>>>>>> https://community.infineon.com/t5/Wi-Fi-Bluetooth-for-Linux/Wi-Fi-
>>>>>>>>>>>>>>>>> A-class-Linux-Driver-release-FMAC-2024-11-21-Documents/td-p/905045
>>>>>>>>>>>>>>>>> https://community.infineon.com/t5/AIROC-Wi-Fi-and-Wi-Fi-Bluetooth/
>>>>>>>>>>>>>>>>> Cypress-Linux-WiFi-Driver-Release-FMAC-2024-11-21/td-p/902888
>>>>>>>>>>>>>>>>> and did not find anything, but I really do not know what I am
>>>>>>>>>>>>>>>>> looking for.
>>>>>>>>>>>>>>>> I think I had a bit more luck and maybe found the needle. I sent out
>>>>>>>>>>>>>>>> another RFT patch which hopefully gets rid of the BCME_BADLEN error.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>>> Arend
>>>>>>>>>>>>>>> Arend,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Can you send me a link to that patch? I want to try it.
>>>>>>>>>>>>>> Hmm. I explicitly sent it to you, but here is a link to patchwork:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> https://patchwork.kernel.org/project/linux-wireless/
>>>>>>>>>>>>>> patch/20241215120401.238320-1-arend.vanspriel@broadcom.com/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can apply it on top of the other 3 patches.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> Arend
>>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks! I got it.
>>>>>>>>>>>>> I am building now and have tried to apply what I think are the correct
>>>>>>>>>>>>> patches. They do not apply cleanly and I had to hand edit things. My
>>>>>>>>>>>>> guess is I messed something up.
>>>>>>>>>>>>> I will see what happens when I reboot. It'll take a few hours to build
>>>>>>>>>>>>> on my Pi4 then for me to install it on the 3b+ to test.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I hope I understand which are the '3 other' patches.
>>>>>>>>>>>>>
>>>>>>>>>>>>> This is the one I got from your link:
>>>>>>>>>>>>> RFT-brcmfmac-Fix-structure-size-for-WPA3-external-SAE.diff
>>>>>>>>>>>>>
>>>>>>>>>>>>> These are what I understand are the '3 other patches'
>>>>>>>>>>>>> RFT-v2-1-3-wifi-brcmfmac-support-per-vendor-cfg80211-callbacks-and-
>>>>>>>>>>>>> firmware-events.patch.diff
>>>>>>>>>>>>> RFT-v2-2-3-wifi-brcmfmac-make-per-vendor-event-map-const.patch.diff
>>>>>>>>>>>>> RFT-v2-3-3-wifi-brcmfmac-cyw-support-external-SAE-authentication-in-
>>>>>>>>>>>>> station-mode.patch.diff
>>>>>>>>>>>>>
>>>>>>>>>>>>> If they are not correct could you send me links to them and I'll try
>>>>>>>>>>>>> again.
>>>>>>>>>>>> You got it right. Kuddos.
>>>>>>>>>>> Ignored my spelling checker, but apparently it should be "kudos".
>>>>>>>>>>> Another lesson learned today.
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>> Arend
>>>>>>>>>> Arend,
>>>>>>>>>>
>>>>>>>>>> Thanks for the confirmation. My attempt at a hand edit to apply the
>>>>>>>>>> rejected portions resulted in a failed build with the current RPiOS
>>>>>>>>>> kernel in the git repo:
>>>>>>>>>> # uname -a
>>>>>>>>>> Linux jackrune 6.6.64-v8+ #6 SMP PREEMPT Sun Dec 15 23:55:30 CST 2024
>>>>>>>>>> aarch64 GNU/Linux
>>>>>>>>>>
>>>>>>>>>> When I try to apply them, I get this:
>>>>>>>>>> $ patch -Np1 -i
>>>>>>>>>> RFT-v2-1-3-wifi-brcmfmac-support-per-vendor-cfg80211-callbacks-and-firmware-events.patch.diff
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
>>>>>>>>>> Hunk #1 FAILED at 6752.
>>>>>>>>>> 1 out of 1 hunk FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
>>>>>>>>>> Hunk #1 succeeded at 524 (offset 33 lines).
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
>>>>>>>>>> Hunk #1 FAILED at 1359.
>>>>>>>>>> 1 out of 1 hunk FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
>>>>>>>>>> Hunk #1 succeeded at 74 (offset -1 lines).
>>>>>>>>>> Hunk #2 succeeded at 336 (offset -70 lines).
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
>>>>>>>>>> Hunk #1 FAILED at 15.
>>>>>>>>>> Hunk #2 succeeded at 47 with fuzz 1 (offset -9 lines).
>>>>>>>>>> 1 out of 2 hunks FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h.rej
>>>>>>>>>> $ patch -Np1 -i RFT-v2-
>>>>>>>>>> RFT-v2-1-3-wifi-brcmfmac-support-per-vendor-cfg80211-callbacks-and-firmware-events.patch.diff
>>>>>>>>>> RFT-v2-2-3-wifi-brcmfmac-make-per-vendor-event-map-const.patch.diff
>>>>>>>>>> RFT-v2-3-3-wifi-brcmfmac-cyw-support-external-SAE-authentication-in-station-mode.patch.diff
>>>>>>>>>> $ patch -Np1 -i
>>>>>>>>>> RFT-v2-2-3-wifi-brcmfmac-make-per-vendor-event-map-const.patch.diff
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
>>>>>>>>>> Hunk #1 FAILED at 337.
>>>>>>>>>> 1 out of 1 hunk FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h.rej
>>>>>>>>>> $ patch -Np1 -i
>>>>>>>>>> RFT-v2-3-3-wifi-brcmfmac-cyw-support-external-SAE-authentication-in-station-mode.patch.diff
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
>>>>>>>>>> Hunk #1 succeeded at 75 (offset 1 line).
>>>>>>>>>> Hunk #2 FAILED at 1940.
>>>>>>>>>> Hunk #3 FAILED at 2158.
>>>>>>>>>> Hunk #4 FAILED at 2216.
>>>>>>>>>> Hunk #5 succeeded at 5522 (offset 22 lines).
>>>>>>>>>> Hunk #6 succeeded at 5697 (offset 90 lines).
>>>>>>>>>> Hunk #7 succeeded at 6126 (offset 125 lines).
>>>>>>>>>> Hunk #8 succeeded at 7596 with fuzz 1 (offset 255 lines).
>>>>>>>>>> Hunk #9 FAILED at 7647.
>>>>>>>>>> 4 out of 9 hunks FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
>>>>>>>>>> Hunk #3 succeeded at 243 (offset 15 lines).
>>>>>>>>>> Hunk #4 FAILED at 244.
>>>>>>>>>> Hunk #5 succeeded at 507 (offset 18 lines).
>>>>>>>>>> 1 out of 5 hunks FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
>>>>>>>>>> Hunk #1 FAILED at 8.
>>>>>>>>>> Hunk #2 FAILED at 39.
>>>>>>>>>> Hunk #3 FAILED at 49.
>>>>>>>>>> 3 out of 3 hunks FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/fwil_types.h
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
>>>>>>>>>> Hunk #1 FAILED at 42.
>>>>>>>>>> 1 out of 1 hunk FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
>>>>>>>>>> Hunk #1 succeeded at 32 with fuzz 2 (offset 1 line).
>>>>>>>>>> Hunk #2 succeeded at 60 with fuzz 1 (offset 2 lines).
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
>>>>>>>>>> Hunk #1 FAILED at 450.
>>>>>>>>>> 1 out of 1 hunk FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
>>>>>>>>>> Hunk #1 FAILED at 94.
>>>>>>>>>> 1 out of 1 hunk FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h.rej
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
>>>>>>>>>> Hunk #1 FAILED at 15.
>>>>>>>>>> Hunk #2 succeeded at 47 with fuzz 1 (offset -11 lines).
>>>>>>>>>> 1 out of 2 hunks FAILED -- saving rejects to file
>>>>>>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h.r
>>>>>>>>>> $ patch -Np1 -i RFT-brcmfmac-Fix-structure-size-for-WPA3-external-SAE.diff
>>>>>>>>>> patching file drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/fwil_types.h
>>>>>>>>>>
>>>>>>>>>> Is there another missing patch?
>>>>>>>>>>
>>>>>>>>>> The kernel for the RPi is at this commit:
>>>>>>>>>> commit 80533a952218696c0ef1b346bab50dc401e6b74c (HEAD -> rpi-6.6.y,
>>>>>>>>>> origin/rpi-6.6.y, origin/HEAD)
>>>>>>> So what repository does origin refer to. Can you share the URL?
>>>>>>>
>>>>>>> I will check if I posted any patches between 6.6 and 6.10+ Get back to
>>>>>>> this later o
>>>>>>>
>>>>>>> Regards,
>>>>>>> Arend
>>>>>> Arend,
>>>>>>
>>>>>> I am using the RaspberryPi repo:
>>>>>> https://github.com/raspberrypi/linux
>>>>> I was afraid you would say that. So we need to determine what brcmfmac
>>>>> patches are in there compared to upstream kernel. So checking the code I
>>>>> think you should apply only the "Fix-structure-size" patch to
>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h. Let me
>>>>> know if that works for you.
>>>>>
>>>>> Gr. AvS
>>>> Arend,
>>>>
>>>> That patch applied to the file in the folder you suggested. I am
>>>> building a kernel now and will see any changes this evening. Thanks
>>>> for the help.
>>>>
>>>> Regards,
>>>>
>>>> Keith
>>> Arend,
>>>
>>> Thanks for the guidance and help.
>>>
>>> I tried with the patched kernel and was unable to connect. The 2
>>> attached files are the log with brcmfmac debugging and iwd debugging
>>> turned o. and the other is an iwmon capture of an attempt to connect.
>>> This time, though, I get no IP address at all. Just an error out when
>>> I try to connect using iwctl. I get:
>>>
>>> [iwd]# station wlan0 connect deskSAE
>>> Type the network passphrase for deskSAE psk.
>>> Passphrase: *********
>>> Operation failed
>>> NetworkConfigurationEnabled: enabled
>>> StateDirectory: /var/lib/iwd
>>> Version: 3.1
>>> This is with kernel:
>>> Linux jackrune 6.6.66-v8+ #7 SMP PREEMPT Wed Dec 18 10:18:01 CST 2024
>>> aarch64 GNU/Linux
>>> and this firmware:
>>> Dec 18 19:37:08 jackrune kernel: brcmfmac: brcmf_fw_alloc_request:
>>> using brcm/brcmfmac43455-sdio for chip BCM4345/6
>>> Dec 18 19:37:08 jackrune kernel: usbcore: registered new interface
>>> driver brcmfmac
>>> Dec 18 19:37:09 jackrune kernel: brcmfmac: brcmf_c_process_txcap_blob:
>>> no txcap_blob available (err=-2)
>>> Dec 18 19:37:09 jackrune kernel: brcmfmac: brcmf_c_preinit_dcmds:
>>> Firmware: BCM4345/6 wl0: Oct 28 2024 23:27:00 version 7.45.286
>>> (be70ab3 CY) FWID 01-95efe7fa
>> Even closer this time. I've just sent a patch to the IWD mailing list.
>> Please try that along with Arend's kernel patch.
>>
>> Thanks,
>>
>> James
>>
>>> Keith
> James,
>
> It worked. I built iwd then tried to connect via iwctl and it
> connected to a WPA3 AP. I got an IP and I can ping the AP from the
> RPi.! It is a first! Woot Woot!
>
> [iwd]# station wlan0 connect deskSAE
> Available networks
> --------------------------------------------------------------------------------
> Network name Security Signal
> --------------------------------------------------------------------------------
> deskSAE psk ****
>
> Type the network passphrase for deskSAE psk.
> Passphrase: *********
>
> When I go to connman, it shows connected and I can ping.
>
> (clear out configs and reboot)
> When I tried from connmanctl it also connects! Seems with this patch
> to iwd and Arend's patch to the driver that WPA3 now works with RPis
>
> I had to apply Arend's patch to the 6.6.y source which has the
> brcm80211 structured a bit differently and the file to patch is in a
> different folder. the patch, corrected for 6.6.y, is attached.

Great! That's good to hear. It took a while but glad its finally
working. We'll get that patch to IWD upstreamed, or at least some
version of it. And thanks Arend for providing the support on the kernel
side of things.

Thanks,

James

>
> Keith