Re: [iwlwifi] Intel WiFi 7260: iwlwififw not loaded

From: Bjoern A. Zeeb <bzeeb-lists_at_lists.zabbadoz.net>
Date: Mon, 10 Jan 2022 19:05:03 UTC
On Fri, 31 Dec 2021, FreeBSD User wrote:

Hi,

sorry for answer this one so late.

> On Fri, 31 Dec 2021 00:36:51 +0000 (UTC)
> "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net> wrote:
>
>> On Thu, 30 Dec 2021, FreeBSD User wrote:
>>
>>> Running FreeBSD 13.0-STABLE #45 stable/13-n248789-9d96f4d3491: Thu Dec 30 23:02:26 CET
>>> 2021 amd on a Lenovo Thinkpad E540, which has the following chipset as WiFi chipset
>>> (loaded with the if_iwm module):
>>>
>>> iwm0@pci0:5:0:0:        class=0x028000 rev=0x73 hdr=0x00 vendor=0x8086 device=0x08b2
>>> subvendor=0x8086 subdevice=0x4262 vendor     = 'Intel Corporation'
>>>    device     = 'Wireless 7260'
>>>    class      = network
>>>    bar   [10] = type Memory, range 64, base 0xf1c00000, size 8192, enabled
>>>    cap 01[c8] = powerspec 3  supports D0 D3  current D0
>>>    cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
>>>    cap 10[40] = PCI-Express 2 endpoint max data 128(128) FLR RO NS
>>>                 max read 128
>>>                 link x1(x1) speed 2.5(2.5) ASPM L1(L0s/L1) ClockPM enabled
>>>    ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
>>>    ecap 0003[140] = Serial 1 xxxxxxxxxxxxxxxx
>>>    ecap 0018[14c] = LTR 1
>>>    ecap 000b[154] = Vendor [1] ID cafe Rev 1 Length 20
>>>
>>> (only works if compiled into the kernel, otherwise iwmfw is NOT loaded and the proper
>>> firmware is also NOT loaded).
>>
>> There is no iwmfw module.
>
> All right, then. Including into the kernel configuration file the lines
>
> # WLAN
> #   Intel devices
> device      iwm     # Intel IEEE 802.11ac wireless network driver
> device      iwmfw       # Firmware Module for Intel Wireless driver

Okay.  That's the device name which will include all firmware into the kernel.

> do not drop a kernel compilation error as expected when including something strange or
> wrong. Without "device iwmfw" the iwm noadays does not load the proper firmware, as far
> as I can conclude on a hunch - I performed the tests yesterday when I wanted the kernel
> module to be loaded/unloaded in a flexible way. It turns out that my config doesn't work
> properly when if_iwm_load="YES" is set in /boot/loader.conf.local. I'll check that again
> later.

I am not entirely sure I fully follow.

If you compile device iwm into the kenrel but not device iwmfw then
you probably have to manually load the firmware from loader.
That is probably also a very uncomon configuration.


>> /boot/kernel/if_iwm.ko
>> /boot/kernel/iwm3160fw.ko
>> /boot/kernel/iwm3168fw.ko
>> /boot/kernel/iwm7260fw.ko
>> /boot/kernel/iwm7265Dfw.ko
>> /boot/kernel/iwm7265fw.ko
>> /boot/kernel/iwm8000Cfw.ko
>> /boot/kernel/iwm8265fw.ko
>> /boot/kernel/iwm9000fw.ko
>> /boot/kernel/iwm9260fw.ko
>>
>> Can you show us how you are trying to load the iwm firmware (when
>> built as a module) and what does dmesg -a | grep iwm say then?
>
> Kernel with staically built-in iwm module as described above:
>
> [...]
> [~] dmesg -a | grep iwm
> module iwm7260fw_fw already present!
> iwm0: <Intel(R) Dual Band Wireless AC 7260> mem 0xf1c00000-0xf1c01fff at device 0.0 on
> pci4 iwm0: hw rev 0x140, fw ver 17.352738.0, address ...............
[...]

Ok, that is with both device lines in the kernel config, both compiled
into the kernel;  works as expected.  Good.



> Kernel with loadable module triggered from /boot/loader.conf[.local]:

Would be good if you could show the related lines as well.

> # dmesg -a | grep iwm
> Autoloading module: if_iwm
> iwm0: <Intel(R) Dual Band Wireless AC 7260> mem 0xf1c00000-0xf1c01fff at device 0.0 on
> pci4 iwm0: hw rev 0x140, fw ver 17.352738.0, address ac:7b:a1:a0:6f:d6

Seems it was loaded and you probably also loaded a firmware correctly
and it worked.


> kldstat:
>
> 11    1 0xffffffff83133000    19310 if_iwm.ko
> 12    1 0xffffffff8314d000   1023d8 iwm7260fw.ko
>
> It seems that when rebooting the system, the FW module for iwm gets loaded as expected,
> automatically.

The firmware stayed becuase it was preloaded from loader.


>  It doesn't, if I manually load the if_iwm after the system is up via
> "kldload if_iwm", iwm7260fw.ko doesn't show up.

It doesn't show up in kldstat after the driver is loaded?  That would
probably be correct as iwm will release the reference once it is done
and there will be no need to keep the firmware module loaded so it'll
automatically unload again.

Does the driver work in these cases?   Do you have similar iwm0: hw
rev .., fw ver ... lines in dmesg for that case?


>>> past years, rendering iwm from working to non working on this platform).

It seems in the cases you've shown above that iwm(4) actually does load
and would work?  I am sorry, I think I must be missing or
misunderstanding something?


Gruesse,
Bjoern

-- 
Bjoern A. Zeeb                                                     r15:7