Linux SDIO-WiFi 协议栈

Linux SDIO-WiFi 协议栈

  • 1. 简介
  • 2. BCMDHD
    • 2.1 WiFi模组
    • 2.2 驱动初始化(dhd_module_init)
  • 3. Broadcom fullmac WLAN

1. 简介

2. BCMDHD

  • BCMDHD:Broadcom Dongle Host Driver
  • SIP:System In Package

2.1 WiFi模组

在这里插入图片描述

2.2 驱动初始化(dhd_module_init)

  • dhd_module_init
dhd_module_init =>   # dhd_linux.c (drivers\net\wireless\bcmdhd) dhd_wifi_platform_register_drv =>wifi_ctrlfunc_register_dr =>dhd_wifi_platform_load => # 对于不同接口,包括usb,sdio,pcie的wifi进行加载dhd_wifi_platform_load_sdio =>  # 主要是给所有adapters上电,然后匹配funcdhd_bus_register => # 主要是注册sdio驱动sdio_register_driver(&dummy_sdmmc_driver);# 通过总线驱动sdio_bus_match匹配,# 主要匹配三个参数ids->class || ids->vendor || ids->device。# 匹配成功后调用bcmsdh_sdmmc_probe 》 sdioh_probe 》 bcmsdh_probe bcmsdh_register =>  # 注册bcmsdh_driver_t dhd_sdio
  • dhd_sdio驱动
static bcmsdh_driver_t dhd_sdio = {dhdsdio_probe,dhdsdio_disconnect,dhdsdio_suspend,dhdsdio_resume
};
  • dhdsdio_probe
dhdsdio_probe =>dhd_attach =>  #  绑定到dhd/OS/网口, 对DHD管理的每个硬件(狗)实例调用一次wl_cfg80211_attach # 把设备注册到cfg80211,操作函数是wl_cfg80211_ops, 注册到rfkillwl_iw_attach       # 加入到iw里面dhd_dpc_thread     # 启动延迟函数,也就是中断后半部dhd_rxf_thread     # 启动 网络包接收线程  dhd_attach_net =>dhd_register_if    # Register primary net device , 这里的need_rtnl_lock=truewl_cfg80211_net_attach # 加入到cfg80211里面,cfg80211是Linux 802.11用于管理配置的一套API,# 它是用户和驱动之间的桥梁,替代了WEXT,提供和802.11相关的功能

3. Broadcom fullmac WLAN

  • The brcm80211 drivers are included in the kernel. They are named brcmsmac for PCI cards and brcmfmac for SDIO devices.
  • SDIO设备驱动代码
drivers/net/wireless/broadcom/brcm80211/brcmfmac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/645147.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嬴图| ISO/IEC-GQL国际图语言标准发布,图技术开启新纪元

GQL作为继SQL之后的第二个数据库查询语言国际标准,近日正式发布。这标志着图技术开启新纪元——图时代即将到来! 同时,这也预示着将有越来越多的组织采用“图”来解决各种复杂问题,更意味着SQL系统与负载将逐渐转向GQL&#xff0…

注意力机制(三)(不同注意力机制对比)

​🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀《深度学习基础知识》 相关专栏: ⚽《机器学习基础知识》 🏐《机器学习项目实战》 🥎《深度学习项目实…

【Harmony3.1/4.0】笔记五

概念 本文综合row,column作为主要布局,结合image组件,text组件,textimput组件,button组件以及轮播布局搭建登录页面 效果图 ArkTS代码 //登录综合页面 Entry Component struct Five{//添加图片State imgs:Resource[…

C#:变量的更多内容

枚举:一种变量类型,用户定义一组可能的离散值,这些值可以用人们能理解的方式使用。 结构:一种合成的变量类型,由用户定义的一组其他变量类型组成。 数组:包含一种类型的多个变量,允许以索引方…

kubernetes中的附件组件Metrics-server与hpa资源实现对pod的自动扩容和缩容

一、概述 Metrics-Server组件目的:获取集群中pod、节点等负载信息; hpa资源目的:通过metrics-server获取的pod负载信息,自动伸缩创建pod; 二、安装部署 Metrics-Server组件 安装目的,就是给k8s集群安装top…

RustGUI学习(iced)之小部件(二):如何使用滑动条部件

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述…

基于springboot+vue的民法普及系统的设计与实现

1、系统演示视频(演示视频) 2、需要请联系

kafka部分partition的leader=-1修复方案整理

kafka部分partition的leader-1修复方案整理 1. 背景说明2. 修复测试2.1 创建正常的topic并验证生产和消费2.2 停止kafka模拟leader-12.3 修复parition2.4 修复完成验证生产消费是否恢复 3. 疑问和思考3.1 kafka在进行数据消费时,如果有partition的leader-1&#xff…

openEuler 22.03 LTS SP3(华为欧拉)一键安装 Oracle 11GR2 RAC(231017)

前言 Oracle 一键安装脚本,演示 openEuler 22.03 LTS SP3 一键安装 Oracle 11GR2 RAC(231017)过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地…

【结构型模型】享元模式

一、享元模式概述 享元模式定义:又叫蝇量模式,运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细…

备考2024年小学生古诗文大会:吃透10道历年真题和知识点(持续)

对上海小学生的小升初和各种评优争章来说,语文、数学、英语的含金量较高的证书还是很有价值和帮助的。对于语文类的竞赛,小学生古诗文大会和汉字小达人通常是必不可少的,因为这两个针对性强,而且具有很强的上海本地特色。 根据往…

IPEmotion轻松解决急停设备的控制与数据存储问题

一 背景 众所周知,急停操作在各种工业领域中都扮演着非常重要的角色。在一个个紧急情况下,及时采取急停操作可节省宝贵时间,避免人身伤害或设备损坏,降低安全风险,尤其是在新能源测试中,出于对高压电性能方…