=== LinuxKPI 802.11 and Native Wireless Update

Links: +
link:https://github.com/FreeBSDFoundation/proj-laptop/issues/66[Support the MediaTek Wireless cards] URL: link:https://github.com/FreeBSDFoundation/proj-laptop/issues/66[] +
link:https://github.com/FreeBSDFoundation/proj-laptop/issues/99[Support the Realtek Wireless cards] URL: link:https://github.com/FreeBSDFoundation/proj-laptop/issues/99[]

Contact: Bjoern A. Zeeb <bz@FreeBSD.org> +
Contact: The FreeBSD wireless mailing list <wireless@FreeBSD.org>

This report focuses on the efforts using permissively licensed Linux wireless drivers, mostly unmodified, on FreeBSD, as well as preparing the native net80211 stack for support of newer standards.

==== Driver updates

With vendor updates to Linux v6.16 being stalled in the last quarter for a conflict with drm-kmod and later an nvidia-drm problem we update to v6.17-based drivers right before the 15.0-RELEASE deadline in September.
Unfortunately multiple fixes did not make it anymore in time for the release.
In the aftermath we also had to fix package:graphics/drm-515-kmod[] and had to correct LinuxKPI code to unbreak SR-IOV for mlx5en.

In December we started tracking Linux v6.18 for some drivers.
More will likely follow or we will go straight to v6.19-rcN to benefit from upstream improvements.

==== Firmware

With the update of drivers to newer versions a few firmware files needed updates.
The automated way we used to use for man:iwlwifi[4] no longer works so we now pick all we can get but still try to classify the files into flavors for as long as we can.
The wifi-firmware ports framework got completely switched to only shipping plain firmware files and no more kernel modules.
This means that kernel updates no longer require package upgrades and firmware can be updated independently (for most).
Firmware for all the other drivers supported (or unsupported) also got updated.

==== Intel iwlwifi support

A few bug fixes were implemented, mostly related to the fact that the man:iwlwifi[4] mvm sub-driver now officially got split up into mvm and mld in the newer versions.
Also support for 1x1 cards, such as AX101, which suffered a firmware crash with 11n and 11ac, got fixed.

==== Mediatek mt76 chipset support

After finally finding some laptop in which the MT7922 card could be used for development, which was not the main WiFi slot of my framework laptop, we had packets passing at basic rates within 10 days.
The mt76 driver continues to be blocked on the LinuxKPI `struct page` conflict and further `page pool` work.
A pull request for the master branch for drm-kmod was opened to try to deal with possible conflicts for `struct page` changes upfront.
Work is ongoing to support 11n and 11ac rates.
Further mt76 supported chipsets will be added over time, likely the MT7925 next.

==== Realtek rtw88 and rtw89 11n and 11ac support

Some Realtek chipsets had/have problems with the LinuxKPI compat implementation to work or not crash.
At least one man:rtw88[4] chipset will not associate (or scan properly), while the man:rtw89[4] driver can cause a panic at times.
Work to improve some of this is on the way.
In addition work to support 802.11n and 802.11ac rates with these drivers is also on the way.
BlockACK support got sorted and man:rtw89[4] seems fine with RX but is still stuck on basic rates for TX.
The latter is likely caused by newer driver downcalls which we are now starting to support in LinuxKPI to address the issue.

Sponsor: The FreeBSD Foundation
