linux wireless子系统,Linux Wireless子系统初始化

1. cfg80211_init

• cfg80211_wq工作队列主要处理以下工作:

1) 清除:wireless_dev.cleanup_work

2) 扫描:cfg80211_registered_device.scan_done_wk

3) 事件:cfg80211_registered_device.event_work

• 注册netlink,其名为:"nl80211",其操作为:nl80211_ops

net/wireless/core.c

static int __init cfg80211_init(void)

{

int err;

// 注册网络命名空间

err = register_pernet_device(&cfg80211_pernet_ops);

if (err)

goto out_fail_pernet;

// 注册ieee80211_class类

err = wiphy_sysfs_init();

if (err)

goto out_fail_sysfs;

// 注册网络通知,以接收网络事件

err = register_netdevice_notifier(&cfg80211_netdev_notifier);

if (err)

goto out_fail_notifier;

// 注册netlink "nl80211",其操作为nl80211_ops

err = nl80211_init();

if (err)

goto out_fail_nl80211;

// 创建sys/class/ieee80211目录

ieee80211_debugfs_dir = debugfs_create_dir("ieee80211", NULL);

err = regulatory_init();

if (err)

goto out_fail_reg;

// 创建名为“cfg80211”的内核线程

cfg80211_wq = create_singlethread_workqueue("cfg80211");

if (!cfg80211_wq)

goto out_fail_wq;

return 0;

out_fail_wq:

regulatory_exit();

out_fail_reg:

debugfs_remove(ieee80211_debugfs_dir);

out_fail_nl80211:

unregister_netdevice_notifier(&cfg80211_netdev_notifier);

out_fail_notifier:

wiphy_sysfs_exit();

out_fail_sysfs:

unregister_pernet_device(&cfg80211_pernet_ops);

out_fail_pernet:

return err;

}

subsys_initcall(cfg80211_init);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值