【摘要】前文对网络驱动例子进行一个简单的梳理总结,本文贴出 net_device 的数据结构以及一些驱动中常用的数据结构。
1、网络设备驱动结构
下图摘自http://blog.chinaunix.net/uid-20672257-id-3147768.html
1)、网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit...
分类:
Web程序 时间:
2015-07-30 23:25:15
阅读次数:
393
Linux 网卡驱动学习(缓存描述符 Buffer Description)。BD 描述符包含了报文很多信息,比如长度,报文的缓存地址等等。...
分类:
系统相关 时间:
2015-07-30 23:23:21
阅读次数:
279
原文网址:http://www.wowotech.net/device_model/why-dt.html一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,...
分类:
其他好文 时间:
2015-06-24 18:41:45
阅读次数:
100
20150419 IMX257虚拟网卡vnet驱动程序 2015-04-19 Lover雪儿 一、一个简单的虚拟网卡驱动 1 static struct net_device *vnet_dev; //定义一个网络设备结构体 2 3 4 static const struct net_devi...
分类:
Web程序 时间:
2015-04-19 17:49:50
阅读次数:
570
调用:int dev_set_allmulti(struct net_device *dev, int inc)打上IFF_ALLMULTI标记#define IFF_ALLMULTI 0x200 /* receive all multicast packets*/
分类:
系统相关 时间:
2015-04-10 19:46:26
阅读次数:
321
一、网卡驱动架构 由上到下层次依次为:应用程序→系统调用接口→协议无关接口→网络协议栈→设备无关接口→设备驱动。二、重要数据结构 1、Linux内核中每一个网卡由一个net_device结构来描述。 2、网卡操作函数集:net_device_ops,这个数据结构是上面net_device的一个...
分类:
系统相关 时间:
2015-03-12 22:11:51
阅读次数:
226
概述
虚拟设备是建立在一个或者多个真实设备上的抽象。虚拟设备和真实设备的对应关系时多对多的,但是并不是所有的组合都能被定义,或者被内核所支持。
初始化:
与真实设备一样,虚拟设备初始化时,被分配了net_device结构(注:别名设备是不需要分配net_device的)。通常,虚拟设备的net_device所包含的函数指针都是指向包裹函数,这些包裹函数都包含了相关的真实设备所使用的函数指针。...
分类:
系统相关 时间:
2015-02-11 10:53:22
阅读次数:
188
概述
内核的PCI子系统(即PCI层)提供了不同设备一些通用的功能,以便简化各种设备驱动程序。
PCI层重要结构体如下:
pci_device_id
设备标识,根据PCI标志定义的ID,而不是Linux本地的。
pci_dev
类似于网络设备的net_device。每个PCI会被分配一个net_dev实例。
pci_driv...
分类:
系统相关 时间:
2015-02-05 15:04:25
阅读次数:
298
eth0, eth1这些名称是怎么来的呢?
内核发现一个pci网卡设备,调用网卡驱动的probe函数。
probe函数在做完一定的初始化之后,会调用内核接口register_netdev向内核注册一个新的net_device设备。
这个设备的名字,网卡驱动程序往往只决定其中一部分。
就像下面这种方式,网卡驱动提供一个“eth%d”这样的名称,然后调用内核接口register_n...
分类:
系统相关 时间:
2015-01-23 14:45:15
阅读次数:
309
在linux中使用structnet_device结构体来描述每一个网络设备。同时这个用来刻画网络设备的structnet_device结构体包含的字段非常的多,以至于内核的开发者都觉得在现在的linux内核中,这个structnet_device是一个大的错误。在本篇文章中,只介绍structnet_device中的一些字段,..
分类:
Web程序 时间:
2014-12-01 06:36:24
阅读次数:
232