Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
WiFi的(Link speed)連接速度可以從Settings里查看
從連接速度來看下獲取WiFi信息的流程
public int getLinkSpeed() {
return mLinkSpeed;
}
mLinkSpeed在fetchRssiLinkSpeedAndFrequencyNative()得到
fetchRssiLinkSpeedAndFrequencyNative -> WifiStateMachine.java
mWifiNative.signalPoll ->
doStringCommandWithoutLogging -> //cmd: SIGNAL_POLL
doStringCommandNative -> //通過socket發給WPAS處理
android_net_wifi_doStringCommand ->
doStringCommand ->
wpa_supplicant_ctrl_iface_receive -> Ctrl_iface_unix.c //WPAS端socket接收處理函數
wpa_supplicant_ctrl_iface_process -> Ctrl_iface.c
wpa_supplicant_signal_poll ->
wpa_drv_signal_poll ->
wpa_s->driver->signal_poll ->
nl80211_signal_poll -> Driver_nl80211.c
nl80211_get_link_signal ->
nl80211_drv_msg //msg的flag是NL80211_CMD_GET_STATION
send_and_recv_msgs -> //通過netlink發送給kernel driver,回調函數是get_link_signal(),用來解析收到的packet
nl80211_get_station -> nl80211.c //driver中對應的操作函數集在nl80211_ops中,這里是nl80211_get_station
rdev_get_station ->
rdev->ops->get_station ->
wl_cfg80211_get_station -> Wl_cfg80211.c
wldev_ioctl //cmd是WLC_GET_RATE