Linux SDIO-WiFi 协议栈

news2024/11/17 0:25:14

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上电,然后匹配func
          dhd_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, 注册到rfkill
    wl_iw_attach       # 加入到iw里面
    dhd_dpc_thread     # 启动延迟函数,也就是中断后半部
    dhd_rxf_thread     # 启动 网络包接收线程  
  dhd_attach_net =>
    dhd_register_if    # Register primary net device , 这里的need_rtnl_lock=true
    wl_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.coloradmin.cn/o/1619986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

条件生成对抗网络(cGAN)在AI去衣技术中的应用探索

随着深度学习技术的飞速发展,生成对抗网络(GAN)作为其中的一个重要分支,在图像生成、图像修复等领域展现出了强大的能力。其中,条件生成对抗网络(cGAN)通过引入条件变量来控制生成模型的输出&am…

互联网大厂ssp面经,数据结构part3

1. 哈希表的原理是什么?如何解决哈希碰撞问题? a. 原理:通过哈希函数将每个键映射到一个唯一的索引位置,然后将值存储在对应索引位置的存储桶中。 b. 关键:将不同的键映射到不同的索引位置,以实现快速的插…

Spring Boot 集成 EasyExcel 3.x

Spring Boot 集成 EasyExcel 3.x Spring Boot 集成 EasyExcel 3.x 本章节将介绍 Spring Boot 集成 EasyExcel(优雅实现Excel导入导出)。 🤖 Spring Boot 2.x 实践案例(代码仓库) 介绍 EasyExcel 是一个基于 Java 的、…

社交的神奇好处你都知道吗?

聊天交友软件是人们日常生活中不可或缺的一部分,有些需要花费大量金钱才能享受完整的功能,但也有一些不需要花费金钱的聊天交友软件,如微信、QQ等。这些软件提供了多种交流方式,让用户可以方便地结识新朋友、扩大社交圈子&#xf…

基于SpringBoot的合家云社区物业管理平台 - 项目介绍

合家云社区物业管理平台 2.合家云需求&设计 2.1 项目概述 2.1.1 项目介绍 合家云社区物业管理平台是一个全新的 ”智慧物业解决方案“,是一款互联网的专业社区物业管理系统。平台通过社区资产管理、小区管理、访客管理、在线报修、意见投诉等多种功能模块&a…

游戏陪玩系统app

游戏陪玩系统APP为用户提供了一个便捷的平台,让他们能够轻松找到合适的陪玩者,一同享受游戏的乐趣。以下是对您提到的功能的详细解释: 游戏约玩: 在陪玩APP上,用户可以浏览陪玩者的信息,包括他们的游戏技能…

YOLOv8 训练自己的数据集(20240423)

环境搭建请参考:Win10 搭建 YOLOv8 运行环境(20240423)-CSDN博客 环境测试请参考:本地运行测试 YOLOv8(20240423)-CSDN博客 一、使用 YOLOv8 的 coco128 数据集熟悉一下如何训练和预测 1.1、在项目根目录…

新的ChatGPTPlus(GPT4)支付渠道?怎么付费充值?

GPT4多少钱一个月 GPT4一个20美元。作为最优秀的语言模型之一,GPT-4为您带来无与伦比的生产力体验。 除了出色的自然语言处理能力,GPT-4还引入了创新的代码解释器功能和强大的插件扩展,进一步提升了您的工作效率和创造力。 代码解释器功能&…

excel一列同乘同一个数

excel一列同乘同一个数 第一种方法(excel本身功能) 在空白区域输入要乘以的数,比如0.5 右键选择复制 选中需要乘以的单元格,选择性粘贴 点击乘,选择确定 删除0.5后也不会改变值 第二种方法(方方格子…

LLama的激活函数SwiGLU 解释

目录 Swish激活函数 1. Swish函数公式 LLaMA模型中的激活函数 1. SwiGLU激活函数 2. SwiGLU激活函数的表达式 3. SwiGLU激活函数的优势 Swish激活函数 Swish是一种激活函数,其计算公式如下: 1. Swish函数公式 Swish(x) x * sigmoid(x) 其中&am…

开源协议的对比和商业上的安全使用

开源协议的对比和商业上的安全使用 开源组件是:“任何人都可以自由使用、更改和共享(以修改或未修改的形式)的软件”。当今企业依靠开源来加速开发、降低成本和推动创新。对开放源码的糟糕管理可能会使组织面临安全、法律和操作风险。 使用…

【Python】爬虫-基础入门

目录 一、什么是爬虫 二、爬虫的主要用途 三、学会爬虫需要掌握的技能 四、爬虫使用的语言 五、编写爬虫需要的库,以python为例 六、爬虫示例-python 示例一 示例二 示例三 一、什么是爬虫 爬虫,又称网络爬虫或网页爬虫,是一种用来自…

解读DreamFusion:一个引人注目的AI生成内容领域的项目

什么是DreamFusion? DreamFusion使用2D扩散模型来实现文本到3D生成的任务。这项技术在ICLR 2023上获得了杰出论文奖,并成为了许多科研工作的基准。 简而言之,DreamFusion的目标是在没有3D数据监督的情况下,利用已有的2D生成模型根…

11 JavaScript学习:事件

Html事件 HTML 中有很多事件可以用来与用户交互&#xff0c;以下是一些常见的 HTML 事件及其详细解释和举例&#xff1a; click 事件&#xff1a;当用户点击元素时触发。 <button onclick"myFunction()">点击我</button>dblclick 事件&#xff1a;当用…

【二】ECharts----【异步加载数据】

目录 零.前言 一.异步加载数据 1.1简介 1.1.1一个使用$.get()获取json数据并加载的例子 1.2数据的动态更新【重要】 1.2.1一个使用random随机生成的动态更新 完整代码如下&#xff1a; 二.加载中动画 零.前言 【一】ECharts----【基本概念、基本实例】-CSDN博客 一.…

锐捷网络闪耀高博会:智慧教育数字基座引领教育数字化新浪潮

4月15日,第61届中国高等教育博览会(简称“高博会”)在福州盛大开幕,在这次教育高端装备展示、教学改革成果交流、校企云集的行业盛会上,围绕构建智慧教育数字基座,锐捷网络携全场景智慧教育方案亮相,极简以太全光网、高校桌面云、5G多网融合等创新方案纷纷登场,吸引了众多观众驻…

护眼台灯什么牌子好一点?护眼灯合格的品牌分享

护眼台灯作为对抗视力挑战的一种方法&#xff0c;逐渐赢得了众多家长的青睐。这些台灯利用尖端光学技术&#xff0c;发出柔和且无刺激的照明&#xff0c;有助于保护眼睛不受伤害。它们不但可以调节亮度和色温&#xff0c;打造一个舒适且自然的阅读环境&#xff0c;还有利于提升…

PHP命令执行漏洞CVE-2024-1874复现

CVE-2024-1874 PHP命令执行漏洞 影响版本 Affected versions < 8.1.28 < 8.2.18 < 8.3.5 Patched versions 8.1.28 8.2.18 8.3.6 POC 创建一个文件test.php <?php $descriptorspec [STDIN, STDOUT, STDOUT]; $proc proc_open(["test.bat", "\&…

zabbix监控内容

一、自定义监控内容 1.1 在客户端自定义key 1.1.1 查看当前用户 1.1.2 创建zabbix监控项配置文件&#xff0c;启动服务 1.1.3 服务端验证测试 1.2 在Web界面创建自定义监控模板 1.2.1 创建模板 1.2.2 创建应用集&#xff08;用于管理监控项&#xff09; 1.2.3 创建监控项 1.2.4…

C++|模板进阶(非类型模板参数+特化)

目录 一、非类型模板参数 二、模板特化 2.1函数模板特化 2.2类模板特化 2.2.1全特化 2.2.2偏特化 三、模板不支持分离编译 四、模板优缺点 一、非类型模板参数 在模板初阶中&#xff0c;所学习的模板的参数是类型形参&#xff0c;但其实还有非类型形参。 类型形参&am…