Rav*_*avi 5 wireless linux-device-driver linux-kernel
我试图了解无线在 linux 中的工作。我从 wpa_supplicant、hostapd 应用程序开始,借助它们的文档和源代码。了解了以下流程和基本功能:
我理解了上述软件流程,在我的探索中,我了解到为了为开发人员提供自由,MAC 层是在软件中实现的(流行的实现 mac80211)。
在所有情况下都是这样吗?如果是这样,softMAC 和 hardMAC 的优缺点是什么?内核中的 cfg80211 接口是否直接与驱动程序通信?谁以及如何与 mac80211 进行通信?
提前致谢。
术语“SoftMAC”是指无线网络接口设备 (WNIC),它没有在硬件中实现 MAC 层,而是期望驱动程序实现 MAC 层。
“HardMAC”(也称为“FullMAC”)描述了在硬件中实现 MAC 层的 WNIC。
SoftMAC的优点是:
另一个优点(至少在 Linux 内核中)是,用于不同类型 WNIC 的许多不同驱动程序都可以共享内核本身提供的相同 MAC 实现。
尽管有这些优点,但并非所有 WNIC 都使用 SoftMAC。HardMAC 的主要优势在于,由于 MAC 功能是在硬件中实现的,因此它们对 CPU 负载的贡献较小。
mac80211是 Linux 内核中用于实现 SoftMAC 驱动程序的框架。它实现了 cfg80211 回调,否则必须由驱动程序本身实现,并且还实现了 MAC 层功能。因此,它介于 cfg80211 和 SoftMAC 驱动程序之间。
HardMAC 驱动程序必须完全自己实现 cfg80211 接口。