首页 > 其他分享 >Qcom底层WIFI驱动简介(一)

Qcom底层WIFI驱动简介(一)

时间:2024-09-24 18:21:22浏览次数:3  
标签:set wlan ndo 简介 WIFI hdd Qcom 驱动 cfg80211


前言

前面以一些基本的WIFI操作为例子,讲解了上层的一些流程调用,这篇开始讲讲底层驱动的一些基本流程。包括驱动是如何初始化的,以及STR相关的驱动处理等。


一、CNSS2驱动简介

先从串口看一下编译出来的模块,在/vendor_dlkm/lib/modules路径下,可以看到以下相关ko模块:

-rw-r--r-- 1 root root   4414544 2009-01-01 00:00 cnss2.ko
...
-rw-r--r-- 1 root root 328085816 2009-01-01 00:00 qca_cld3_qca6390.ko
-rw-r--r-- 1 root root 392532288 2009-01-01 00:00 qca_cld3_qca6490.ko
-rw-r--r-- 1 root root 259933344 2009-01-01 00:00 qca_cld3_qcn7605.ko

通过lsmod命令也可以看到如下内容:

qca6490             10862592  0
cnss2                 356352  1 qca6490

不难看出,编译出来的文件主要是cnss2模块以及qca不同型号对应的模块,实际会根据具体芯片加载具体的qca驱动。
比如qca6490就是硬件对应使用的驱动,那么cnss2后面信息是记载的used by内容,也就是cnss2是被qca6490所使用的。
因此从上面信息可以看出来cnss应该是qca驱动的一个子模块,或者子系统。

为了更好的理解,再来看看官方的解释:
CNSS2为qcom的wlan驱动(qca)的一个子系统。驱动程序旨在将 PCIe 驱动程序打包,并在主机设备驱动程序级别中添加特殊的 Qualcomm WLAN 驱动程序功能,这在常见的 Linux 内核设备驱动程序中是不包含的。
CNSS2 是连接子系统软件 (CNSS) 的第二个版本,用于支持 qcacld3.0 主机驱动程序。

cnss2(Connectivity Subsystem driver 2.0)从他的名字来看,就是用于连接的子系统一个驱动。因为网卡芯片的接口不同,比如常见的PCIe,还有一些使用的是SDIO接口,也有使用USB接口的网卡。不同的接口意味着对应的处理也不同,那么作为网络驱动,Qcom将共通的部分作为主驱动,即qca,而对于不同接口以及不同芯片的处理剥离出来作为其子系统,即cnss
这样针对不同的芯片,不同的接口在处理上的差分我们就只需要关注cnss驱动即可。

二、QCA_CLD驱动简介

qcacld作为网络设备主驱动,那么通常网络设备需要注册的网络接口等都是在这里操作的,以及数据的发送和接收。

static const struct net_device_ops wlan_drv_ops = {
	.ndo_open = hdd_open,
	.ndo_stop = hdd_stop,
	.ndo_uninit = hdd_uninit,
	.ndo_start_xmit = hdd_hard_start_xmit,
	.ndo_fix_features = hdd_fix_features,
	.ndo_set_features = hdd_set_features,
	.ndo_tx_timeout = hdd_tx_timeout,
	.ndo_get_stats = hdd_get_stats,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
	.ndo_do_ioctl = hdd_ioctl,
#endif
	.ndo_set_mac_address = hdd_set_mac_address,
	.ndo_select_queue = hdd_select_queue,
	.ndo_set_rx_mode = hdd_set_multicast_list,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)
	.ndo_siocdevprivate = hdd_dev_private_ioctl,
#endif
};

除此之外,它还要负责接收netlink的消息,因此对应的cfg80211处理接口的注册也都是在这里实现的:

static struct cfg80211_ops wlan_hdd_cfg80211_ops = {
	.add_virtual_intf = wlan_hdd_add_virtual_intf,
	.del_virtual_intf = wlan_hdd_del_virtual_intf,
	.change_virtual_intf = wlan_hdd_cfg80211_change_iface,
	.change_station = wlan_hdd_change_station,
	.start_ap = wlan_hdd_cfg80211_start_ap,
	.change_beacon = wlan_hdd_cfg80211_change_beacon,
	.stop_ap = wlan_hdd_cfg80211_stop_ap,
	.change_bss = wlan_hdd_cfg80211_change_bss,
	.add_key = wlan_hdd_cfg80211_add_key,
	.get_key = wlan_hdd_cfg80211_get_key,
	.del_key = wlan_hdd_cfg80211_del_key,
	.set_default_key = wlan_hdd_cfg80211_set_default_key,
	.scan = wlan_hdd_cfg80211_scan,
	.connect = wlan_hdd_cfg80211_connect,
	.disconnect = wlan_hdd_cfg80211_disconnect,
...

三、总结

总的来说,通常网络设备的注册,网络设备接口的实现,以及通信等处理,都是在qcacld驱动中完成和处理的。
而关于具体芯片的接口注册和处理,以及芯片的电源控制,都是在cnss中完成的。

标签:set,wlan,ndo,简介,WIFI,hdd,Qcom,驱动,cfg80211
From: https://blog.csdn.net/IAYLBL/article/details/142487509

相关文章

  • Git 简介和基本使用方法
    什么是Git?Git是一个分布式版本控制系统,由LinusTorvalds于2005年创建。它设计用于管理和跟踪文件的变更,适用于各种规模的项目,从个人项目到大型开源项目。Git可以记录每个文件的修改历史,并且能够轻松地在不同版本之间进行切换。它还支持多人协作开发,可以方便地合并不同开发者的......
  • 无源蜂鸣器简介
        无源蜂鸣器是一种电子发声元件,主要由永磁体、线圈、振荡片和外壳等组成。它没有内置的振荡源,需要外部输入一定频率的信号才能发声。一、工作原理:    无源蜂鸣器的工作原理是利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜......
  • 代码管理系统简介与部署git、gitHub、gitLab
            在开发一个项目时,如果只有几十行代码或几百行代码时维护还算简单,但是当代码数量达到一定程度或两三个人共同开发一个项目时,就很容易会出现代码混乱、冲突、排错难等问题。当代码编写完成以后发现整个项目运行不了时,提交的代码也无法确认到责任人,导致维护项目时......
  • WiFi 6与5G:互补共生的黄金搭档
    目录一、技术概述1.1.Wifi61.1.1.高速率1.1.2.大容量1.1.3.低功耗1.1.4.低延迟1.1.5.更安全的连接1.2.5G1.2.1.高速率1.2.2.低时延1.2.3.大连接二、WiFi6和5G共关键技术分析2.1.OFDM及其优化技术2.1.1.OFDM技术原理2.1.2.5G中的OFDM优化技术2.1......
  • [Mysql]基础入门篇_关于数据库的简介_初识DQL语句
    @[TOC]文章目录何为数据库数据库类型数据库管理系统(本博主使用的是Mysql数据库)何为SQL准备工作及select查询操作的简单使用何为数据库数据库是一个有组织的数据集合,允许高效存储、管理和检索信息。它通过结构化的方式存储数据,通常使用数据库管理系统(DBMS)来执行操作,如......
  • 笛卡尔坐标张量简介7
    张量(tensor)这一术语最初是用来描述弹性介质各点应力状态的,后来发展成为力学和物理学的一个有力数学工具,目前力学方面的理论性文献都不同程度地这用了这一工具由坐标原点和三条不共面的标架直线构成的坐标系称为直线坐标系,如果三标架直线上的单位尺度相同,称为笛卡尔坐标系,否则称......
  • 要优化WiFi 7无线网卡的性能,可以通过调整注册表来实现。下面是一些常见的优化设置,可以
    要优化WiFi7无线网卡的性能,可以通过调整注册表来实现。下面是一些常见的优化设置,可以将其保存为.reg文件:CopyCodeWindowsRegistryEditorVersion5.00;优化WiFi7无线网卡设置[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]"TcpAckFreque......
  • 基于51单片机wifi智能大棚环境监测控制液晶显示设计
    1、前言        这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业设计项目......
  • 【虚拟化】虚拟化简介 | Hypervisor介绍
    目录一、什么是虚拟化?二、虚拟化的优点三、Hypervisor3.1Hypervisor概述3.2Hypervisor分类3.3Hypervisor与虚拟机协作技术路线(1)全虚拟化(2)硬件辅助虚拟化(3)半虚拟化一、什么是虚拟化虚拟化是一种能够更有效地利用物理计算机硬件的过程,是云计算的基础。虚拟化技术......
  • Seata简介
    Seata的架构TC(TransactionCoordintor)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或者回滚。TM:(TransactionManager)-事务管理器:定义全局事务的范围,开始全局事务,提交和回滚事务RM(ResourceManager)-资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态......