WiFi 问题记录
开机第一次部分信道扫描扫概率出现描不到AP的问题
问题时间点扫描时在一个信道停留的时间比较短:
12-10 05:01:36.483 1371 1371 I wpa_supplicant: Successfully initialized wpa_supplicant // wpa_supplicant 初始化
行 56537: 12-10 05:01:38.626 643 1259 I TclWifiPerformanceStats: wifi connectivity partly scan start // 开始部分信道扫描 行 56655: 12-10 05:01:38.668 1371 1371 D wpa_supplicant: wlan0: nl80211: Scan trigger 行 56666: 12-10 05:01:38.671 810 810 I [wlan][810]SCANLOG: (SCN INFO) [SCN:100:K2D] Scan flags=0x8 [mac]addr=02:00:00:00:00:00 mask=03:00:00:00:00:00 n_ssids=1: n_channels=3: 1 5 6 // 扫描3个信道 行 56672: 12-10 05:01:38.673 1204 1204 I [wlan][1204]aisFsmSteps: (AIS STATE) [AIS0][0] TRANSITION: [IDLE] -> [SCAN] 行 56690: 12-10 05:01:38.673 1204 1204 I [wlan][1204]scnFsmSteps: (SCN STATE) [SCAN]TRANSITION: [IDLE] -> [SCANNING] 行 56848: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnEventScanDone: (SCN TRACE) at FW_SCAN_STATE_SCAN_DONE state 行 56849: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmDumpScanDoneInfo: (SCN INFO) Country Code = NC, Detected_Channel_Num = 3 行 56850: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmDumpScanDoneInfo: (SCN INFO) Channel : 1 5 6 行 56851: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmDumpScanDoneInfo: (SCN INFO) IdleTime : 2981 572 180 行 56852: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmDumpScanDoneInfo: (SCN INFO) MdrdyCnt : 36 12 13 行 56853: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmDumpScanDoneInfo: (SCN INFO) BAndPCnt : 0 0 0 行 56854: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmDumpScanDoneInfo: (SCN INFO) ScanTime : 47 46 46 // 每个信道的停留时间 行 56855: 12-10 05:01:38.832 1204 1204 I [wlan][1204]scnFsmSteps: (SCN STATE) [SCAN]TRANSITION: [SCANNING] -> [IDLE]扫描结果依赖于接收到beacon或者probe response,beacon 是 100ms 一个,信道停留时间小于 100ms 有概率出现接收不到beacon包。信道停留时间过短,有可能也接收不到AP回复的probe response 包。
得出结论:在每个信道停留的时间比较短,导致出现扫描不到AP的情况。
MTK 芯片扫描时,驱动下发一条扫描命令下去,firmware 执行完扫描后上报扫描结果。
如果 u2ChannelDwellTime 和 u2ChannelMinDwellTime 不设置默认是 0,firmware 就会根据前一次的扫描时的到参数来动态调整在每个信道的停留时间。
问题时间点是冷开机后第一次连接,所以没有之前的扫描数据,且这两个参数为 0,firmware 设置了最小的停留时间。导致这次扫描的时间比较短,出现扫描不到AP的情况。
添加 debug log 发现,基本每次扫描时,这两个参数都是 0。(驱动或者上层扫描时不设置扫描时间时,这两个值都是 0),此时 firmware 根据 MdrdyCnt、BAndPCnt 等上一次扫描时的参数,来动态设置信道的停留时间。
解决方案
在第一次扫描时,设置每个信道的停留时间最大为 90ms,最小为 42ms,以保证第一次扫描不会出现扫描不到AP的情况。
AP开启MLO之后,STR待机回连华硕小旋风路由器,回连只建立一条链路,有时出现回连失败
经过对日志进行拆解分析:
连接失败的情况:四次握手超时,原因是 wpa_supplicant 因为 MLD mac 无效而丢弃了 Eapol key1:
05-28 15:09:30.957 9168 9168 I wpa_supplicant: wlan0: WPA: RX message 1 of 4-Way Handshake from b2:7c:61:ca:58:de (ver=0)
05-28 15:09:30.957 9168 9168 D wpa_supplicant: RSN: msg 1/4 key data - hexdump(len=0):
05-28 15:09:30.957 9168 9168 I wpa_supplicant: RSN: Discard EAPOL-Key msg 1/4 with invalid AP MLD MAC address KDE
添加 debug l
