supplicant扫描的调用过程(使用nl80211)
supplicant接收到”SCAN”命令后,由wpa_supplicant_ctrl_iface_process处理。
wpa_supplicant_ctrl_iface_process
wpas_ctrl_scan // 处理扫描命令
wpa_supplicant_req_scan
wpa_supplicant_scan
wpa_supplicant_trigger_scan
wpas_trigger_scan_cb
wpa_drv_scan // wpa_s->driver->scan2调用到driver_nl80211_scan2
driver_nl80211_scan2
wpa_driver_nl80211_scan
nl80211_scan_common
send_and_recv_msgs
触发扫描的内核调用过程
SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned, flags)
__sys_sendmsg (net\socket.c)
sock_sendmsg
__sock_sendmsg
__sock_sendmsg_nosec (sock->ops->sendmsg调用netlink_sendmsg)
netlink_sendmsg
netlink_unicast
netlink_unicast_kernel (nlk->netlink_rcv调用genl_rcv)
genl_rcv (cb 为genl_rcv_msg)
genl_rcv_msg (ops->doit调用到nl80211_trigger_scan)
nl80211_trigger_scan (net\wireless\nl80211.