wireless之nl80211\cfg80211\mac80211

2024-01-03 11:20

本文主要是介绍wireless之nl80211\cfg80211\mac80211,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 基本概念

    • cfg80211:  用于对无线设备进行配置管理。与FullMAC, mac80211和nl80211一起工作。(Kernel态)

    • mac80211: 是一个driver开发者可用于为SoftMAC无线设备写驱动的框架 (Kernel态)。

    • nl80211: 用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议(User态)

    • WNIC : Wireless Network Interface Controller, 它总是指望硬件执行协议(如IEEE802.11)描述的功能。

    • MLME: 即MAC(Media Access Control ) Layer Management Entity,它管理物理层MAC状态机。

    • SoftMAC: 其MLME由软件实现,mac80211为SoftMAC实现提供了一个driver API。 即:SoftMAC设备允许对硬件执行更好地控制,允许用软件实现对802.11的帧管理,包括解析和产生802.11无线帧。目前大多数802.11设备为SoftMAC,而FullMAC设备较少。

    • FullMAC:  其MLME由硬件管理,当写FullMAC无线驱动时,不需要使用mac80211。

    • wpa_supplicant: 是用户空间一个应用程序,主要发起MLME命令,然后处理相关结果。

    • 

 

2. cfg80211

    cfg80211是Linux 802.11配置API。cfg80211用于代码wext(Wireless-Extensions),nl80211用于配置一个cfg80211设备,且用于kernel与userspace间的通信。wext现处理维护状态,没有新的功能被增加,只是修改bug。如果需要通过wext操作,则需要定义CONFIG_CFG80211_WEXT。

     cfg80211 and nl80211: 基于消息机制,使用netlink接口

    wext: 基于ioctl机制

    • struct ieee80211_hw: 表示硬件信息和状态

    • ieee80211_alloc_hw:每个driver调用ieee80211_alloc_hw分配ieee80211_hw,且以ieee80211_ops为参数

    • ieee80211_register_hw:每个driver调用ieee80211_register_hw创建wlan0和 wmaster0,并进行各种初始化。

    • struct ieee80211_ops:每个driver实现它的成员函数,且它的成员函数都以struct ieee80211_hw做为第一个参数。在struct ieee80211_ops中定义了24个方法,以下7个方法必须实现:
       tx,start,stop,add_interface,remove_interface,config和configure_filter。

 

3. mac80211

    它是一个driver开发者可用于为SoftMAC无线设备写驱动的框架,mac80211为SoftMAC设备实现了cfg80211回调函数,且mac80211通过cfg80211实现了向网络子系统注册和配置。配置由cfg80211通过nl80211和wext实现。

    mac80211在体系结构中的位置如下图所示:

 

 

 

4. socket

     

 

 

这篇关于wireless之nl80211\cfg80211\mac80211的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565524

相关文章

POJ 2236 Wireless Network

本题的关键点在与,给定一个修复好的u,谁是和它连通的呢?  答案需要遍历全部的n,找出存在于并查集里的i,并且 距离(i, u) <=  d。注意这里的u可能本来就已经修好,所以只需要find(i) == find(u) 就可以满足条件. /************************************************ Author: fisty* Created

nl80211_iftype接口类型详解

NL80211_IFTYPE_UNSPECIFIED 上层协议未指定硬件接口类型,由驱动指定     NL80211_IFTYPE_ADHOC independent BSS member,各个无线主机之间对等交换数据     NL80211_IFTYPE_STATION managed BSS member   NL80211_IFTYPE_AP 接入点,通常一端通过有线

《ZigBee Wireless Networking》学习笔记【1】

《ZigBee Wireless Networking》这本书对ZigBee技术阐释地比较全面,强烈推荐各位同仁阅读! 这本书的电子版请点击下面链接下载: http://yunpan.cn/cg7SjbsXsM79r   访问密码0821 1,下图是该书中对ZigBee,Wifi,蓝牙等无线通讯技术在通信距离和数据传输速率方面的比较:    从上图可以看出,ZigBee的通信

Wireless Network(百练,POJ)

题目链接: http://bailian.openjudge.cn/tm2019/F/ 2236 -- Wireless Network 题面描述: 思路: 这题开了10s,所以可以暴力点,每次修复一个点,就将该点相连的那些边建出来,总的时间复杂度为: O(nm)。关键在于如何判定两个点是否是连通的。 刚开始我直接暴力DFS,发现T了,可能是用了DFS之后导致整个题的常数有点大。

无线:wireless

第一节:无线链路和网络特征 无线链路特征 与有线链路的重要差别表现在: 衰减的信号强度:decreased signal strength来自其他信号源的干扰:interference from other sources多路径传输:multipath propagation(无线电磁波信号在物体表面和地面反射,到达目标端的时间会有轻微的差别,让信号变得模糊)SNR:signal-to-noi

CarPlay wired连接与wireless连接相互切换

在CarPlay系列的前面博客中我分别对CarPlay的wired(USB)连接方案和wireless(蓝牙+Wi-Fi)连接方案作了介绍,在这篇博客中我主要介绍两种连接方案的切换。         首先,要求车载设备对CarPlay的wired(USB)和wireless(蓝牙+Wi-Fi)两种连接方案都支持,并且USB线已连接到Apple设备。         对于wirel

CarPlay wireless(蓝牙+WiFi)连接方案(Wi-Fi部分)

这篇博客是继上一篇CarPlay wireless(蓝牙+WiFi)连接方案(蓝牙部分)的第二部分:Wi-Fi部分。在这篇博客中我主要是针对CarPlay over wireless方案中的Wi-Fi部分做介绍。         在Wi-Fi方面,车载设备工作在AP模式下,Apple设备作为STA连接到车载设备(AP)。首先,在蓝牙进行Carplay相关交互前,车载设备的Wi-Fi已经工作在A

CarPlay wireless(蓝牙+WiFi)连接方案(蓝牙部分)

在这篇博客中我将介绍我的CarPlay系列的第三篇博客:基于wireless(蓝牙+WiFi)的CarPlay连接方案。         在苹果公司推出基于wired(USB)的CarPlay连接方案后(在我的上一篇博客中已对CarPlay的USB的连接方案做过介绍,这里就不介绍了),接下来苹果公司又推出了基于wireless(蓝牙+WiFi)的CarPlay连接方案。

poj 并查集 - 2236 Wireless Network

并查集题目,并的意思就是将两个不同类别的集合合并到一起,类似于两棵树合并;查的意思就是找到这个点所属集合的根节点。基本上并查集题目都是在大体架构上面加一些东西即可。并查集代码模板在这里点击打开链接 现在n台之间有距离的电脑,只有距离小于d的才能连接,我们需要修复他们,让彼此之间可以互相连接。 这一次我们在并查集模板里面加入ranks数组用来记录该节点的修复情况,在union_set时,如果两台

cfg80211的kernel架构(基于Linux 3.08)之sta 201

大致框架 http://blog.chinaunix.net/uid-27167114-id-3783603.html 2, 几个主要流程 a) malloc & init(softmac) 内存分布 struct wiphy struct ieee80211_local Driver private class 结构体关