rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);//初始化bd的buf指针 -->e1000_request_irq(adapter); //挂rx 中断ISR函数为e1000_intr() 最终bd数据结构应该是下面这个样子 4.2 e1000的中断 注意:e1000产生rx中断时,以太网数据包已经在系统内存中,即在skb->data里面 下面的中断处理过程就简略了...
rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);//初始化bd的buf指针 -->e1000_request_irq(adapter); //挂rx 中断ISR函数为e1000_intr() 最终bd数据结构应该是下面这个样子 4.2 e1000的中断 注意:e1000产生rx中断时,以太网数据包已经在系统内存中,即在skb->data里面 下面的中断处理过程就简略了...
rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);//初始化bd的buf指针 -->e1000_request_irq(adapter); //挂rx 中断ISR函数为e1000_intr() 最终bd数据结构应该是下面这个样子 4.2 e1000的中断 注意:e1000产生rx中断时,以太网数据包已经在系统内存中,即在skb->data里面 下面的中断处理过程就简略了...
网卡up配置操作则涉及:e1000_open打开设备,e1000_setup_all_tx_resources配置tx资源,e1000_power_up_phy使能phy芯片,e1000_configure进行网卡配置,e1000_set_rx_mode设置接收模式,e1000_alloc_rx_buffers分配接收缓冲区。环形缓冲区(ring buff)用于存放数据,描述符(desc)存储指向缓冲区的指针,count...
仅在通过RDESC.STATUS字段中的TCPCS位指示接收数据包进行TCP/UDP校验和时有效。 如果接收TCP/UDP校验和卸载被禁用(RXCSUM.TUOFL),则TCPE位被设置为0b。 它对数据包过滤机制没有影响。读取为0b。 CXE RSV (bit 4) 略 SEQ (bit 2) 序列错误
其中desc是真正要送给dma控制器的, 而buffer_info只是一个描述结构体 2> e1000_configure: e1000_set_rx_mode, e1000_restore_vlan, e1000_init_manageability 设置收包模式, 设置管理信息等, 略过. e1000_configure_tx: 重要函数, 设置dma控制的传输地址 ...
借用《Linux-千兆网卡驱动实现机制浅析》一张图如下,比较直观的说明了e1000_adaper,e1000_rx_ring,e1000_rx_desc,e1000_buffer结构体之间的关系: 其中缓冲块的初始化由函数e1000_tx_map实现。 1.2.3 设备打开和关闭 根据e1000_netdev_ops结构体中的定义,打开设备使用的函数为e1000_open。当网络接口激活的时候被调...
int size,desc_len; size = sizeof(struct e1000_buffer) * rxdr->count; rxdr->buffer_info = vmalloc(size); memset(rxdr->buffer_info,0,size); //分配buffer所使用的内存 ... if(adapter->hw.mac_type <= e1000_82547_rec_2) desc_len = sizeof(struct e1000_rx_desc); else...
借用《Linux-千兆网卡驱动实现机制浅析》一张图如下,比较直观的说明了e1000_adaper,e1000_rx_ring,e1000_rx_desc,e1000_buffer结构体之间的关系: 其中缓冲块的初始化由函数e1000_tx_map实现。 1.2.3设备打开和关闭 根据e1000_netdev_ops结构体中的定义,打开设备使用的函数为e1000_open。当网络接口激活的时候被调用...
根据接收队列数num_rx_queues建立相应的接收缓冲区结构e1000_rx_ring,在该结构中有描述该区域的指向e1000_rx_desc结构的desc,该缓冲区指向的dma总线地址,用于接收硬件传送来的用e1000_buffer结构描述的缓冲块数组buffer_info[],另外的几个参数则主要用于描述这些缓冲块,其中count表示缓冲块的个数,next_to_use和next...