內容¶
支援的 PCI 供應商 ID/裝置 ID
Hinic3 驅動程式的原始碼結構
管理介面
hinic3 是用於資料中心的網路介面卡 (NIC)。它支援一系列鏈路速度裝置(10GE、25GE、100GE 等)。hinic3 裝置可以具有多種物理形式:LOM(主機板上區域網)NIC、PCIe 標準 NIC、OCP(開放計算專案)NIC 等。
hinic3 驅動程式支援以下功能:- IPv4/IPv6 TCP/UDP 校驗和解除安裝 - TSO(TCP 分段解除安裝)、LRO(大接收解除安裝)- RSS(接收端縮放)- MSI-X 中斷聚合配置和中斷適配。- SR-IOV(單根 I/O 虛擬化)。
支援的 PCI 供應商 ID/裝置 ID
Hinic3 驅動程式的原始碼結構
管理介面
19e5:0222 - hinic3 PF/PPF 19e5:375F - hinic3 VF
主物理功能 (PPF) 負責整個網絡卡的管理。例如,NIC 和主機之間的時鐘同步。任何 PF 都可以用作 PPF。 PPF 是動態選擇的。
hinic3_pci_id_tbl.h |
支援的裝置 ID |
hinic3_hw_intf.h |
硬體和驅動程式之間的介面 |
hinic3_queue_common.[ch] |
NIC 佇列的通用結構和方法 |
hinic3_common.[ch] |
Linux 中記憶體操作的封裝 |
hinic3_csr.h |
BAR 中的暫存器定義 |
hinic3_hwif.[ch] |
BAR 的介面 |
hinic3_eqs.[ch] |
AEQ 和 CEQ 的介面 |
hinic3_mbox.[ch] |
郵箱的介面 |
hinic3_mgmt.[ch] |
基於郵箱和 AEQ 的管理介面 |
hinic3_wq.[ch] |
工作佇列資料結構和介面 |
hinic3_cmdq.[ch] |
命令佇列用於將命令釋出到硬體 |
hinic3_hwdev.[ch] |
硬體結構和方法抽象 |
hinic3_lld.[ch] |
輔助驅動程式適配層 |
hinic3_hw_comm.[ch] |
通用硬體操作的介面 |
hinic3_mgmt_interface.h |
韌體和驅動程式之間的介面 |
hinic3_hw_cfg.[ch] |
硬體配置的介面 |
hinic3_irq.c |
中斷請求 |
hinic3_netdev_ops.c |
註冊到 Linux 核心棧的操作 |
hinic3_nic_dev.h |
NIC 結構和方法抽象 |
hinic3_main.c |
主 Linux 核心驅動程式 |
hinic3_nic_cfg.[ch] |
NIC 服務配置 |
hinic3_nic_io.[ch] |
TX 和 RX 的管理平面介面 |
hinic3_rss.[ch] |
接收端縮放 (RSS) 的介面 |
hinic3_rx.[ch] |
傳送介面 |
hinic3_tx.[ch] |
接收介面 |
hinic3_ethtool.c |
ethtool 操作 (ops) 的介面 |
hinic3_filter.c |
MAC 地址的介面 |
AEQ 透過描述符佇列接收來自硬體的高優先順序事件。每個描述符的大小固定為 64 位元組。 AEQ 可以接收請求的或非請求的事件。每個裝置、VF 或 PF 最多可以有 4 個 AEQ。每個 AEQ 都與一個專用的 IRQ 相關聯。 AEQ 可以接收多種型別的事件,但實際上 hinic3 驅動程式忽略除 2 個郵箱相關事件之外的所有事件。
郵箱是 hinic3 驅動程式和硬體之間的通訊機制。每個裝置都有一個獨立的郵箱。驅動程式可以使用郵箱向管理傳送請求。驅動程式透過 AEQ(使用事件 HINIC3_AEQ_FOR_MBOX)接收郵箱訊息,例如對請求的響應。由於郵箱資料暫存器的大小有限,因此郵箱訊息是分段傳送的。
每個裝置都可以使用其郵箱將請求釋出到韌體。郵箱也可以用於在 PF 和其 VF 之間釋出請求和響應。
CEQ 的實現與 AEQ 相同。它透過 32 位的固定大小描述符接收來自硬體的完成事件。每個裝置最多可以有 32 個 CEQ。每個 CEQ 都有一個專用的 IRQ。 CEQ 僅接收請求的事件,這些事件是對來自驅動程式的請求的響應。 CEQ 可以接收多種型別的事件,但實際上 hinic3 驅動程式忽略除 HINIC3_CMDQ 之外的所有事件,該事件表示先前在 cmdq 上釋出的命令已完成。
每個 cmdq 都有一個專用的工作佇列,命令釋出在該佇列上。工作佇列上的命令是大小為 64 位元組的固定大小描述符。命令的完成將使用攜帶該命令的描述符中的 ctrl 位來指示。命令完成的通知也將透過 CEQ 上的事件提供。每個裝置都有 4 個命令佇列,它們被初始化為一個集合(稱為 cmdqs),每個佇列都有自己的型別。 Hinic3 驅動程式僅使用 HINIC3_CMDQ_SYNC 型別。
工作佇列是固定大小 WQE 的邏輯陣列。該陣列可以使用間接表分佈在多個非連續頁面上。工作佇列由 I/O 佇列和命令佇列使用。
每個函式(PF 或 VF)在裝置中都有一個唯一的序號標識。許多管理命令(mbox 或 cmdq)都包含此 ID,以便硬體可以將命令效果應用於正確的函式。
PF 允許透過指定 VF 的 ID 將管理命令釋出到從屬 VF。 VF 必須提供自己的 ID。如果來自 VF 的命令包含錯誤的 ID,則硬體中的反欺騙會導致命令失敗。