mac80211源码分析

mac80211源码分析

  1. 概述
  2. 体系结构
  3. 代码结构
  4. 数据结构
  5. 主要流程
  6. 切换点
  7. 主要函数
  8. 速率控制

1、概述

  • mac80211:是一个Linux内核子系统,是驱动开发者可用于为SoftMAC无线设备写驱动的框架。mac80211在内核空间实现STA模式,在用户空间实现AP模式(hostapd)。
  • cfg80211:用于对无线设备进行配置管理,与FullMAC,mac80211和nl80211一起工作。
  • nl80211:用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议。
  • MLME:即MAC (Media Access Control) Layer Management Entity,它管理物理层MAC状态机。
  • SoftMAC:其MLME由软件实现,mac80211为SoftMAC实现提供了一个API。 即:SoftMAC设备允许对硬件执行更好地控制,允许用软件实现对802.11的帧管理,包括解析和产生802.11无线帧。目前大多数802.11设备为SoftMAC,而FullMAC设备较少。
  • FullMAC:其MLME由硬件管理,当写FullMAC无线驱动时,不需要使用mac80211。
  • wpa_supplicant:是用户空间一个应用程序,主要发起MLME命令,然后处理相关结果。
  • hostpad:是用户空间一个应用程序,主要实现station接入认证管理。

2、体系结构


图2-1 系统框架

3、代码结构

  • ieee80211_i.h(主要数据结构)
  • main.c(主函数入口)
  • iface.c(虚拟接口处理)
  • key.c,key.h(密钥管理)
  • sta_info.c,sta_info.h(用户管理)
  • pm.c(功率管理)
  • rate.c,rate.h(速率控制函数)
  • rc80211*(速率控制算法)
  • rx.c(帧接收路径代码)
  • tx.c(帧发送路径代码)
  • scan.c(软件扫描代码)
  • mlme.c(station/managed模式MLME)
  • ibss.c(IBSS MLME)
  • cfg.c,cfg.h,wext.c(配置入口代码)
  • aes*,tkip*,wep*,michael*,wpa*(WPA/RSN/WEP代码)
  • wme.c,wme.h(QoS代码)
  • util.c(公共函数)

4、数据结构

ieee80211_local/ieee80211_hw

  • 每个数据结构代表一个无线设备(ieee80211_hw嵌入到ieee80211_local)
  • ieee80211_hw是ieee80211_local在驱动中的可见部分
  • 包含无线设备的所有操作信息
  • 9
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值