转至:http://blog.csdn.net/robertsong2004/article/details/38898651

关于 cfg80211

cfg80211是Linux 802.11配置API。 cfg80211用于取代Wireless-Extensions。 nl80211用来配置一个cfg80211设备,用于内核< - >用户空间之间的通信。 Wireless extensions 现在处于维护模式,将不会添加新的功到它上面,我们只修复bug。cfg80211现在与wireless-extensions是完全特性兼容的,它实际上有更多的功能,这些功能wireless extension根本是没有的,而且以后也不会有。当实现一个cfg80211驱动时,仍然会通过CONF​​IG_CFG80211_WEXT为你自动提供wireless extensions的支持,不再需要无线扩展的发行版可以删除它,我们也鼓励他们这样做。 cfg80211还提供了完整的regulatory支持,这是通过wireless-regdb 和CRDA的使用来实现的。

所有新的Linux无线驱动程序应该面向fullmac设备的cfg80211或softmac设备的mac80211编程。

cfg80211 驱动编程

我们现在有一些cfg80211驱动,一个完整的cfg80211驱动的很好的例子是Atheros ath6kl驱动程序。 取代之前的wext ioctls 编程,你现在通过设置cfg80211回调和wiphy结构体来告知cfg80211其设备信息。

下面是一个关于 ath6kl cfg80211_ops的例子:

static struct cfg80211_ops ath6kl_cfg80211_ops = {
        .add_virtual_intf = ath6kl_cfg80211_add_iface,         //. 结构体初始化
        .del_virtual_intf = ath6kl_cfg80211_del_iface,
        .change_virtual_intf = ath6kl_cfg80211_change_iface,
        .scan = ath6kl_cfg80211_scan,
        .connect = ath6kl_cfg80211_connect,
        .disconnect = ath6kl_cfg80211_disconnect,
        .add_key = ath6kl_cfg80211_add_key,
        .get_key = ath6kl_cfg80211_get_key,
        .del_key = ath6kl_cfg80211_del_key,
        .set_default_key = ath6kl_cfg80211_set_default_key,
        .set_wiphy_params = ath6kl_cfg80211_set_wiphy_params,
        .set_tx_power = ath6kl_cfg80211_set_txpower,
        .get_tx_power = ath6kl_cfg80211_get_txpower,
        .set_power_mgmt = ath6kl_cfg80211_set_power_mgmt,
        .join_ibss = ath6kl_cfg80211_join_ibss,
        .leave_ibss = ath6kl_cfg80211_leave_ibss,
        .get_station = ath6kl_get_station,
        .set_pmksa = ath6kl_set_pmksa,
        .del_pmksa = ath6kl_del_pmksa,
        .flush_pmksa = ath6kl_flush_pmksa,
        CFG80211_TESTMODE_CMD(ath6kl_tm_cmd)
#ifdef CONFIG_PM
        .suspend = __ath6kl_cfg80211_suspend,
        .resume = __ath6kl_cfg80211_resume,
#endif
        .start_ap = ath6kl_start_ap,
        .change_beacon = ath6kl_change_beacon,
        .stop_ap = ath6kl_stop_ap,
        .del_station = ath6kl_del_station,
        .change_station = ath6kl_change_station,
        .remain_on_channel = ath6kl_remain_on_channel,
        .cancel_remain_on_channel = ath6kl_cancel_remain_on_channel,
        .mgmt_tx = ath6kl_mgmt_tx,
        .mgmt_frame_register = ath6kl_mgmt_frame_register,
        .sched_scan_start = ath6kl_cfg80211_sscan_start,
        .sched_scan_stop = ath6kl_cfg80211_sscan_stop,
};

然后你通过指定cfg80211 ops分配wiphy并填写wiphy。

欲了解更多详情,请参阅cfg80211.h,作为一个驱动程序的示例,您可以阅读ath6kl。

Regulatory

Linux wireless regulatory 文档:

  • Addressing vendor concerns

  • Regulatory statement by developer on responsibility

  • Linux wireless regulatory documentation

  • Regulatory processing rule documentation

  • CRDA documentation

其他文档

  • Johannes Berg's presentation (out of date!)

cfg80211 文件和内核文档

  • include/net/cfg80211.h (kerneldoc)

  • cfg80211 kerneldoc warnings

关于cfg80211相关推荐

  1. wifi底层学习之路:二,无线配置管理服务cfg80211

    目录 1,什么是cfg80211?wiphy又是什么? 2,cfg80211工作流程是什么? 3,cfg80211如何通过netlink与iw进行交互? 4,cfg80211怎么与mac80211进行 ...

  2. [RK3288][Android6.0] WiFi之cfg80211知识点小结

    Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 概念: cfg80211是Linux 802.11用于管理配置的一套API,它是用户和驱动之间的桥 ...

  3. cfg80211 subsystem中的cfg80211_ops

    每个无线设备和每个无线虚拟接口都要提供一组配置操作和功能操作,这些操作都由用户空间激发,进而调用驱动操作,每一个操作的执行都是在操作结构体重分开描述和关联. 结构体struct cfg80211_op ...

  4. cfg80211 subsystem中的wiphy

    无线网络设备驱动使用cfg80211需要硬件设备在cfg80211中实现注册.实现注册就要定义一系列的硬件功能描述的结构体. 每个设备的基础性结构体是wiphy,设备连接到系统时,都要使用.每个wip ...

  5. mac80211/cfg80211模块编译安装

    下载kernel wget http://mirrors.163.com/kernel/v6.x/linux-6.0.9.tar.xz 解压kernel tar -Jxvf linux-6.0.9.t ...

  6. WiFi cfg80211

    WiFi 学习资料整理->  Android WiFi 目录 WiFi 学习资料整理->  Android WiFi 简介 2. cfg80211驱动 2.1 Kernel配置

  7. 网卡驱动学习一、wireless基础知识(cfg80211 mac80211 nl80211)

    1. 基本概念 cfg80211: 用于对无线设备进行配置管理.与FullMAC, mac80211和nl80211一起工作.(Kernel态) mac80211: 是一个driver开发者可用于为S ...

  8. linux wifi-tools,Linux下WiFi工具wireless_tools交叉编译,及其支持生成iwconfig使用的内核配置...

    内核的配置: General setup  ---> Kernel compression mode (LZMA)  --->LZMA [*] Networking support  -- ...

  9. 深入理解 wpa_supplicant(四)

    本文为<深入理解Android Wi-Fi.NFC和GPS卷>读书笔记,Android源码为Android 5.1 android-5.1/external/wpa_supplicant_ ...

最新文章

  1. std::transform使用
  2. 软件测试面试问答大全(2)
  3. 2017辽宁冬令营-4.蚂蚁
  4. LVS的简单示例(一)
  5. Qt 【遍历文件夹文件,为listwidgetItem设置图标】
  6. Envi和ArcGIS软件打开和处理.NC4数据
  7. ubuntu中mysql安装失败
  8. vs2017html乱码,vs2017引用vue组件中文乱码
  9. Eclipse安装php插件phpeclipse(转)
  10. java面向对象数组实现家庭收支记账软件_golang实战--家庭收支记账软件(面向过程)...
  11. 古筝d调变降e调怎么办_为什么古筝总要调音、还总调不好?
  12. bash: scp: command not found
  13. 安装MATLAB时报错:提取错误 安装dsp_doc_en_common时检测到以下错误:某安装路径(指定的路径无效)
  14. 这些操作系统的概念,保你没听过!
  15. Windows Phone7屏幕方向与常用控件
  16. 读取xml文件转成ListT对象的两种方法
  17. Kaggle(入门)
  18. micro-ros arduino esp32 ros2 笔记
  19. 音视频FLV合成实战
  20. poi tl 判断空值_poi-tl

热门文章

  1. vim的2个高亮匹配函数
  2. Thread学习(一)
  3. SWMM从入门到实践教程 01 SWMM软件介绍
  4. jQuery入门jQuery API-1
  5. Axure RP8 注册码
  6. 耿建超英语语法---非谓语动词作宾语与表语
  7. leetcode记录汇总
  8. 【图像压缩】自回归模型 《Joint Autoregressive and Hierarchical Priors for Learned Image Compression》
  9. 合并两个有序数组(java算法)
  10. android AdapterView 关键方法分析