我想了解Linux中无线的工作原理。我从wap_supplicant,hostapd应用程序开始,借助其文档和源代码。了解以下内容的流程和基本功能:


wpa_supplicant,nl80211(驱动程序接口)
libnl库(使用netlink协议在用户空间和内核之间进行套接字通信)
cfg80211(用于在用户空间中通过nl80211实现与用户空间中的驱动程序进行通信的内核接口),mac80211(软件媒体访问控制层)
驱动程序(可加载驱动程序ex:ath6kl-atheros驱动程序)。


我理解了上面的软件流程,在我的探索中,我发现为了向开发人员提供自由,MAC层是在软件中实现的(流行的实现为mac80211)。

在所有情况下都是这样吗?如果是,softMAC和hardMAC的优缺点是什么?内核中的cfg80211接口是否直接与驱动程序通信?谁与mac80211进行通讯以及如何进行通讯?

提前致谢。

最佳答案

术语“ SoftMAC”是指无线网络接口设备(WNIC),它不以硬件实现MAC层,而是期望驱动程序实现MAC层。

“ HardMAC”(也称为“ FullMAC”)描述了在硬件中实现MAC层的WNIC。

SoftMAC的优点是:


潜在降低硬件成本
仅通过更新驱动程序即可升级到较新的标准
仅通过更新驱动程序来纠正MAC实现中的错误的可能性


另一个优势(至少在Linux内核中)是,用于不同类型WNIC的许多不同驱动程序可以共享由内核本身提供的相同MAC实现。

尽管有优势,但并非所有WNIC都使用SoftMAC。 HardMAC的主要优点在于,由于MAC功能是在硬件中实现的,因此它们贡献的CPU负载更少。

mac80211是Linux内核中用于实现SoftMAC驱动程序的框架。它实现了cfg80211回调,否则该回调必须由驱动程序本身实现,并且还实现MAC层功能。因此,它在cfg80211和SoftMAC驱动程序之间进行。

HardMAC驱动程序必须自己完全实现cfg80211接口。

关于linux-kernel - 接入点使用softMAC还是hardMAC?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28343384/

10-12 13:41