Subject: Re: MT7922 problem with "fix rx filter incorrect by drv/fw inconsistent"

From: Kalle Valo <[email-masked]>
Date: Mon, 12 Jun 2023 15:39:35 +0300

Thorsten Leemhuis <[email-masked]> writes:

> [CCing the wifi-driver and the net developers, as a "JFYI" to ensure
> they are aware of this "newer kernel requires newer firmware"
> regression, so they can jump in if they want]
>
> On 22.05.23 16:12, Thorsten Leemhuis wrote:
>> On 22.05.23 15:20, Andrey Rakhmatullin wrote:
>>> On Mon, May 22, 2023 at 03:00:30PM +0200, Linux regression tracking
>>> #adding (Thorsten Leemhuis) wrote:
>>>> On 18.05.23 16:39, Andrey Rakhmatullin wrote:
>>>>> Hello. I have a "MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless
>>>>> Network Adapter" (14c3:0616) and when the commit c222f77fd4 ("wifi: mt76:
>>>>> mt7921: fix rx filter incorrect by drv/fw inconsistent") is applied (found
>>>>> by bisecting, checked by reverting it on v6.3) I have the following
>>>>> problem on my machine: when I connect to my router no DHCPv4 exchange
>>>>> happens, I don't see responses in tcpdump. My network setup is non-trivial
>>>>> though, and it looks like the problem is specific to it, but I still
>>>>> wonder if it's some bug in the aforementioned patch as my setup works with
>>>>> all other devices and I would expect it to work as long as the network
>>>>> packets sent by the device are the same.
>>>>>
>>>>> My setup is as follows: I have an ISP router which provides a 2.4GHz
>>>>> network and another router (Xiaomi R4AC with OpenWRT) connected by
>>>>> Ethernet to it that provides a 5GHz network and is configured as a "Relay
>>>>> bridge" (using relayd) to forward packets to the ISP router and back. This
>>>>> includes DHCPv4 packets, which are handled by the ISP router. tcpdump on
>>>>> the machine with MT7922 shows that the DHCP requests are sent while the
>>>>> responses are not received, while tcpdump on the bridge router shows both
>>>>> requests and responses.
>>>>>
>>>>> I've tried connecting the machine to the ISP router network directly and
>>>>> also to another AP (one on my phone) and those work correctly on all
>>>>> kernels.
>>>
>>> Deren Wu asked me privately
>>> if I'm using the latest firmware, and I
>>> wasn't. I updated the firmware and now the problem doesn't happen.
>>> The firmware where the problem happens is
>>> mediatek/WIFI_RAM_CODE_MT7922_1.bin from the linux-firmware commit
>>> e2d11744ef (file size 826740, md5sum 8ff1bdc0f54f255bb2a1d6825781506b),
>>> the one where the problem doesn't happen is from the commit 6569484e6b
>>> (file size 827124, md5sum 14c08c8298b639ee52409b5e9711a083).
>> 
>> FWIW, just checked: that commit is from 2023-05-15, so quite recent.
>> 
>>> I haven't
>>> tried the version committed between these ones.
>>> Not sure if this should be reported to regzbot and if there are any
>>> further actions needed by the kernel maintainers.
>> 
>> Well, to quote the first sentence from
>> Documentation/driver-api/firmware/firmware-usage-guidelines.rst
>> 
>> ```Users switching to a newer kernel should *not* have to install newer
>> firmware files to keep their hardware working.```
>> 
>> IOW: the problem you ran into should not happen. This afaics makes it a
>> regression that needs to be addressed -- at least if it's something that
>> is likely to hit others users as well. But I'd guess that's the case.
>
> Well, until now I didn't see any other report about a problem like this.
> Maybe things work better for others with that hardware – in that case it
> might be something not worth making a fuzz about. But I'll wait another
> week or two before I remove this from the tracking.

Yeah, this is bad. mt76 (or any other wireless driver) must not require
a new firmware whenever upgrading the kernel. Instead the old and new
firmware should coexist (for example have firmware-2.bin for the new
version and firmware.bin for the old version). Then mt76 should first
try loading the new firmware (eg. firmware-2.bin) and then try the old
one (eg. firmware.bin).

Should we revert commit c222f77fd4 or how to solve this?

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches