在调试Android P版本下WiFi功能时偶然发现,WiFi模块无法扫描到华为P20手机打开的热点。也即settings界面无法显示出P20手机打开的热点,但是通过如下命令:
iw dev wlan scan | grep SSID
直接向Driver下发扫描命令后,却能获得P20手机的热点信息。怀疑为Driver上报的热点信息在上传路线中被丢弃。跟踪扫描结果的上传路径:
cfg80211_inform_bss
cfg80211_inform_bss_data
cfg80211_bss_update 此函数会将扫描结果保存进内核中
cfg80211_scan_done 此函数通知内核将扫描结果上报
queue_work(cfg80211_wq, &wiphy_to_rdev(request->wiphy)->scan_done_wk); 内核在work_queue中添加了一个work。
__cfg80211_scan_done scan_done_wk在wiphy_new_nm中初始化为该函数。
nl80211_build_scan_msg
添加事件NL80211_CMD_NEW_SCAN_RESULTS