网卡驱动程序分析
来源:互联网 发布:comicrack是什么软件 编辑:程序博客网 时间:2024/06/06 02:32
Linux网络子系统如图:
网络子系统分为用户空间和内核空间,而内核空间又可以分为:
①系统调用接口层
为应用程序提供访问网络子系统的统一方法,如socket,accept等函数接口。
②协议无关层
提供通用的方法来使用传输层协议。即无论下层使用的是何种网络协议,协议无关层将该种网络协议的接口转化为统一接口,提供给系统调用接口层使用。
③网络协议栈
实现具体的网络协议
④设备无关层
协议与设备驱动之前通信的通用接口。即统一了设备驱动的接口函数,使上层能够使用统一的函数接口来访问驱动函数。
⑤设备驱动程序
实现具体的设备操作。
在Linux内核中,每个网卡都由一个net_device结构来描述,其中的一些重要成员有:
struct net_device{ char name[IFNAMSIZ]; /*设备名,如:eth%d*/ unsigned long base_addr; /*I/O 基地址*/ const struct net_device_ops *netdev_ops; /**/}
类似于字符设备驱动中的file_operations结构,net_device_ops结构记录了网卡所支持的操作。如:
static const struct net_device_ops dm9000_netdev_ops ={ .ndo_open = dm9000_open, .ndo_stop = dm9000_stop, .ndo_start_xmit = dm9000_start_xmit, .ndo_do_ioctl = dm9000_ioctl, .ndo_validate_addr = eth_validate_addr, .ndo_set_mac_address = eth_mac_addr,};
Linux内核中的每个网络数据包都由一个套接字缓冲区结构 struct sk_buff 描述,即一个sk_buff结构就是一个网络包,指向sk_buff的指针通常被称做skb。
网卡驱动程序的重点有初始化、数据发送、数据接收
初始化
数据发送
数据接收
0 0
- RTL8139网卡驱动程序分析
- Linux网卡驱动程序分析
- linux网卡驱动程序分析
- Linux网卡驱动程序分析
- linux网卡驱动程序分析
- Linux网卡驱动程序分析
- Linux网卡驱动程序分析
- dm9000网卡驱动程序分析
- CS8900a网卡驱动程序分析
- Cs8900网卡驱动程序分析
- DM9000 网卡驱动程序分析
- 网卡驱动程序分析
- linux网卡驱动程序分析
- LinuxDM9000网卡驱动程序完全分析
- 精彩---rtl8139网卡驱动程序分析
- imx6 ar8031网卡驱动程序分析
- 精彩---rtl8139网卡驱动程序分析
- Linux DM9000网卡驱动程序完全分析
- 数据结构中排序算法-交换排序(2)
- 设计模式-结构型之组合模式
- 浅析MMU
- oracle11g卸载
- 循环-10. 求序列前N项和(15)
- 网卡驱动程序分析
- 软件工程之软件计划
- Dropwizard: 开发轻量RESTful服务
- oracle redo管理
- cocos2dx-ScrollView和 ListView、PageView控件的使用
- hihocoder 1164 随机斐波那契 (期望dp)
- IOS中通过给NSString分类实现计算一个字符串中的阿拉伯数字出现的个数
- SDK 编码格式要求
- 循环-22. 输出闰年(15)