MLNX 网卡 dpdk 适配

  1. 环境

dpdk 版本: dpdk-stable-18.02.1
MLNX 版本: 4.7

  1. 下载驱动

https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/

  1. 参考文档

https://www.jianshu.com/p/f09f00f4e25f

https://www.jianshu.com/p/638427dd9203

http://doc.dpdk.org/guides-16.11/nics/mlx5.html

http://doc.dpdk.org/guides-20.02/nics/mlx5.html

https://blog.csdn.net/baidu_35141290/article/details/100138087

  1. ARM 编译

解压 src MLNX_OFED_SRC…tar.gz 然后移动到MLNX根目录


# 安装Mellanox驱动yum install gcc gcc-c++ vim wget git net-tools pci*yum install kernel-devel-4.14.0-115.el7a.0.1.aarch64yum install python-devel lsof redhat-rpm-config rpm-buildyum install tcl gcc-gfortran tcsh tkyum -y install libmnl libmnl-develyum install mlnx-ofed-all --skip-brokenyum -y install libibverbs*
yum install rdma-core rdma-core-devel -y# mount -o ro,loop MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.6alternate-aarch64.iso /mnt/
#./mlnxofedinstall --add-kernel-support --skip-repo --skip-distro-check
#./mlnxofedinstall --skip-distro-check --add-kernel-support --kmp --dpdk --upstream-libs --force --skip-repo
#./mlnxofedinstall --upstream-libs --dpdk --add-kernel-support --force# 全部安装
#./mlnxofedinstall --all --force# 支持dpdk的最小化安装
./mlnxofedinstall --dpdk --upstream-libs --force/etc/init.d/openibd restart

ibstat 命令查看是否安装成功

  1. dpdk 测试

modprobe -a ib_uverbs mlx5_core mlx5_ib/etc/init.d/openibd restartifconfig eth1 up
ifconfig eth2 upls -d /sys/class/net/*/device/infiniband_verbs/uverbs* | cut -d / -f 5# eth1 eth2{for intf in eth1 eth2;do(cd "/sys/class/net/${intf}/device/" && pwd -P);done;
} |
sed -n 's,.*/\(.*\),-w \1,p'# -w 0001:01:00.0 -w 0001:01:00.1./testpmd -l 8-15 -n 4 -w 0001:01:00.0 -w 0001:01:00.1 -- --rxq=2 --txq=2 -i
  1. intel 个网卡支持的队列数

i350 8队列
x710 22队列

igb_ethdev.ce1000_82575 4e1000_82576 16e1000_82580 8e1000_i350 8e1000_i354 8e1000_i210 4e1000_i211 2./net/ixgbe/base/ixgbe_82599.cixgbe 82599 128  光口
./net/ixgbe/base/ixgbe_x540.cixgbe x540 128
./net/ixgbe/base/ixgbe_82598.c82598 rx queue 32 / tx queue 64e1000 (82540, 82545, 82546)
e1000e (82571, 82572, 82573, 82574, 82583, ICH8, ICH9, ICH10, PCH, PCH2, I217, I218, I219)
igb (82573, 82576, 82580, I210, I211, I350, I354, DH89xx)
igc (I225)
ixgbe (82598, 82599, X520, X540, X550)
i40e (X710, XL710, X722, XXV710)
ice (E810)
fm10k (FM10420)
ipn3ke (PAC N3000)
ifc (IFC)

i40e 驱动默认支持 64 队列,见dpdk 网卡最大队列代码追踪.

  1. dpdk 网卡最大队列代码追踪
// rte_ethdev.c --> rte_eth_dev_rx_queue_config 设置 nb_queues
static int rte_eth_dev_rx_queue_config(struct rte_eth_dev *dev, uint16_t nb_queues)
// 初始dev信息存放在 rte_eth_devices数组中
dev = &rte_eth_devices[port_id];/*
./lib/librte_ether/rte_ethdev.c:879:    dev->data->nb_tx_queues = nb_queues;./lib/librte_eventdev/rte_event_eth_rx_adapter.c:907:        rx_adapter->eth_devices[i].dev = &rte_eth_devices[i];
./lib/librte_eventdev/rte_event_eth_rx_adapter.c:1011:          rte_eth_devices[eth_dev_id].data->nb_rx_queues) {
./lib/librte_eventdev/rte_event_eth_rx_adapter.c:1034:              &rte_eth_devices[eth_dev_id],
./lib/librte_eventdev/rte_event_eth_rx_adapter.c:1088:      rte_eth_devices[eth_dev_id].data->nb_rx_queues) {rte_eth_dev_configure  该函数调用时会修改queue_number个数.
grep -rn "nb_rx_queues" ./
./lib/librte_ether/rte_ethdev.c:1359:   dev->data->nb_rx_queues = 0;grep -rn "max_rx_queues"/drivers/net/i40e/i40e_ethdev.c:3173:  dev_info->max_rx_queues = vsi->nb_qps;
*/static struct rte_event_eth_rx_adapter **event_eth_rx_adapter;
rx_adapter->eth_devices[i].dev = &rte_eth_devices[i];#define RTE_MAX_QUEUES_PER_PORT 1024 // rte_config.hint eth_i40e_dev_init(struct rte_eth_dev *dev);
int rte_pci_read_config(const struct rte_pci_device *dev,void *buf, size_t len, off_t offset)// --------------------------------------------------------------------------// i40e 驱动
// ./drivers/net/i40e/i40e_ethdev.c:3173:   dev_info->max_rx_queues = vsi->nb_qps;            // .dev_infos_get = i40e_dev_info_getRTE_PMD_REGISTER_PCI(net_i40e, rte_i40e_pmd);|V
static struct rte_pci_driver rte_i40e_pmd|V
eth_i40e_pci_probe|V
eth_i40e_dev_init --------> i40e_pf_parameter_init ---> pf->lan_nb_qp_max = RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF;|                                                                     pf->lan_nb_qps = pf->lan_nb_qp_max;V
i40e_pf_setup                                             |V
i40e_vsi_setup|V
vsi->nb_qps = pf->lan_nb_qps

MLNX 网卡 dpdk 适配与dpdk最大队列支持相关推荐

  1. dpdk的无锁环形队列Ring

    1. DPDK Ring简介 dpdk实现了一个无锁环形队列Ring,可用于在dpdk不同的应用程序之间进行通信. Ring支持的效果: 先进先出 最大大小是固定的,指针存储在表中 无锁实现 多消费者 ...

  2. (精简理解)DPDK的无锁环形队列Ring

    这里写目录标题 1. DPDK Ring简介 2. Ring实现 2.1 单一生产者入队 2.2 单一消费者出队 2.3 多个生产者入队 2.4 多个消费者出队 3 总结 3.1 入队列 3.2 出队 ...

  3. SR-IOV虚拟出来的网卡如何被VPP(DPDK)接管

    目录 引言 SR-IOV简介 网卡支持 配置步骤 1. 修改Bios enable SR-IOV 2. 修改启动参数 3. 设置vf网卡mac地址,权限 4. 切换网卡驱动 5.启动VPP 小结 引言 ...

  4. 【网络】DPDK的基本原理|DPDK和RDMA的区别

    目录 DPDK和RDMA的区别 DPDK RDMA 总结 DPDK的基本原理 RDMA的基本原理 作者bandaoyu,本文随时更新,原地址:https://blog.csdn.net/bandaoy ...

  5. DPDK系统学习—DPDK的虚拟交换机框架 OvS

    目录: 多队列网卡 多队列网卡硬件实现 内核对多队列网卡的支持 多队列网卡的结构 DPDK 与多队列网卡 虚拟化 CPU 虚拟化 内存虚拟化 I/O 虚拟化 Virtio 为什么是 virtio? 多 ...

  6. DPDK — PMD,DPDK 的核心优化

    目录 文章目录 目录 前文列表 PMD,DPDK 的核心优化 PMD 与 UIP 的交互实现 PMD 的应用层实现 参考文章 前文列表 <DPDK - 安装部署> <DPDK - 数 ...

  7. DPDK学习(一)DPDK简介

    1.DPDK介绍 Intel® DPDK 全称 Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处 ...

  8. DPDK系列之三DPDK介绍及简单应用

    一.DPDK介绍 提起DPDK,需要先回顾一下网络的发展.最初的网络的出现是从美国军方的局域网发展起来的,从一开始,网络的应用并没有现在这么复杂,数据传输量也没有现在这么巨大.更不要提现在什么高清.3 ...

  9. ios xib 如何适配iphoneX,且需要支持到ios8以上

    需求: 接手的项目里面界面都是用xib写的,产品让适配iphoneX: 问题: 要求项目支持到ios8以上,我看网上的资料,说适配iphonex,xib 约束用safe area就可以,可是safe ...

最新文章

  1. 科软2020计算机科学与技术,2020新高考 报考计算机类专业怎么选科
  2. ZABBIX 4.0 LTS+Grafana5.3部署
  3. 第3周实践项目5 -顺序表的应用 拆分单链表
  4. HTML5 速查列表
  5. python定义一个圆_Python-矩形和圆形
  6. 使用page-slot显示SAP Spartacus section里包含的Component和layout设计
  7. Firefox UI已迁移至Web Components
  8. C# OpenTK教程 - 目录
  9. GTK+ 3.5.18 发布,GUI 开发工具包
  10. 被监控机上安装nagios插件和nrpe(nrpe添加为xinetd服务)
  11. 跨域——vue中的axios.post使用json数据传输,出现请求头字段内容类型是不被允许的情况的解决方案
  12. CentOS7 安装 YApi
  13. 座位安排(seat)
  14. java base64 加号_Base64 空格,加号问题
  15. faster rcnn:towards real-time object detection with region proposal network
  16. elementUI设置标签页
  17. 各种电机原理动态图(直流电机是切割磁力线产生感应电动势,交流电机是改变线圈中的磁场强度产生感应电动势,旋转磁场)
  18. 收楼了心情忐忑不安,该花钱请验房师来验房吗?找一个验房师需要多少钱,验房标准价格是多少,验房师现场验收出二百多个问题值不值
  19. 十年磨一剑,剑指IT技术之巅,WOT 全球技术创新大会 2022盛大开启
  20. Linux下刻录CD/DVD详解

热门文章

  1. linux能用airport吗_Linux 常用命令笔记-2
  2. 节能减排绿色电力,可视化打造智慧虚拟电厂
  3. SQL中辖区基金数量排序
  4. 简单的ECharts数据可视化,30分钟学会
  5. c#初始化数组的四种方式
  6. 连续系统的时域分析(一)LTI连续系统微分方程解法1——y(0 +)的求法
  7. java计算机毕业设计小学生素质成长记录平台源码+lw文档+系统+数据库
  8. (62)TCL脚本命令【format】
  9. c语言最弱智的游戏,盘点那些看起来弱智,实际上很难的游戏
  10. 关停的「虾米」,里面是你我的「青春」