繁体   English   中英

Android内核,WiFi扫描系统调用

[英]Android Kernel, WiFi scan syscall

我正在使用Android内核(软心豆粒糖)。

我专注于/net/mac80211/scan.c模块和扫描行为,以了解PS_mode工作原理。 无论如何,我在更高级别上找不到任何调用ieee80211_scan_work函数(调用ieee80211_start_scan()函数的系统调用)的系统调用。

我想知道API是否甚至调用了此函数,有人知道吗,如果知道,则引发哪个syscall

在这里查看我的答复以获取mac80211的一般概述: 如何学习Linux无线驱动程序(mac80211)的结构?

用户空间的接口不是基于系统调用,而是使用netlink API。 通过发送NL80211_CMD_TRIGGER_SCAN命令来完成扫描。 在获得扫描已完成的NL80211_CMD_NEW_SCAN_RESULTS事件后,发出NL80211_CMD_GET_SCAN以获取扫描结果。 要查看此示例,请查看wpa_supplicant代码。

您看不到有人调用ieee80211_scan_work,因为它是工作队列处理程序。 如果您不熟悉工作队列,可以阅读一本解释它们的内核书。 这项工作在ieee80211_alloc_hw()中初始化为local-> scan_work的处理程序。

“让此程序运行”的代码在ieee80211_start_sw_scan()中,它实际上使scan_work排队。 请注意,scan_work仅在SW扫描中使用,这意味着mac80211会管理扫描(即,它保留计时器以切换通道并调用较低的硬件驱动程序以将硬件设置为特定通道)。 仅根据您的硬件功能使用它。 对于某些硬件,扫描完全通过硬件驱动程序甚至是固件来完成。 如果您的硬件驱动程序实现了硬件扫描,它将实现hw_scan mac80211回调。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM