
Linux内核之网络设备驱动
文章平均质量分 74
网络设备驱动
qxqxa
meizuo
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
网络设备驱动的接口
net_device的生成和成员的赋值可由alloc_netdev来生成一个net_device结构体,对其成员赋值并返回该结构体的指针。第一个参数为设备私有成员的大小,第二个参数为设备名,第三个参数为net_device的setup()函数指针,第四、五个参数为要分配的发送和接收子队列的数量。setup()函数接收的参数也为struct net_device指针,用于预置net_device成员的值setup函数一般就是初始化net_device的一些成员。原创 2024-11-22 16:36:13 · 382 阅读 · 1 评论 -
iw添加wlan0导致crash问题分析
nl80211_send_iface的wdev这个参数为空指针;看看nl80211_new_interface调用nl80211_send_iface之前,是怎么给wdev赋值的,如下述代码是从rdev_add_virtual_intf获取wdev这个wireless_dev结构体;也就是要找到这个函数为什么返回空指针。rdev_add_virtual_intf调用的是cfg80211_registered_device的ops成员的add_virtual_intf函数指针。会产生如下panic内容。原创 2024-11-20 09:54:27 · 494 阅读 · 0 评论 -
MDIO时序分析
也被称作MII管理接口(MII Management Interface),包括MDC和MDIO两条信号线。MDIO是一个PHY的管理接口,用来读/写PHY的寄存器,以控制PHY的行为或获取PHY的状态,MDC为MDIO提供时钟MDIO是双向的,只支持一个MAC连接最多32个PHY的连接方式,且MAC作为master,PHY作为slave。在写PHY寄存器的时候,由MAC驱动MDIO向PHY写入数据;在读PHY寄存器时,前半段由MAC驱动发送寄存器地址,后半段由PHY驱动回复寄存器的值。原创 2024-08-16 15:13:57 · 1253 阅读 · 0 评论 -
YT8531调试记录
还是从设备树,mac驱动,mac驱动对mdio总线的注册,phy驱动 ,phy的datasheet,cpu的datasheet 几个方面来看来看0.确认供电,以及phy的地址(一般会有多个地址,根据相关引脚电平可配置)1.确认reset的有效电平2.确认IO的有效电平3.确认phy-mode,以及它的pinctrl的复用情况 (cat /sys/kernel/debug/pinctrl/pinctrl-handles 看current state)原创 2024-03-26 09:45:35 · 3863 阅读 · 0 评论 -
mdio总线框架概述
比如这个emac_mdio_init,去到emac节点里找到“mdio-bus”这个属性,然后申请一个mii成员,将emac驱动里面实现的成员函数赋值给mii的成员,然后再通过of_mdiobus_register,将拿到的这个mdio-bus节点,去注册总线和挂在上面的设备。简单看下mdio的初始化干了什么,主要就是实现mdio的读写函数,以及对挂在mdio总线的设备就,比如phy,switch设备进行创建和注册。注册mdio总线,后续的phy设备都会在这个总线下面。设备注册后,就是跟驱动的匹配了。原创 2023-11-23 22:59:52 · 1432 阅读 · 0 评论 -
详解PHY设备驱动的工作原理
不管什么驱动,简单的说:我们总是按照设备-驱动-总线的方式去看。原创 2024-01-14 11:29:30 · 1211 阅读 · 0 评论 -
cfg80211是怎么配置无线设备的AP的?
cfg80211 是 Linux 内核中一个用于无线网络的配置和管理的子系统,它为多个无线网络驱动提供了一个统一的接口,以便于无线设备的配置和操作。cfg80211 的设计目标是提供一个简化的管理和配置无线设备的框架,同时支持多种无线设备的标准和功能,其在内核中的/net/wireless/core.c文件会对wifi使用的cfg80211进行初始化。等通过Netlink 套接字和构建消息来与内核空间进行交互。当启动 AP 模式时,hostapd会将请求发送到内核,内核接收并调用cfg80211的。原创 2024-09-30 11:35:28 · 1607 阅读 · 0 评论 -
简述网络设备驱动的结构
网络设备是完成用户数据包在网络媒介上发送和接收的设备,它将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议。Linux网络设备驱动程序的体系结构如下图所示,从上到下可以划分为4层,依次为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层以及网络设备与媒介层,这4层的作用如下所示。原创 2024-11-07 16:57:41 · 697 阅读 · 0 评论