共用方式為


廣告 VMMQ 功能

迷你埠驅動程式會在迷你埠配接器初始化期間, (VMMQ) NIC 註冊虛擬機器多個佇列

注意

如果 NIC 支援 VMMQ,預設 VPort 和至少一個非預設 VPort 必須支援 VMMQ。

在初始化期間,迷你埠驅動程式必須檢查 *RssOnHostVPorts INF 關鍵字,以判斷它是否應該在 NIC 上啟用 VMMQ 功能。 如需處理 VMMQ RSS 關鍵字的詳細資訊,請參閱 VMMQ 的標準化 INF 關鍵字

此外,如果迷你埠介面卡支援建立 NIC 交換器,堆疊只能啟用 NIC 上的 VMMQ。 當 *SriovPreferred INF 關鍵字設定為 *SriovPreferred 設為 ,而 *RssOrVmqPreference 設為 時,NDIS 可以在迷你埠配接器上建立 NIC 參數。 如需詳細資訊,請參閱 SR-IOV 的標準化 INF 關鍵字VMQ 的標準化 INF 關鍵字

當迷你埠驅動程式設定 NIC 參數時,它必須設定 NDIS_NIC_SWITCH_PARAMETERS 結構的欄位,如下所示:

  1. [標頭] 的[修訂成員] 設定為[NDIS_NIC_SWITCH_PARAMETERS_REVISION_2]。

  2. NumQueuePairsForDefaultVPort 設定為指派給預設 VPort 的佇列配對數目。

迷你埠驅動程式會透過 NDIS_NIC_SWITCH_CAPABILITIES 結構公告 NIC 的 VMMQ 功能。 迷你埠驅動程式必須初始化 NDIS_NIC_SWITCH_CAPABILITIES ,如下所示:

  1. HeaderRevision成員設定為NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3

  2. 設定 NicSwitchCapabilities 旗標,如下所示:

    • 將NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL設定為 一個 ,表示可以在 PF 上建立非預設 VPorts。 必須設定此旗標。

    • 設定NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED,指出 NDIS 可以在每個 VPort 上配置任意數目的 VMMQ 佇列。 否則,所有非預設 VPorts 的 VMMQ 佇列數目上限都與 MaxNumQueuePairsPerNonDefaultVPort 欄位定義相同。

    • 將NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED設定為 一個 ,表示 NIC 支援 PF VPorts 的 VMMQ。

    注意

    如果未設定下列四個 PF VPort 旗標,較高層級的驅動程式將會使用設定 PF VPorts RSS 參數時所指定的值, (包括預設 VPort) 。 如需詳細資訊,請參閱 在 VPort 上啟用、停用和更新 VMMQ

    • 將NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED設定為 一個 ,指出 NIC 能夠維護每個 PF VPort 間接存取資料表。 必須設定此旗標。

    注意

    下列三個旗標NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED、NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED和NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED必須全部設定為 或全部設定為 。 如果全部設定為 ,軟體將會重新計算雜湊。

    • 如果 NIC 支援為每個 PF VPort 設定不同的雜湊函式,請將NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED設定為 個。

    • 如果 NIC支援為每個 PF VPort 設定不同的雜湊類型,請將NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED設定為一個。

    • 如果 NIC支援為每個 PF VPort 設定不同的雜湊秘密金鑰,請將NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED設定為一個。

    • 如果 NIC 對 PF VPorts 的間接資料表大小有限制,請將NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED設定為 。 此旗標會強制 RSS OID 的簽發者使用每一 PF VPort 間接存取資料表大小,等於四捨五入至兩個乘冪的 VPort 佇列數目。 此旗標可以與NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED旗標結合, (不同的 PF VPorts 可以有不同的佇列數目) 。 此旗標可防止 VMMQ 使用者執行更細緻的佇列控制。

  3. 設定 MaxNumVPorts 以指定 VPorts 的最大數目。

  4. 設定 MaxNumQueuePairs 以指定可指派給所有 VPorts 的佇列配對數目上限。 這包括連結至 PF 的預設 VPort。 此數位應該反映實際的硬體功能。

  5. 設定 MaxNumQueuePairsPerNonDefaultVPort 以指定可指派給非預設 VPort 的佇列配對數目上限。

  6. 設定 MaxNumRssCapableNonDefaultPFVPorts 以指定可支援 VMMQ 的非預設 PF VPorts 數目上限。

  7. 設定 NumberOfIndirectionTableEntriesForDefaultVPort 以指定預設 VPort 的間接資料表專案數目。

  8. 設定 NumberOfIndirectionTableEntriesPerNonDefaultPFVPort 來指定每個非預設 PF VPort 的間接資料表專案數目。 所有非預設 PF VPorts 的間接資料表大小都應該相同。

  9. 設定 MaxNumQueuePairsForDefaultVPort 以指定可在 NIC 交換器建立期間指派給預設 VPort 的佇列配對數目上限。

在公告 VMMQ 功能之後,NDIS 會負責在預設 VPort 或非預設 VPort 上呼叫 OID 時處理 OID_GEN_RECEIVE_SCALE_CAPABILITIES OID。 當迷你埠驅動程式傳回 NDIS_RECEIVE_SCALE_CAPABILITIES 結構中的 RSS 功能時,它不應該將 NumberOfInterruptMessages 欄位限制為任何標準 RSS 關鍵字 (,例如 *MaxRssProcessors) 。 上層驅動程式會將此數位併入主機 CPU 配置演算法中。