PRM是驱动程序开发所需的文档, 从历史上看,它仅在 NDA 下可用, 这对于开源网络来说是一件大事。 开放的 PRM 使独立开发人员可以为 ConnectX-4 适配器创建独立的驱动程序。 该驱动程序适用于该产品系列中的 1G/10G/25G/40G/50G/100G 卡
本文档仅适用于ConnectX®-4 和 ConnectX®-4 Lx, Nvidia有最新版本描述了所有适配器,包括 ConnectX-5/6/Bluefield, 但是适用于拥有有效支持合同的客户。 如果您有, 有效的支持合同,请发送电子邮件至NvidiaNetwork支持团队的邮箱,它将通过票证提供
系统和软件通过以下三种方式访问网卡设备
DPU初始化阶段, 设备通过命令对列和寄存器进行配置, 此时, 设备能力集(大部分资源已经准备好), 端口能力集, 资源能力集也配置也配置好了
寄存器(UAR/DoorBells门铃和初始化内存段)已经映射到物理内存空间, 他们是通过标准的PCI BAR/LIMIT机制映射
HCA初始化后, 主机软件通过向WQ提交WR实现数据收发, WR发送给SQ/RQ时, 按照WQE对待, WQE 本质上是控制数据移动的源和目的地的描述符.
针对SQ, WQEs可从本地内存包含gather_list(聚集列表SGL), RQ也是支持SGL
数据提交到SQ后, 发布到 WQ 的工作请求由 HCA 按照发布的顺序执行, 敲响各自的门铃DB, 网卡开始执行对应的操作码, 完成操作
操作完成后, HCA提交一个CQE到CQ, 多个WQs可以用一个完成元素, HCA在CQ中存储了WQE的标识信息
CX4支持16M个CQs
HCA 支持多种生成中断的方式
使软件能够将中断多路分解为不同的中断。 每个 EQ 都可以配置为在将 EQE 发布到该 EQ 时生成中断。 多个 EQ 可以映射到同一中断向量 (MSI-X),从而保持 EQ 和中断之间的多对一关系
WQS,CQs, EQs与中断的关系图:
异步事件(例如链接状态更改或各种错误)也可能导致发布事件并断言中断。 每个异步事件类型都可以映射到特定的 EQ,并可以选择生成中断。 硬件不会阻止将同步和异步事件映射到相同的 EQ。 用户在配置设备时应根据常识,对异步事件使用不同的 EQ
下图总结了各种对象以及它们之间的关系。 箭头表示一个对象指向 n 个其他对象,而 n 是在箭头的边缘指定的
注意:SQ和RQ可以指向相同或不同的CQ
由于该图是为了简单起见而显示的,因此必须解释该图之外的多对多关系。 例如,两个TIR可以指向相同或不同的RQ,并且两个完全不同的RQ或SQ(来自相同或其他TIS/TIR)可以指向相同的CQ或相同的RMP
CX4支持以太网的多个无状态卸载。 本节中列出的无状态卸载是指在裸机设备上运行的设备驱动程序的卸载。 无状态卸载包括以下功能:
• Checksum Offload- 校验和卸载
• Large Send Offloads - 大发送包卸载
• Receive Side Scaling - 弹性接收
• Transmit Side Scaling - 弹性发送
• Interrupt Moderation - 中断自适应
• Large Receive Offloads - 大接收包卸载
• VLAN insertion and stripping - VLAN 插入和剥离
• Flow Steering at layers 2, 3 and 4 - 第 2、3 和 4 层的流量控制
• Packet padding (TX) - 发送包填充
以下场景支持填充数据包开始 (RX) 和填充数据包结束 (RX) 的无状态卸载:
• IPv4 and IPv6 packets
• Layer 2: Ethernet
PRM: https://network.nvidia.com/files/doc-2020/ethernet-adapters-programming-manual.pdf (Mellanox CX4/4Lx适配器-程序员参考手册 (PRM)) Mellanox PRM released: https://github.com/snabbco/snabb/issues/938
博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl | https://www.zhihu.com/people/ssbandjl/posts
https://cloud.tencent.com/developer/column/101987
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。