searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

DPDK网卡设备加载流程简介

2023-08-14 08:24:17
38
0

网卡驱动模型可以分为三层,即PCI总线设备、网卡设备以及网卡设备的私有数据结构,PCI总线设备包含网卡设备,网卡设备又包含其私有数据结构。在DPDK中,首先注册设备驱动,然后查找当前系统有哪些PCI设备,并通过PCI_ID为PCI设备找到对应的驱动,最后调用驱动初始化设备。

网卡驱动注册

通过rte_eal_driver_register()函数,将不同类型的网卡驱动挂到全局dev_driver_list链表上

 

扫描PCI设备

通过rte_eal_pci_init()函数,查找当前系统中有哪些网卡,并将它们挂到全局链表pci_device_list上;


PCI驱动注册

通过rte_eal_dev_init()函数,遍历dev_driver_list链表,根据vendor和device匹配执行网卡驱动对应的init的回调函数,注册PCI驱动

 

网卡初始化

通过rte_eal_pci_probe()函数,遍历pci_device_list和pci_driver_list链表,根据PCI_ID,将pci_device与pci_driver绑定,并调用pci_driver的init回调函数rte_eth_dev_init(),初始化PCI设备;

PCI设备和PCI驱动匹配后,调用rte_eal_pci_map_device()函数为该PCI设备创建map resource;

在driver与device的match成功,并且做完PCI资源空间地址映射后,调用rte_eth_dev_init()初始化PCI设备网卡设备的操作函数集,包括设备ID、硬件操作函数集、在内存地址总线上映射的地址、MAC地址,以及注册中断使能接口;

配置收发包队列,配置收包、发包函数,以及offload特性等。

0条评论
作者已关闭评论
n****m
2文章数
0粉丝数
n****m
2 文章 | 0 粉丝
n****m
2文章数
0粉丝数
n****m
2 文章 | 0 粉丝
原创

DPDK网卡设备加载流程简介

2023-08-14 08:24:17
38
0

网卡驱动模型可以分为三层,即PCI总线设备、网卡设备以及网卡设备的私有数据结构,PCI总线设备包含网卡设备,网卡设备又包含其私有数据结构。在DPDK中,首先注册设备驱动,然后查找当前系统有哪些PCI设备,并通过PCI_ID为PCI设备找到对应的驱动,最后调用驱动初始化设备。

网卡驱动注册

通过rte_eal_driver_register()函数,将不同类型的网卡驱动挂到全局dev_driver_list链表上

 

扫描PCI设备

通过rte_eal_pci_init()函数,查找当前系统中有哪些网卡,并将它们挂到全局链表pci_device_list上;


PCI驱动注册

通过rte_eal_dev_init()函数,遍历dev_driver_list链表,根据vendor和device匹配执行网卡驱动对应的init的回调函数,注册PCI驱动

 

网卡初始化

通过rte_eal_pci_probe()函数,遍历pci_device_list和pci_driver_list链表,根据PCI_ID,将pci_device与pci_driver绑定,并调用pci_driver的init回调函数rte_eth_dev_init(),初始化PCI设备;

PCI设备和PCI驱动匹配后,调用rte_eal_pci_map_device()函数为该PCI设备创建map resource;

在driver与device的match成功,并且做完PCI资源空间地址映射后,调用rte_eth_dev_init()初始化PCI设备网卡设备的操作函数集,包括设备ID、硬件操作函数集、在内存地址总线上映射的地址、MAC地址,以及注册中断使能接口;

配置收发包队列,配置收包、发包函数,以及offload特性等。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0