DPDK收发包处理流程-----(一)网卡初始化【3】
来源:互联网 发布:php 会员系统 编辑:程序博客网 时间:2024/06/05 16:34
3、调用rte_eth_dev_init()初始化PCI设备。
a、首先,调用rte_eth_dev_allocate()在全局数组rte_eth_devices[]中分配一个网卡设备。并在全局数组rte_eth_dev_data[]中为网卡设备的数据域分配空间。
eth_dev = &rte_eth_devices[nb_ports];eth_dev->data = &rte_eth_dev_data[nb_ports];
并调用rte_zmalloc()为网卡设备的私有数据结构分配空间。
rte_eth_dev->rte_eth_dev_data->dev_private = rte_zmalloc(sizeof(struct e1000_adapter));b、调用eth_igb_dev_init()初始化网卡设备。首先设置网卡设备的操作函数集,以及收包、发包函数。
eth_dev->dev_ops = ð_igb_ops;eth_dev->rx_pkt_burst = ð_igb_recv_pkts;eth_dev->tx_pkt_burst = ð_igb_xmit_pkts;初始化网卡设备的硬件相关数据结构struct e1000_hw,包括设备ID、硬件操作函数集、在内存地址总线上映射的地址、MAC地址等等。
c、注册中断处理函数。
rte_intr_callback_register(&(pci_dev->intr_handle), eth_igb_interrupt_handler, (void *)eth_dev);
五、设备与驱动相互映射关系图
错误之处,欢迎指出。
转载请标明转自http://www.cnblogs.com/MerlinJ/p/4108021.html
0 0
- DPDK收发包处理流程-----(一)网卡初始化【3】
- DPDK收发包处理流程-----(一)网卡初始化
- DPDK收发包处理流程-----(一)网卡初始化
- DPDK收发包处理流程-----(一)网卡初始化【1】
- DPDK收发包处理流程-----(一)网卡初始化【2】
- DPDK收发包处理流程 ----- 网卡初始化
- DPDK 收发包处理流程(二)(网卡初始化)
- DPDK 收发包处理流程(二)(网卡初始化)
- DPDK之(三)——收发包处理流程--网卡初始化
- DPDK 收发包处理流程(一)(网卡驱动注册)
- DPDK 收发包处理流程(一)(网卡驱动注册)
- DPDK之(九)——收发包分析
- DPDK内存管理-----(一)初始化
- DPDK内存管理 -----(一)初始化
- DPDK(一):DPDK安装
- 网络数据包收发流程(3):E1000网卡和DMA
- DPDK 内存管理(一)(内存初始化)
- DPDK 内存管理(一)(内存初始化)
- Jsoup解析html代码
- DPDK收发包处理流程-----(一)网卡初始化【2】
- 新版mysql+apache+php Linux安装指南
- Python标准库:内置函数dict(iterable, **kwarg)
- Codeforces Round #277.5 (Div. 2) F. Special Matrices
- DPDK收发包处理流程-----(一)网卡初始化【3】
- C_函数指针详解
- hdoj problem 2571命运 (动态规划问题)
- 你认识它们吗?2014十大科技流行词
- Android JNI 使用的数据结构JNINativeMethod详解
- ios8 强制旋转问题 (xcode6)
- MFC六大关键技术
- SEH分析笔记(X64篇)
- HDU 1158 Employment Planning