华为智能网卡 (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 地址。命令完成事件累积在 CEQ 上,CEQ 配置为接收 CMDQ 完成事件。(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。