摘要: 网络设备接收数据的主要方法是由中断引发设备的中断处理函数,中断处理函数判断中断类型,如果为接收中断,则读取接收到的数据,分配 sk_buffer 数据结构和数据缓冲区,将接收到的数据复制到数据缓冲区,并调用 netif_rx() 函数将 sk_buffer 传递给上层协议。下面是完成这个过程的函数模 阅读全文
posted @ 2020-07-26 23:36 闹闹爸爸 阅读(770) 评论(0) 推荐(1) 编辑
摘要: 从网络设备驱动的结构分析可知,Linux 网络子系统在发送数据包时,会调用驱动程序提供的 hard_start_transmit( ) 函数,该函数用于启动数据包的发送。在设备初始化的时候,这个函数指针需被初始化以指向设备的 xxx_tx( )函数。 网络设备驱动完成数据包发送的流程如下。 网络设备 阅读全文
posted @ 2020-07-26 01:30 闹闹爸爸 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 网络设备的打开函数需要完成如下工作: 使能设备使用的硬件资源,申请 I/O 区域、中断和 DMA 通道等。 调用 Linux 内核提供的 netif_start_queue( )函数,激活设备发送队列。 网络设备的关闭函数需要完成如下工作: 调用 Linux 内核提供的 netif_stop_que 阅读全文
posted @ 2020-07-26 00:43 闹闹爸爸 阅读(1005) 评论(0) 推荐(0) 编辑
摘要: 网络设备的初始化主要完成如下几个方面的工作。 进行硬件上的准备工作,检查网络设备是否存在,如果存在,则检测设备所使用的硬件资源。 进行软件接口上的准备工作,分配 net_device 结构体并对其数据结构和函数指针成员赋值。 获得设备的私有信息指针并初始化各成员的值。如果私有信息中包括自旋锁或信号量 阅读全文
posted @ 2020-07-26 00:19 闹闹爸爸 阅读(535) 评论(0) 推荐(0) 编辑