接入点是使用softMAC还是hardMAC?

时间:2015-02-05 11:58:18

标签: linux-kernel linux-device-driver wireless

我想了解linux中的无线工作。我在wpa_supplicant,hostapd应用程序的帮助下开始了他们的文档和源代码。理解了以下流程和基本功能:

  1. wpa_supplicant,nl80211(驱动程序界面)
  2. libnl库(使用netlink协议在用户空间和内核之间进行套接字通信)
  3. cfg80211(在用户空间中通过nl80211实现帮助从用户空间与驱动程序通信的内核接口),mac80211(软件媒体访问控制层)
  4. 驱动程序(可加载驱动程序ex:ath6kl - atheros驱动程序)。
  5. 我理解上面的软件流程并且在我的探索中我开始知道为开发人员提供自由MAC层是用软件实现的(流行的实现mac80211)。

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

    提前致谢。

2 个答案:

答案 0 :(得分:3)

术语' SoftMAC'是指无法在硬件中实现MAC层的无线网络接口设备(WNIC),而是期望驱动程序实现MAC层。

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

SoftMAC的优势在于:

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

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

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

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

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

答案 1 :(得分:0)

另外补充: - 与SoftMAC相比,Hardmac驱动程序有更好的帮助,由于在HW中实现了MLME,因此省电和快速连接/断开恢复。更好的省电是因为HW / FW无需在断开连接时唤醒主机,仍然可以连接和恢复。