mac80211基础知识总结
2026/5/13 9:40:48 网站建设 项目流程

可参考:

现代Linux下的wifi框架-CSDN博客

Linux下wifi子系统的数据流-CSDN博客

在进一步认识mac80211之前,我们先学习几点预备知识

MLME

MLME 是MAC Sublayer Management Entity的缩写,即MAC 子层管理实体

简单来说,它是 802.11 协议中负责"管理面"功能的模块,与负责"数据面"的功能相对。

一、管理面 vs. 数据面

层面英文职责例子
数据面Data Plane负责用户数据的传输你的网页浏览、视频流、文件下载
管理面Management Plane负责建立、维护和断开连接扫描热点、认证、关联、漫游、省电模式管理

MLME 就是管理面的核心执行者。

二、MLME 具体负责什么?

MLME 处理的是 802.11 协议中各种管理帧管理流程

功能对应管理帧/流程描述
扫描 (Scan)Probe Request / Response
Beacon
发现周围有哪些 Wi-Fi 热点
认证 (Authentication)Authentication 帧与 AP 进行身份验证
关联 (Association)Association Request / Response与 AP 建立连接,获得 AID
重关联 (Reassociation)Reassociation Request / Response漫游时,重新关联到新 AP
解除关联 (Disassociation)Disassociation 帧断开连接
解除认证 (Deauthentication)Deauthentication 帧强制踢出或主动退出
省电管理PS-Poll, Null Data 帧通知 AP 进入/退出睡眠模式
速率控制 (部分)与 AP 协商支持的数据速率

三、MLME 的位置

在 802.11 协议栈中,MLME 位于MAC 层内部,位于数据面之上、物理层管理实体(PLME)之上:

+---------------------+ | 管理面 (MLME) | ← 管理帧处理、连接状态机 +---------------------+ | 数据面 (MAC) | ← 数据帧收发、ACK、加密 +---------------------+ | 物理层 (PHY) | +---------------------+

四、MLME 在 AIC8800 中由谁实现?

这正是我们之前讨论的核心问题。MLME 的实现取决于芯片是SoftMAC还是FullMAC

  • SoftMAC 设备:MLME 由主机端的mac80211软件实现。

  • FullMAC 设备(如 AIC8800):MLME主要由芯片内部的固件(运行在 Cortex-M4F 上)实现,以降低主机 CPU 负载和响应延迟。

在实际的驱动开发中,即使是 FullMAC 的 AIC8800,主机侧的aic8800_fdrv驱动仍需通过一些回调或消息(如通过rwnx_msg_*接口)与固件中的 MLME 交互,以转发来自用户态的扫描、连接等命令。

五、一句话总结

MLME 就是 Wi-Fi 连接的 "管家":它不负责搬运数据,而是负责"找谁连接、怎么连上、什么时候断开、睡着了怎么叫醒"等所有管理性事务。在 AIC8800 这种 FullMAC 芯片中,MLME 的大部分逻辑由模组内部的 Cortex-M4F 固件实现,主机驱动通过消息接口来调用它。

HardMAC和SoftMAC

HardMACSoftMAC是 802.11 无线设备中两种不同的架构,主要区别在于MLME(管理面)功能是在硬件/固件中实现,还是在主机软件的驱动中实现。

一、核心区别对比表

维度SoftMACHardMAC (FullMAC)
MLME 位置主机侧(Linuxmac80211软件实现)芯片内部固件(如 AIC8800 的 Cortex-M4F)
主机 CPU 负担较高(需处理管理帧、扫描、关联等)较低(芯片自行处理,主机只下发命令)
实时性要求较高(需快速响应管理事件)较低(芯片自主处理,不依赖主机响应)
灵活性(协议 Bug 或新特性可通过软件升级修复)(依赖厂商固件更新)
功耗较高(主机 CPU 需频繁参与)较低(芯片可自主进入省电模式)
驱动开发复杂度较低mac80211提供大部分协议逻辑)较高(需实现与芯片固件的私有通信接口)
典型芯片老式 Atheros (ath9k)、RTL8187AIC8800、博通 (bcmdhd)、MTK (mt76部分)

二、架构差异图解

SoftMAC 架构 HardMAC 架构 +----------------+ +----------------+ | 用户态应用 | | 用户态应用 | +----------------+ +----------------+ ↓ ↓ +----------------+ +----------------+ | mac80211 | ← 软件实现 MLME | cfg80211 | | (协议栈软件) | | (轻量配置层) | +----------------+ +----------------+ ↓ ↓ +----------------+ +----------------+ | 驱动 (部分) | | 驱动 (轻量) | +----------------+ +----------------+ ↓ ↓ +----------------+ +----------------+ | WiFi 芯片 | | WiFi 芯片 | | (仅PHY+底层MAC)| | (完整MAC+MLME) | +----------------+ | + Cortex-M4F | | | 运行固件 | | +------------+ +----------------+

关键点:SoftMAC 的芯片只负责物理层和简单的 MAC 操作(如 ACK 应答),而 HardMAC 的芯片内部有一个独立的处理器(如 AIC8800 的 Cortex-M4F)运行完整的 MAC 层和管理面逻辑。


三、各自的优缺点

SoftMAC 的优点

  1. 修复协议 Bug 容易:802.11 协议的问题可通过更新主机mac80211解决,不需要升级芯片固件(往往是最棘手的部分)。

  2. 支持新特性快:新的 802.11 特性可以更快地在软件中实现,不受芯片硬件能力限制。

  3. 芯片成本低:芯片内部无需集成强大的处理器,只需要实现基础的物理层和简单 MAC。

SoftMAC 的缺点

  1. 主机 CPU 负载高:管理帧解析、扫描、漫游决策都需要主机 CPU 参与,在嵌入式设备(如路由器)上可能成为瓶颈。

  2. 实时性挑战:管理事件(如 Beacon 丢失)通过总线传递到主机存在延迟,可能影响漫游体验。

HardMAC 的优点

  1. 主机 CPU 负载低:管理面完全由芯片自主处理,主机只需通过WLAN接口进行简单命令下发和数据传输。

  2. 功耗更低:芯片可以在主机睡眠时自主维持连接、监听 Beacon、在指定时间唤醒主机(TWT 等省电机制更容易实现)。

  3. 实时性更好:管理事件的响应在芯片内部完成,不依赖主机的调度。

HardMAC 的缺点

  1. 芯片成本高:需要集成一个独立的处理器(如 Cortex-M)和较大容量的 RAM/ROM 来运行固件。

  2. 灵活性差:协议 Bug 或新特性依赖厂商提供固件更新,而厂商往往更新缓慢或根本不更新。

  3. 驱动开发复杂:驱动需要实现与芯片固件通信的私有协议(如 AIC8800 的rwnx_msg_*接口),而非使用mac80211提供的标准接口。


四、典型芯片举例

架构芯片型号特点
SoftMACAtheros AR9271 (ath9k_htc)著名的开源友好芯片,mac80211实现大部分逻辑
RTL8187 (Realtek)老式 USB 网卡,SoftMAC 典型代表
MT7601 (MediaTek)低成本 USB 网卡,SoftMAC 实现
HardMACAIC8800内部 Cortex-M4F 运行完整固件
BCM43438 (博通)Raspberry Pi 3 内置 WiFi,FullMAC
CYW43455 (Cypress/博通)主流 FullMAC 芯片
MT7668 (MediaTek)部分 FullMAC 特性

五、LInux 内核中的体现

  • SoftMAC 设备:驱动必须注册到mac80211框架,实现struct ieee80211_ops中的回调函数(如startstoptxadd_interface等)。

  • HardMAC 设备:驱动通常不依赖mac80211,而是直接通过cfg80211注册wiphy,实现struct cfg80211_ops中的回调(如scanconnectdisconnect)。


六、一句话总结

SoftMAC 把 Wi-Fi 的管理大脑放在主机的 Linux 驱动里(由mac80211实现),芯片只管手脚;HardMAC 把整个大脑都放进芯片内部(由固件实现),主机只负责下达指令。

在嵌入式系统选型中,HardMAC(如 AIC8800)通常更受欢迎,因为它能显著降低主控 CPU 的负载,并简化系统集成。

mac80211

简单来说,mac80211是 Linux 内核中一个专门为SoftMAC无线设备设计的核心框架(WiFi 协议栈)。它实现了那些 802.11 协议中管理面(MLME)的大部分复杂逻辑,让驱动开发者无需从零实现整个协议栈。

mac80211的定位:

mac80211实现的功能:

mac80211对比fullmac:

实际例子:

总结:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询