网络设备之pci_device_id
标准PCI设备都有一个配置寄存器,用来存储各种参数;
/* pci设备配置寄存器 */
struct pci_device_id {
/* 厂商id,设备id */
__u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/
/* 子系统厂商id,子系统设备id */
__u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
/* 类,类掩码,使驱动程序可以指定支持某一种pci设备 */
__u32 class, class_mask; /* (class,subclass,prog-if) triplet */
/* 保存于设备相关的私有信息 */
kernel_ulong_t driver_data; /* Data private to the driver */
};
以e100为例,其支持多种设备,不同设备的pci_device_id初始化后存放在e100_id_table[]数组中;
e100_driver操作中的id_table字段会引用该数组;
/* e100的pci设备信息结构列表 */
#define INTEL_8255X_ETHERNET_DEVICE(device_id, ich) {\
PCI_VENDOR_ID_INTEL, device_id, PCI_ANY_ID, PCI_ANY_ID, \
PCI_CLASS_NETWORK_ETHERNET << , 0xFFFF00, ich }
static const struct pci_device_id e100_id_table[] = {
INTEL_8255X_ETHERNET_DEVICE(0x1029, ),
INTEL_8255X_ETHERNET_DEVICE(0x1030, ),
INTEL_8255X_ETHERNET_DEVICE(0x1031, ),
INTEL_8255X_ETHERNET_DEVICE(0x1032, ),
INTEL_8255X_ETHERNET_DEVICE(0x1033, ),
INTEL_8255X_ETHERNET_DEVICE(0x1034, ),
INTEL_8255X_ETHERNET_DEVICE(0x1038, ),
INTEL_8255X_ETHERNET_DEVICE(0x1039, ),
INTEL_8255X_ETHERNET_DEVICE(0x103A, ),
INTEL_8255X_ETHERNET_DEVICE(0x103B, ),
INTEL_8255X_ETHERNET_DEVICE(0x103C, ),
INTEL_8255X_ETHERNET_DEVICE(0x103D, ),
INTEL_8255X_ETHERNET_DEVICE(0x103E, ),
INTEL_8255X_ETHERNET_DEVICE(0x1050, ),
INTEL_8255X_ETHERNET_DEVICE(0x1051, ),
INTEL_8255X_ETHERNET_DEVICE(0x1052, ),
INTEL_8255X_ETHERNET_DEVICE(0x1053, ),
INTEL_8255X_ETHERNET_DEVICE(0x1054, ),
INTEL_8255X_ETHERNET_DEVICE(0x1055, ),
INTEL_8255X_ETHERNET_DEVICE(0x1056, ),
INTEL_8255X_ETHERNET_DEVICE(0x1057, ),
INTEL_8255X_ETHERNET_DEVICE(0x1059, ),
INTEL_8255X_ETHERNET_DEVICE(0x1064, ),
INTEL_8255X_ETHERNET_DEVICE(0x1065, ),
INTEL_8255X_ETHERNET_DEVICE(0x1066, ),
INTEL_8255X_ETHERNET_DEVICE(0x1067, ),
INTEL_8255X_ETHERNET_DEVICE(0x1068, ),
INTEL_8255X_ETHERNET_DEVICE(0x1069, ),
INTEL_8255X_ETHERNET_DEVICE(0x106A, ),
INTEL_8255X_ETHERNET_DEVICE(0x106B, ),
INTEL_8255X_ETHERNET_DEVICE(0x1091, ),
INTEL_8255X_ETHERNET_DEVICE(0x1092, ),
INTEL_8255X_ETHERNET_DEVICE(0x1093, ),
INTEL_8255X_ETHERNET_DEVICE(0x1094, ),
INTEL_8255X_ETHERNET_DEVICE(0x1095, ),
INTEL_8255X_ETHERNET_DEVICE(0x10fe, ),
INTEL_8255X_ETHERNET_DEVICE(0x1209, ),
INTEL_8255X_ETHERNET_DEVICE(0x1229, ),
INTEL_8255X_ETHERNET_DEVICE(0x2449, ),
INTEL_8255X_ETHERNET_DEVICE(0x2459, ),
INTEL_8255X_ETHERNET_DEVICE(0x245D, ),
INTEL_8255X_ETHERNET_DEVICE(0x27DC, ),
{ , }
};
MODULE_DEVICE_TABLE(pci, e100_id_table);
网络设备之pci_device_id的更多相关文章
- OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)
上一节我们启用了 Open vSwitch,本节将查看当前的网络状态并介绍 Open vSwitch 涉及的各种网络设备 初始网络状态 查看一下当前的网络状态. 控制节点 ifconfig 显示控制节 ...
- linux网络设备驱动程序
4.linux网络设备驱动程序体系结构 -------------------------------------- | 数据包发送 | 数据包接收 | ----->网络协议接口层 | dev_ ...
- 谢欣伦 - OpenDev原创教程 - 网络设备查找类CxNetworkHostFind & CxNetworkAdapterFind
这是一个精练的网络设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxNetworkHostFind的使用如下: void ...
- 从veth看虚拟网络设备的qdisc
背景 前段时间在测试docker的网络性能的时候,发现了一个veth的性能问题,后来给docker官方提交了一个PR,参考set tx_queuelen to 0 when create veth d ...
- 用OSSIM轻松分析网络设备日志
用OSSIM轻松分析网络设备日志 基于插件的日志收集与处理模式,使得用户可以轻松的利用OSSIM来分析异构网络环境下的各种网络设备日志,下面展示一些硬件设备日志的实例,我们在RAW LOG界面里,搜索 ...
- xamarin误删vEthernet(internal Ethernet Port Windows Phone Emulator) 网络设备的处理。
昨天一不小心误删了xamarin 开发环境下的虚拟设备网络设备.名称为:vEthernet(internal Ethernet Port Windows Phone Emulator).导致原来能正确 ...
- CCNA网络工程师学习进程(4)网络设备的基本配置和详细介绍
网络设备(路由器.交换机和防火墙等)与计算机一样需要操作系统.网络设备采用专用的操作系统,统称为IOS(Internetwork Operating System,网络操作系统). ( ...
- CCNA网络工程师学习进程(2)基本的网络设备
在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...
- Ansible用于网络设备管理 part 0 安装和登录网络设备
真实在是累了,但是又怕第二天早上又忘掉,在这先大概写写. 安装: http://www.tecmint.com/install-and-configure-ansible-automation-too ...
随机推荐
- JavaScript 语句标识符,变量周期,常见的HTML事件
语句 描述 break 用于跳出循环. catch 语句块,在 try 语句块执行出错时执行 catch 语句块. continue 跳过循环中的一个迭代. do ... while 执行一个语句块, ...
- 使用bat执行java项目
前提:java项目要有main方法 类似写法如下: set JAVA_HOME=C:\jdk1.6 set LIB_HOME=. set JAVA_JAR=. set JAVA_JAR=%JAVA_J ...
- Spring Boot 最简单的HelloWorld
创建一个Spring Boot,可以直接使用构建工具(Maven或Gradle)创建,也可以使用spring.io网站创建,一般会选择使用spring.io创建 使用IDEA创建一个Spring Bo ...
- BZOJ 1202 狡猾的商人(带权并查集)
给出了l,r,w.我们就得知了s[r]-s[l-1]=w.也就是说,点l-1和点r的距离为w. 于是可以使用带权并查集,定义dis[i]表示点i到根节点的距离.查询和合并的时候维护一下就OK了. 如果 ...
- BZOJ 1082 栅栏(二分+DFS剪枝)
首先,长度短的木板一定比长度长的木板容易得到,因此若要得到最多的木板,它们必定是所有木板中最短的——可以对木板排序后二分答案(用k表示). 判断是否合法就用搜索,但数据有点大,要用到两个剪枝.一个是若 ...
- ARC077C pushpush 递推
---题面--- 题解: 貌似一般c题都是递推... 观察到最后一个插入的数一定在第一个,倒数第二个插入的数一定在倒数第一个,倒数第三个插入的数一定在第2个,倒数第四个插入的数一定在倒数第2个…… O ...
- 存储引擎(Mysql)
最常使用的2种存储引擎:1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam.每个MyISAM在磁盘上存储成三个文件.文件名都和表名相同, ...
- BZOJ1202 [HNOI2005]狡猾的商人 【并查集】
1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4180 Solved: 2015 [Submit][S ...
- java 实验四
北京电子科技学院(BESTI) 实 验 报 告 课程: Java 班级:1352 姓名:黄卫 学号:201352221 成绩: ...
- DOM通过ID或NAME获取值
DOM通过ID或NAME获取值 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...