华为智能网卡 (HiNIC) 系列的 Linux 内核驱动程序¶
概述:¶
HiNIC 是一种用于数据中心领域的网络接口卡。
该驱动程序支持一系列链路速度设备 (10GbE、25GbE、40GbE 等)。该驱动程序还支持协商和可扩展的功能集。
一些 HiNIC 设备支持 SR-IOV。此驱动程序用于物理功能 (PF)。
HiNIC 设备为每个 Tx/Rx 队列和自适应中断调节支持 MSI-X 中断向量。
HiNIC 设备还支持各种卸载功能,例如校验和卸载、TCP 发送分段卸载 (TSO)、接收端缩放 (RSS) 和 LRO (大型接收卸载)。
支持的 PCI 供应商 ID/设备 ID:¶
19e5:1822 - HiNIC PF
驱动程序架构和源代码:¶
hinic_dev - 实现一个逻辑网络设备,该设备独立于有关硬件数据结构格式的特定硬件细节。
hinic_hwdev - 实现设备的硬件细节,并包括用于访问 PCI NIC 的组件。
hinic_hwdev 包含以下组件:¶
硬件接口:¶
用于访问 PCI 设备(DMA 内存和 PCI BAR)的接口。(hinic_hw_if.c, hinic_hw_if.h)
配置状态寄存器区域,描述配置和状态 BAR0 上的硬件寄存器。(hinic_hw_csr.h)
MGMT 组件:¶
异步事件队列 (AEQ) - 用于接收来自卡上 MGMT 模块的消息的事件队列。(hinic_hw_eqs.c, hinic_hw_eqs.h)
应用程序可编程接口命令 (API CMD) - 用于向卡发送 MGMT 命令的接口。(hinic_hw_api_cmd.c, hinic_hw_api_cmd.h)
管理 (MGMT) - PF 到 MGMT 通道,使用 API CMD 向卡发送 MGMT 命令,并通过 AEQ 接收来自卡上 MGMT 模块的通知。还在硬件中设置 IO CMDQ 的地址。(hinic_hw_mgmt.c, hinic_hw_mgmt.h)
IO 组件:¶
完成事件队列 (CEQ) - 描述已完成的 IO 任务的完成事件队列。(hinic_hw_eqs.c, hinic_hw_eqs.h)
工作队列 (WQ) - 包含 CMD 队列和队列对使用的内存和操作。WQ 是页面中的内存块。该块包含指向内存区域的指针,这些区域是工作队列元素 (WQE) 的内存。(hinic_hw_wq.c, hinic_hw_wq.h)
命令队列 (CMDQ) - 用于发送 IO 管理命令的队列,用于在硬件中设置 QP 地址。命令完成事件累积在配置为接收 CMDQ 完成事件的 CEQ 上。(hinic_hw_cmdq.c, hinic_hw_cmdq.h)
队列对 (QP) - 用于接收和传输数据的硬件接收和发送队列。(hinic_hw_qp.c, hinic_hw_qp.h, hinic_hw_qp_ctxt.h)
IO - 构造/解构所有 IO 组件。(hinic_hw_io.c, hinic_hw_io.h)
硬件设备:¶
硬件设备 - 在驱动程序初始化时构造/解构硬件接口和 MGMT 组件,并在接口 UP/DOWN 事件的情况下构造/解构 IO 组件。(hinic_hw_dev.c, hinic_hw_dev.h)
hinic_dev 包含以下组件:¶
PCI ID 表 - 包含支持的 PCI 供应商/设备 ID。(hinic_pci_tbl.h)
端口命令 - 向硬件设备发送端口管理命令(MAC、Vlan、MTU 等)。(hinic_port.c, hinic_port.h)
Tx 队列 - 使用硬件发送队列进行传输的逻辑 Tx 队列。逻辑 Tx 队列不依赖于硬件发送队列的格式。(hinic_tx.c, hinic_tx.h)
Rx 队列 - 使用硬件接收队列进行接收的逻辑 Rx 队列。逻辑 Rx 队列不依赖于硬件接收队列的格式。(hinic_rx.c, hinic_rx.h)
hinic_dev - 构造/解构逻辑 Tx 和 Rx 队列。(hinic_main.c, hinic_dev.h)
其他¶
硬件和逻辑设备使用的通用函数。(hinic_common.c, hinic_common.h)
支持¶
如果在支持的内核上使用支持的适配器,在发布的源代码中发现问题,请将与该问题相关的具体信息发送电子邮件至 aviad.krawczyk@huawei.com。