e1000驱动收包描述符和skb
Rx Desc Register是与接收描述符环有关的有4个寄存器:
RDBA存放描述符缓冲的首地址,作为基地址共64位包括各32位的高低地址,
RDH和RDT是头尾指针,存放相对基址的偏移量,RDH的值由硬件增加,表示指向下一次DMA将用的描述符
RDT由软件增加 表示下一次要处理并送交协议栈的有关描述
RDLEN:为缓冲区分配的总空间的大小
上述寄存器的初始化在
e1000_open
->e1000_configure
->e1000_configure_rx函数中设置
Rx Desc Table是Rx描述符环形队列
->e1000e_setup_rx_resources->e1000_alloc_ring_dma在e1000_open
函数中申请,这个队列是物理地址连续的存放的是rx_desc,desc中存放报文DMA的目的地址,即skb->data,由于网卡DMA操作需要的地址是物理地址,所以desc存放的是skb->data DMA映射后的地址,经过dma_map_single映射
skb缓存:存放报文的缓存
skb缓存初次申请流程
->e1000_alloc_rx_buffers->__netdev_alloc_skb_ip_aligne1000_open
->e1000_configure
收包过程中e1000_clean_rx_irq->e1000_alloc_rx_buffers->__netdev_alloc_skb_ip_align
参考:http://www.cnblogs.com/gogly/archive/2012/06/10/2541573.html
https://titenwang.github.io/2017/04/16/intel-82599-receive-packet/
e1000驱动收包描述符和skb相关推荐
- 【无线】【流程】QCA无线驱动收包流程分析
概述: 无线驱动的收包过程是基于中断的处理方式.在准备接收数据之前,驱动需要先进行初始化接收数据使用到的相关结构( sc_rxbuf和rxfifo ).当数据包到达时,硬件会首先进行 DMA,完成以后 ...
- UVC摄像头(2)驱动层——UVC描述符参数设置
接着上一篇UVC摄像头(1) composite_gadget_bind(cdev); 我们绑定它的函数是这个 webcam_bind(struct usb_composite_dev *cdev) ...
- MTK eCos系统的有线驱动收包流程
驱动设备注册 如下,注册了ra305x_eth_netdev1,关联ra305x_eth_sc1方法,ra305x_eth_sc1定义时关联了eth_drv_funs.if_ra305x_init将在 ...
- DPDK 网卡收包流程
Table of Contents 1.Linux网络收发包流程 1.1 网卡与liuux驱动交互 1.2 linux驱动与内核协议栈交互 题外1: 中断处理逻辑 题外2:中断的弊端 2.linux ...
- dpdk 收发包问题案例:使用不匹配的收发包函数触发的不收包问题定位
问题现象 业务程序使用 x710 网卡,收发一万多个巨帧包后就无法正常收包,查看网卡收发包统计发现 imissed 字段一直增加,问题必现. 环境信息 dpdk 版本 dpdk-16.04 网卡 pc ...
- Linux网络协议栈:网卡收包分析
Table of Contents 网卡收包 一,框架 二,初始化 三,驱动收包 四,内核处理 参考文章 推荐阅读 网卡收包 内核网络模块如何初始化? 内核如何通过网卡驱动收发数据包? 驱动收到的数据 ...
- ixgbe网卡驱动 Ⅳ----收发包流程详解
目录 1 网卡队列收包流程概述 2 ixgbe_ring 结构 3 ixgbe 驱动收包流程 3.1 硬件中断入口 ixgbe_msix_clean_rings/ixgbe_intr 3.2 软中断入 ...
- 网络收包流程-收包函数__netif_receive_skb的核心函数__netif_receive_skb_core(三)
调用关系:netif_receive_skb-->netif_receive_skb-->netif_receive_skb_internal(->__netif_receive_s ...
- dpdk报文收发流程--理解dma控制器、UIO驱动、描述符空间、mbuf空间、KNI
1. dpdk报文收发流程 1.1 报文接收流程 传统方式接收报文时,当网卡接收到报文后会产生硬件中断,进而报文会通过协议栈,最后到达应用层,这个过程需要内核协议栈的处理. 和传统报文接收不同,当应用 ...
最新文章
- 麦肯锡AI应用报告:深度学习是蓝海还是深坑?
- 关于matlab中的梯度使用
- LCA+差分【p4427】[BJOI2018]求和
- python做自动化测试的优点_乐搏讲自动化测试-python语言特点及优缺点(5)
- 编程求一个后缀表达式的值
- rpc wmi 服务不可用_golang 基础(5) RPC
- 爱奇艺数据中台负责人马金韬:数据中台建设与应用
- c++ dll返回容器_Windows x86 Shellcode开发:寻找Kernel32.dll地址
- speech开源框架_微软SAPI(The Microsoft Speech API):让你的软件能说会道
- centos 安装 Pip 的方法总结
- office2013打开出现配置进度
- ERP员工入职登记(五)
- aspcms用mysql_aspcms增加手机版支持与电脑公用一个后台
- 【Mysql】留存率指标计算
- mysql 重做日志原理_MySQL-重做日志 redo log -原理
- Android电池信息的获取
- 电子邮件营销与MailChimp。它是适合你
- Web开发者的实用网址
- C++Primer阅读笔记
- 读书笔记 | 张五常 经济解释 (卷一) 科学说需求
热门文章
- Live_2014/12/21
- UI设计/GUI开发-入门界面设计
- 复旦大学计算机首席科学家,复旦大学研究生导师介绍:汤其群-中公研招网
- 计算机应用能力考试是指,2019年计算机应用能力考试报考指南:考试介绍
- 2022年PMP报考指南
- poi实现多个word文档合并,加超简单分页教程
- 计算机中级审计职称考试试题,历年中级审计师考题
- Sigma-Delta数模转换器的设计与实现
- 奥迪专业诊断维修服务器断网,常见奥迪MMI系统故障解决方法
- mysql自愈_云数据库时代的 Db2 自愈系统