Bug 290808 - iwlwifi BE200 320MHz NIC no longer available as firmware doesn't match in 1.50-BETA4
Summary: iwlwifi BE200 320MHz NIC no longer available as firmware doesn't match in 1.5...
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: wireless (show other bugs)
Version: 15.0-STABLE
Hardware: amd64 Any
: --- Affects Only Me
Assignee: Bjoern A. Zeeb
URL:
Keywords: regression
Depends on:
Blocks: iwlwifi
  Show dependency treegraph
 
Reported: 2025-11-05 08:58 UTC by Dave Cottlehuber
Modified: 2025-12-11 23:31 UTC (History)
1 user (show)

See Also:
bz: mfc-stable15+
bz: mfc-stable14-
bz: mfc-stable13-
bz: needs_errata?


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dave Cottlehuber freebsd_committer freebsd_triage 2025-11-05 08:58:02 UTC
NB works in 15.0-BETA2, broken sometime between B2-B4.

# dmesg |egrep -i 'iwlwifi|be200|wlan'
[2.498602] iwlwifi0: <iwlwifi> mem 0x50a00000-0x50a03fff at device 0.0 on pci4
[2.506296] iwlwifi0: Detected crf-id 0x2001910, cnv-id 0x2001910 wfpm id 0x80000000
[2.513576] iwlwifi0: PCI dev 272b/00f4, rev=0x472, rfid=0x112200
[2.519015] iwlwifi0: Detected Intel(R) Wi-Fi 7 BE200 320MHz
[2.524162] iwlwifi-gl-c0-fm-c0-102.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-102.ucode either
[2.535572] iwlwifi-gl-c0-fm-c0-102.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-102.ucode either
[2.546971] iwlwifi-gl-c0-fm-c0-102_ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-102_ucode either
[2.558986] iwlwifi_gl_c0_fm_c0_102_ucode: could not load binary firmware /boot/firmware/iwlwifi_gl_c0_fm_c0_102_ucode either
[2.570331] iwlwifi0: could not load firmware image 'iwlwifi-gl-c0-fm-c0-102.ucode'
[2.577557] iwlwifi0: File size way too small!
[2.581265] iwlwifi-gl-c0-fm-c0-101.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-101.ucode either
[2.592650] iwlwifi-gl-c0-fm-c0-101.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-101.ucode either
[2.604127] iwlwifi-gl-c0-fm-c0-101_ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-101_ucode either
[2.615557] iwlwifi_gl_c0_fm_c0_101_ucode: could not load binary firmware /boot/firmware/iwlwifi_gl_c0_fm_c0_101_ucode either
[2.626858] iwlwifi0: could not load firmware image 'iwlwifi-gl-c0-fm-c0-101.ucode'
[2.634098] iwlwifi0: File size way too small!
[2.637806] iwlwifi-gl-c0-fm-c0-100.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-100.ucode either
[2.649231] iwlwifi-gl-c0-fm-c0-100.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-100.ucode either
[2.660625] iwlwifi-gl-c0-fm-c0-100_ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-100_ucode either
[2.671967] iwlwifi_gl_c0_fm_c0_100_ucode: could not load binary firmware /boot/firmware/iwlwifi_gl_c0_fm_c0_100_ucode either
[2.683282] iwlwifi0: could not load firmware image 'iwlwifi-gl-c0-fm-c0-100.ucode'
[2.690498] iwlwifi0: File size way too small!
[2.694208] iwlwifi-gl-c0-fm-c0-99.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-99.ucode either
[2.710102] iwlwifi-gl-c0-fm-c0-99.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-99.ucode either
[2.710122] uhub1iwlwifi-gl-c0-fm-c0-99_ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-99_ucode either
[2.734053] iwlwifi_gl_c0_fm_c0_99_ucode: could not load binary firmware /boot/firmware/iwlwifi_gl_c0_fm_c0_99_ucode either
[2.753269] iwlwifi0: could not load firmware image 'iwlwifi-gl-c0-fm-c0-99.ucode'
[2.760409] iwlwifi0: File size way too small!
[2.764207] iwlwifi-gl-c0-fm-c0-98.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-98.ucode either
[2.777389] iwlwifi-gl-c0-fm-c0-98.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-98.ucode either
[2.788615] iwlwifi-gl-c0-fm-c0-98_ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-98_ucode either
[2.799843] iwlwifi_gl_c0_fm_c0_98_ucode: could not load binary firmware /boot/firmware/iwlwifi_gl_c0_fm_c0_98_ucode either
[2.810958] iwlwifi0: could not load firmware image 'iwlwifi-gl-c0-fm-c0-98.ucode'
[2.818103] iwlwifi0: File size way too small!
[2.821674] iwlwifi0: no suitable firmware found!
[2.825564] iwlwifi0: minimum version required: iwlwifi-gl-c0-fm-c0-98
[2.831511] iwlwifi0: maximum version supported: iwlwifi-gl-c0-fm-c0-102
[2.837653] iwlwifi0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
[2.846690] iwlwifi0: On FreeBSD the firmware package can be installed running fwget(8).

root@sendai /h/dch# fwget -v
Trying to match device 0x46a6 in class video and vendor intel with pci_video_intel
Trying to match device 0x125c in class network and vendor intel with pci_network_intel
Trying to match device 0x125c in class network and vendor intel with pci_network_intel
Trying to match device 0x272b in class network and vendor intel with pci_network_intel
Needed firmware packages: 'gpu-firmware-intel-kmod-alderlake gpu-firmware-intel-kmod-tigerlake wifi-firmware-iwlwifi-kmod-bz'
The most recent versions of packages are already installed

root@sendai /h/dch# pkg info wifi-firmware-iwlwifi-kmod-bz
wifi-firmware-iwlwifi-kmod-bz-20241017.1500068_2
Name           : wifi-firmware-iwlwifi-kmod-bz
Version        : 20241017.1500068_2
Installed on   : Wed Nov  5 08:52:01 2025 UTC
Origin         : net/wifi-firmware-iwlwifi-kmod
Architecture   : FreeBSD:15:amd64
Prefix         : /usr/local
Categories     : kld net
Licenses       : primary, whence
Maintainer     : bz@FreeBSD.org
WWW            : https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/
Comment        : Firmware modules for the iwlwifi (bz) WiFi NIC driver
Annotations    :
        FreeBSD_version: 1500068
        build_timestamp: 2025-11-01T04:06:43+0000
        built_by       : poudriere-git-3.4.4
        flavor         : bz
        port_checkout_unclean: no
        port_git_hash  : b64b73fd9
        ports_top_checkout_unclean: no
        ports_top_git_hash: 3613ba463
        repo_type      : binary
        repository     : FreeBSD-ports
Flat size      : 3.83MiB
Description    :
Firmware files for Intel WiFi NICs supported by the iwlwifi mvm driver.
root@sendai /h/dch#
Comment 1 Bjoern A. Zeeb freebsd_committer freebsd_triage 2025-11-05 13:45:27 UTC
Argh; I didn't get the firmware updates out as things changed from v6.16 to v6.17.
I'll go and see.

You could take the files directly from linux-firmware.git in the mean time and put them into /boot/firmware/ .
Comment 2 Bjoern A. Zeeb freebsd_committer freebsd_triage 2025-11-11 01:36:56 UTC
For an update see the review stack at:
https://reviews.freebsd.org/D53681
Comment 3 Dave Cottlehuber freebsd_committer freebsd_triage 2025-11-17 11:29:18 UTC
Thanks! With these 4 patches applied to ports, we can autoload firmware.

# wifi /etc/rc.conf
kld_list="${kld_list} if_iwlwifi"
wlans_iwlwifi0="wlan0"
# ifconfig_wlan0="WPA DHCP regdomain ETSI2 country AT channel 100"

However uncommenting the `ifconfig_wlan0="..."` line from rc.conf leads to a repeatable panic on boot.

dmesg prior to panic, for the firmware bits.

[2.354829] iwlwifi0: <iwlwifi> mem 0x50a00000-0x50a03fff at device 0.0 on pci4
[2.355735] iwlwifi0: Detected crf-id 0x2001910, cnv-id 0x2001910 wfpm id 0x80000000
[2.355751] iwlwifi0: PCI dev 272b/00f4, rev=0x472, rfid=0x112200
[2.355756] iwlwifi0: Detected Intel(R) Wi-Fi 7 BE200 320MHz
[2.355935] iwlwifi-gl-c0-fm-c0-102.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-102.ucode either
[2.356018] iwlwifi-gl-c0-fm-c0-102.ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-102.ucode either
[2.356115] iwlwifi-gl-c0-fm-c0-102_ucode: could not load binary firmware /boot/firmware/iwlwifi-gl-c0-fm-c0-102_ucode either
[2.356379] iwlwifi_gl_c0_fm_c0_102_ucode: could not load binary firmware /boot/firmware/iwlwifi_gl_c0_fm_c0_102_ucode either
[2.356389] iwlwifi0: could not load firmware image 'iwlwifi-gl-c0-fm-c0-102.ucode'
[2.356396] iwlwifi0: File size way too small!
[2.358402] iwlwifi0: successfully loaded firmware image 'iwlwifi-gl-c0-fm-c0-101.ucode'
[2.358832] iwl-debug-yoyo.bin: could not load binary firmware /boot/firmware/iwl-debug-yoyo.bin either
[2.358909] iwl-debug-yoyo.bin: could not load binary firmware /boot/firmware/iwl-debug-yoyo.bin either
[2.359086] iwl-debug-yoyo_bin: could not load binary firmware /boot/firmware/iwl-debug-yoyo_bin either
[2.359178] iwl_debug_yoyo_bin: could not load binary firmware /boot/firmware/iwl_debug_yoyo_bin either
[2.359188] iwlwifi0: loaded firmware version 101.6ef20b19.0 gl-c0-fm-c0-101.ucode op_mode iwlmld
[2.612203] iwlwifi0: Detected RF FM, rfid=0x112200
[2.720268] iwlwifi0: base HW address: 40:d1:33:32:3a:a2
[2.751220] iwlwifi0: Failed to register PHC clock (0)
[3.735091] iwlwifi0: XXX TODO linuxkpi_ieee80211_iterate_interfaces flags(0x109) not yet supported.
Comment 4 Bjoern A. Zeeb freebsd_committer freebsd_triage 2025-11-17 11:57:29 UTC
(In reply to Dave Cottlehuber from comment #3)

I likely know what that is;  what's the panic message though and are you running a DEBUG kernel (and which branch is this now)?
Comment 5 commit-hook freebsd_committer freebsd_triage 2025-11-19 02:27:55 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=9040277864ab28cabfc53f238e900bc19ac75d7e

commit 9040277864ab28cabfc53f238e900bc19ac75d7e
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-11-19 02:13:15 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-11-19 02:25:38 +0000

    iwlwifi/mld: only get tid after checking that it is a dataqos frame

    Like we did for mvm, only get the tid after all the other checks are
    done by the function in order to not trigger an assert.  Linux will
    likely return a random value there which later is not used as the
    driver does an early return.  In LinuxKPI we do check that the frame
    assumptions hold up, which does not go so well for a random frame.

    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    PR:             290808

 sys/contrib/dev/iwlwifi/mld/agg.c | 8 ++++++++
 1 file changed, 8 insertions(+)
Comment 6 Bjoern A. Zeeb freebsd_committer freebsd_triage 2025-11-19 14:44:48 UTC
The 2nd commit never made it to the PR; no idea why it failed to auto-add that.

URL: https://cgit.FreeBSD.org/src/commit/?id=d1180baa9b99538481f3780fc8f4e6e464a15e99

commit d1180baa9b99538481f3780fc8f4e6e464a15e99
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-11-19 02:21:00 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-11-19 02:25:38 +0000

    LinuxKPI: 802.11: initialize a backpointer on the link_sta
    
    iwlwifi/mld uses the back pointer in iwl_mld_link_sta_from_mac80211().
    Initialize it to make BE200 cards work again.
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    PR;             290808
---
 sys/compat/linuxkpi/common/src/linux_80211.c | 1 +
 1 file changed, 1 insertion(+)
Comment 7 commit-hook freebsd_committer freebsd_triage 2025-12-08 15:45:24 UTC
A commit in branch stable/15 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=4dde7d280a5f2a0218632b995d916fb1ae10cd7f

commit 4dde7d280a5f2a0218632b995d916fb1ae10cd7f
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-11-19 02:13:15 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-12-08 15:43:50 +0000

    iwlwifi/mld: only get tid after checking that it is a dataqos frame

    Like we did for mvm, only get the tid after all the other checks are
    done by the function in order to not trigger an assert.  Linux will
    likely return a random value there which later is not used as the
    driver does an early return.  In LinuxKPI we do check that the frame
    assumptions hold up, which does not go so well for a random frame.

    Sponsored by:   The FreeBSD Foundation
    PR:             290808

    (cherry picked from commit 9040277864ab28cabfc53f238e900bc19ac75d7e)

 sys/contrib/dev/iwlwifi/mld/agg.c | 8 ++++++++
 1 file changed, 8 insertions(+)
Comment 8 commit-hook freebsd_committer freebsd_triage 2025-12-11 23:27:16 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=818044a91724209068c4918467730c092af6c429

commit 818044a91724209068c4918467730c092af6c429
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-11-11 01:24:13 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-12-11 23:26:09 +0000

    net/wifi-firmware-iwlwifi-kmod: update firmware to 20251021

    Intel firmware for BE200 ("bz" chipsets) requires more modern firmware
    than we provide. [1]
    The firmware file for iwlwifi-so-a0-gf4-a0 was missing in a recent
    version; we only had the pnvm file. [2]

    Update the Intel iwlwifi firmware to the latest tree
    which brings a few changes:
    (1) on linux-firmware.git the firmware got moved into a subdirectory
        so we need to strip that path before installing as the driver
        still expects the firmware in the top-level directory.
    (2) the "bz" firmware gets bumped to 101, we keep the old version for
        14.3-R around as well.
    (3) while the other files keep their revisions, Intel may have updated
        them with rebuilds.  This is hard to discover given not only the
        hashes but also the paths have changed in distinfo.
    (4) we now generate the firmware list from the WHENCE file in
        linux-firmware.git given the driver firmware name creation is too
        dynamic.  This adds some extra firmware files we did not have
        before.  See files/extract-fw-list.sh.

    PR:             290808
    Reported by:    dch [1], Fotis Zabaras (fotis zabaras.eu) (and others) [2]
    Reviewed by:    jrm
    Differential Revision: https://reviews.freebsd.org/D53681

 net/wifi-firmware-iwlwifi-kmod/Makefile            | 134 +++++++------
 net/wifi-firmware-iwlwifi-kmod/distinfo            | 190 ++++++++++--------
 .../files/extract-fw-list.sh (new)                 | 219 +++++++++++++++++++++
 net/wifi-firmware-iwlwifi-kmod/pkg-descr           |   3 +-
 4 files changed, 402 insertions(+), 144 deletions(-)
Comment 9 Bjoern A. Zeeb freebsd_committer freebsd_triage 2025-12-11 23:31:26 UTC
Thanks a lot for reporting!  Sorry it took a while.

(In reply to Bjoern A. Zeeb from comment #6)

I figured why the auto-commit hook did not work;  it says PR; (not PR: ).
Got merged to stable/15 as:

The branch stable/15 has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=4d3c09c79a04b2bafbee86f50a9bd25d490762b7

commit 4d3c09c79a04b2bafbee86f50a9bd25d490762b7
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-11-19 02:21:00 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-12-08 15:43:51 +0000

    LinuxKPI: 802.11: initialize a backpointer on the link_sta
    
    iwlwifi/mld uses the back pointer in iwl_mld_link_sta_from_mac80211().
    Initialize it to make BE200 cards work again.
    
    Sponsored by:   The FreeBSD Foundation
    PR;             290808
    
    (cherry picked from commit d1180baa9b99538481f3780fc8f4e6e464a15e99)