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

cfg80211与mac80211交互解析
本文详细介绍了Linux无线网络堆栈中cfg80211模块的功能与工作流程,解释了cfg80211如何通过netlink与iw交互,以及它与mac80211之间的交互机制。cfg80211负责无线设备的配置管理,而mac80211则处理MAC层功能。两者通过cfg80211_ops结构体进行通信,实现了从用户空间到无线设备的指令传递。

目录

1,什么是cfg80211?wiphy又是什么?

2,cfg80211工作流程是什么?

3,cfg80211如何通过netlink与iw进行交互?

4,cfg80211怎么与mac80211进行交互?

5,总结


1,什么是cfg80211?wiphy又是什么?

cfg80211:用于对无线设备进行配置管理。cfg80211&nl80211基于消息机制,使用netlink接口。

wiphy:无线网络设备驱动使用cfg80211需要硬件设备在cfg80211中实现注册。实现注册就要定义一系列的硬件功能描述的结构体。每个设备的基础性结构体是wiphy,设备连接到系统是,都要使用。每个wiphy有0个,1个或者许多个虚拟接口相关联。

2,cfg80211工作流程是什么?

static int __init cfg80211_init(void)
{
    //注册网络命名空间
    register_pernet_device(&cfg80211_pernet_ops);

    //注册ieee80211_class类
    wiphy_sysfs_init();
    //将class注册到内核中,同时会在/sys/class/下创建class对应的节点
    --->class_register(&ieee80211_class); 

    //注册网络通知,以接收网络事件,以通知链的方式
    register_netdevice_notifier(&cfg80211_netdev_notifier);

    //注册netlink“nl80211”,其操作为nl80211_ops
    nl80211_init();
    --->genl_register_family(&nl80211_fam);
    //在netlink_register链上注册一个回调函数,notifier机制是子系统之间通信手段,
    //netlink_register链上的子系统会检测用户态socket的连接状况
    //如果发生改变则通知运行回调函数
    --->netlink_register_notifier(&nl80211_netlink_notifier);

    //创建sys/class/ieee80211目录
    ieee80211_debugfs_dir = debugfs_create_dir("ieee80211", NULL);
    regulatory_init();
 
    //创建名为“cfg80211”的内核线程
    cfg80211_wq = alloc_ordered_workqueue("cfg80211", WQ_MEM_RECLAIM);
}

3,cfg80211如何通过netlink与iw进行交互?

nl80211_init()之后,通过nl80211_ops结构体实现与CMD关联,如iw发送消息NL80211_CMD_GET_POWER_SAVE,cfg80211就执行nl80211_get_power_save()来进行下一步操作。

//关键结构体
static __genl_const struct genl_ops nl80211_ops[] = {
	{
		.cmd = NL80211_CMD_GET_WIPHY,
		.doit = nl80211_get_wiphy,
		.dumpit = nl80211_dump_wiphy,
		.done = nl80211_dump_wiphy_done,
		.policy = nl80211_policy,
		/* can be retrieved by unprivileged users */
		.internal_flags = NL80211_FLAG_NEED_WIPHY |
				  NL80211_FLAG_NEED_RTNL,
	},
...
...
	{
		.cmd = NL80211_CMD_ABORT_SCAN,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值