brcmfmac driver is the kernel.org version of Linux driver for Broadcom and Cypress WLAN devices.
Broadcom is one of the leading vendors for WLAN chips. They sell wireless chips which are labeled under 50+ marketing names and supporting PCIE, USB or SDIO. But the nice thing is they all use a common driver. BCMDHD and BRCMFMAC are the 2 major variants of the Linux driver for these devices. The FMAC version is part of kernel.org (Source) while bcmdhd is part of the AOSP distribution.
Back in 2016 the IoT division of Broadcom got sold to Cypress.(More Info) With this acquisition Cypress became a major vendor for WLAN chips for IoT. Since the acquisition there are new WLAN chips from Cypress. Cypress WLAN chips also use BCMDHD and BRCMFMAC. Cypress is now part of Infineon.
FMAC stands for Full MAC. This refers to the design feature where some chips support the MAC level processing of wireless frames to be offloaded to the hardware on the WLAN chip. In the Linux kernel there is a mac80211 layer which processes WLAN management and control frames. The FMAC driver doesn’t use the mac80211 layer as that processing has been offloaded to the firmware.
The offloading of these frames provides better power saving for the host processor. For example there are beacons typically being received every 100ms. If not for the offloading the host would need to receive and process these frames. This wouldn’t allow the host much of a chance to sleep.
Depending on the chips there are various offloading features like ARP cache, TCP keep alive, EAPOL, mDNS that are provided by the chip. The encryption and decryption of the WLAN packets are also done by the WLAN chip.
Below is a block diagram of the typical WLAN components when using a Linux based device with brcmfmac.
Cypress now releases FMAC/Firmware and WPA-supplicant on github. The main repo is ifx-linux-wireless and it provides links to other repos.
AN232689 — Wi-Fi software user guide is a very good starting point to get started with using Infineon Wi-Fi solutions with the Linux host of their choice.
If you are new to Infineon connectivity solutions for Linux, I would recommend trying it out on a host that supports it out of the box. One such host is the iMX8M Mini Developer’s Kit V2 — Embedded Artists. Here is the starting page for getting started with EA iMX 6/7/8 — Getting started
At Packet Path we have helped integrate Infineon WLAN connectivity solutions into IoT products. We have been working with both Broadcom and Cypress WLAN chips for 10+ years. We have worked with both WLAN firmware, Linux driver, MCU driver. Check out more at
https://www.packetp.com/service-page.html#cypress
https://www.packetp.com/service-page.html#wwd-whd
Version: 10/22/2022