mt76: disable npu one more time
It was discovered that NPU causes problem on mt7915a chip. Steps to reproduce:
- Loaded sw and wait for 12-15 minutes. Just NOT do any other actions like associate clients.
After the specified interval the following printouts appears in log
ieee80211 phy1: failed to reallocate TX buffer
ieee80211 phy0: failed to reallocate TX buffer
.....
ICMPv6: ndisc: ndisc_alloc_skb failed to allocate an skb
ICMPv6: ndisc: ndisc_alloc_skb failed to allocate an skb
ICMPv6: ndisc: ndisc_alloc_skb failed to allocate an skb
mt7915e 0000:02:00.0: Message 00005aed (seq 7) timeout
mt7915e 0000:02:00.0: Fw is status(0)
and ubus call to wireless config stopped to work as well. Also skbmgr_info shows a big number of skbmgr_4k_alloc_fail:
cat /proc/net/skbmgr_info
skbmgr_limit = 16384
skbmgr_max_alloc_no = 10932
skbmgr_alloc_fail = 73
skbmgr_alloc_no = 10923
skbmgr_max_list_len = 0
skbmgr_alloc_normal = 18529
skbmgr_4k_limit = 16384
skbmgr_4k_max_alloc_no = 6881
skbmgr_4k_alloc_fail = 29231
skbmgr_4k_alloc_no = 5029
skbmgr_4k_max_list_len = 512
skbmgr_4k_alloc_normal = 113787
skbmgr_2k_truesize = 4608
skbmgr_4k_truesize = 8704
skbmgr_lro_truesize = 0
skbmgr_queue_len CPU0 = 0
skbmgr_4k_queue_len CPU0 = 1
Experiments shown that if NPU is enabled, skbmgr_4k_alloc_no grows constantly and after 12-15 minutes we start to get skbmgr_4k_alloc_fail growing as well. This leads failure of all netlink communication and finaly we get non working ubus call to wireless and above printouts. Disabling NPU fixes a problem.
It's quite interesting that
commit 8d23d97b Author: Mikhail Kshevetskiy mikhail.kshevetskiy@iopsys.eu Date: Thu Feb 9 00:49:52 2023 +0300
mt76: airoha: ugly hack to enable npu support in runtime for supported chips
does not contain this issue, but has WiFi 2.4GHz association issue, while
commit 69ecbca1 Author: Markus Gothe markus.gothe@genexis.eu Date: Thu Mar 2 13:51:25 2023 +0100
Fix bug in refactorized code for NPU offloading.
This fixes the association issue on 2.4GHz.
The root cause is that do() ... while() will run
at least once even when it shouldn't run (qid != 0).
Change-Id: I8e644967a0fb1242787d4deee052528e6c900fc3
does not have WiFi 2.4G association issue, but have 4k packet leaks.