接入点使用 softMAC 还是 hardMAC?

Do Access points use softMAC or hardMAC?

我正在尝试了解无线在 linux 中的工作原理。我从 wpa_supplicant、hostapd 应用程序开始,借助他们的文档和来源 code.Understood :

的流程和基本功能
  1. wpa_supplicant,nl80211(驱动接口)
  2. libnl 库(用户 space 和内核使用 netlink 协议进行套接字通信)
  3. cfg80211(内核接口用于与用户space的驱动程序通信,借助用户space中的nl80211实现),mac80211(软件媒体访问控制层)
  4. 驱动程序(可加载驱动程序 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 驱动程序之间。

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

还要补充:- 由于在硬件中实施了 MLME,与 SoftMAC 相比,Hardmac 驱动程序在节能和快速 connection/disconnection 恢复方面有更好的帮助。更好的省电是因为 HW/FW 不需要在断开连接时唤醒主机并且仍然可以连接和恢复。