网络设备驱动程序框架

1网络设备驱动程序框架可以分为四层

网络协议接口层
----------------------------------------------------------------------------------------------------------
数据的发送                                                                数据的接收                     
hard_start_xmit(struct sk_buffer *skb sturt *net_device) |      netif_rx(struct sk_buffer *skb sturt *net_device)  
----------------------------------------------------------------------------------------------------------
                                                          ||
                                                          ||
                                                          \/
                                               设备接口层
----------------------------------------------------------------------------------------------------------
                                                  struct  net_device
该结构体上层提供(网络协议接口层)提供发送和接收的函数,是下层(设备驱动层)各种属性和函数操作的集合。
该层主要分为五个部分
1:全局变量及其该结构体各个操作函数的初始化及其对该结构体赋值
 例如,char name[IFNAMESIZE],int (*init)(struct net_device *dev)等,其中init函数是在模块初始化的时候调用,该函数的作用
 就是初始化 struct net_device 中的一些函数 比如网络的打开、关闭、 sbk的发送、接收以ioctl、超时函数等
2:硬件的相关信息
 例如共享内存的起始/结束地址mem_start/mem_end,io的基地址以及设备使用的中断号等等
3:接口信息
 例如设备的接口的硬件类型type,设备的硬件地址dev_addr[MAX_ADDR_LEN]和广播地址brodcast[MAX_ADDR_LEN]等
4:设备的各种操作函数
 例如网络的打开open(struct net_device* dev)/close(struct net_device* dev)/hard_start_xmit(...)/netif_rx(...)
5: 辅助成员
 例如私有数据 void *priv,最后一次发送和接收数据包的时间
----------------------------------------------------------------------------------------------------------
                                                         ||
                                                         ||
                                                         \/
                                                    设备驱动层
----------------------------------------------------------------------------------------------------------
该层主要是实现net_device结构体中的各个函数,如打开和关闭网络函数、发送和接收数据包的函数,超时函数等等
----------------------------------------------------------------------------------------------------------
                                                          ||
                                                          ||
                                                          \/
                                                     设备与媒介
----------------------------------------------------------------------------------------------------------
该层说是设备与媒介,不怎么好听,我个人理解就是真正的硬件操作,比如操作寄存器,
该层主要是操作寄存器,比如从寄存器上读数据发送数据

网络设备驱动程序框架,布布扣,bubuko.com

时间: 2024-10-10 13:38:40

网络设备驱动程序框架的相关文章

linux网络设备驱动程序

4.linux网络设备驱动程序体系结构 -------------------------------------- | 数据包发送 | 数据包接收 | ----->网络协议接口层 | dev_queue_xmit() | netif_rx() | |-------------------------------------- | 结构体 net_device | ----->网络设备接 口层 -------------------------------------- | 数据包发送 | 中

linux字符设备驱动程序框架

#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/delay.h> #include <asm/uaccess.h> #include <asm/irq.h> #include <asm/io.h> #include <asm/a

linux字符设备驱动程序框架(老方法)

#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/delay.h> #include <asm/uaccess.h> #include <asm/irq.h> #include <asm/io.h> #include <asm/a

18.tty驱动程序框架

tty驱动程序框架 一.TTY概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. 1.1串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备.Linux把每个串行端口都看作是一个字符设备.这些串行端口所对应的设备名称是 /dev/ttySAC0;/dev/ttySAC1… 1.2虚拟终端(/dev/tty*) 当用户登录时,使用的是虚拟终端.使用Ctcl+Alt+[F1—F6]组合键时,我们就可以切换到tty1.tty

10. LCD驱动程序 ——框架分析

引言: 由LCD的硬件原理及操作(可参看韦哥博客:第017课 LCD原理详解及裸机程序分析) 我们知道只要LCD控制器的相关寄存器正确配置好,就可以在LCD面板上显示framebuffer中的内容. 若应用程序需要在LCD屏幕上显示文字或图像时,只需要把相应的显示内容以正确的格式写到Framebuffer中即可. (Framebuffer,中文名字是帧缓冲,这个帧也就是一副图像所需要的数据.因此,帧缓冲其实就是LCD设备的驱动程序) 一.LCD驱动程序框架 根据上述思路,Linux LCD 驱动

微软开源Windows驱动程序框架

WDF 团队的代表 J M Rossy 在博客里是这样讲述开源 WDF 的主要目标. 昨天我们在 WinHEC 很激动的对外宣布将 Windows Driver Frameworks (WDF) 的源代码最大化的开放在 GitHub 上.相关的报告文件可以在这里看到:github.com/Microsoft/Windows-Driver-Frameworks WDF 开源的主要目标 开源 WDF 的最主要的目标就是为了更加直接的开发高质量的驱动器.该框架提取了底层操作系统的核心部分,当需要的时候

网络设备驱动程序数据结构

struct softnet_data{    int            throttle;    int            cng_level;    int            avg_blog;    struct sk_buff_head    input_pkt_queue;    struct list_head    poll_list;    struct net_device    *output_queue;    struct sk_buff        *co

linux驱动程序框架基础

============================      指引     ============================= 第一节是最基础的驱动程序: 第二节是/dev应用层接口的使用: 第三节是/sys应用层接口的使用: 第四节是对硬件的操作: 第五节是旧版platform_driver的简易说明: 第六节是设备树与新版platform的简易说明: ===========================   简易驱动程序   =========================

Linux驱动之USB总线驱动程序框架简析

通用串行总线(USB)是主机和外围设备之间的一种连接.USB总线规范有1.1版和2.0版,当然现在已经有了3.0版本.USB1.1支持两种传输速度:低速为1.5Mbps,高速为12Mbps.USB2.0的传输速度可以高达480Mbps.USB2.0向下兼容USB1.1,可以将USB1.1的设备连接到USB2.0控制器上,也可以把USB2.0的设备连接到USB1.1控制器上.S3C2440的USB主机控制器支持USB1.1总线规范. USB总线的拓扑结构如下图所示:USB主机控制器(USB Hos