NDIS_RECEIVE_SCALE_CAPABILITIES結構 (ntddndis.h)
NDIS_RECEIVE_SCALE_CAPABILITIES 結構會指定迷你埠配接器的 接收端調整 (RSS) 功能。
語法
typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
NDIS_OBJECT_HEADER Header;
NDIS_RSS_CAPS_FLAGS CapabilitiesFlags;
ULONG NumberOfInterruptMessages;
ULONG NumberOfReceiveQueues;
USHORT NumberOfIndirectionTableEntries;
} NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;
成員
Header
NDIS_RECEIVE_SCALE_CAPABILITIES 結構的 NDIS_OBJECT_HEADER 結構。 設定 Header 指定 NDIS_OBJECT_TYPE_RSS_CAPABILITIES之結構 Type 成員。
針對 NDIS 6.60 和更新版本,將 Revision 成員設定為 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_3,並將 Size 成員設定為 NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_3。
針對 NDIS 6.30 和更新版本,將 Revision 成員設定為 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2,並將 Size 成員設定為 NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2。
若為 NDIS 6.0、6.1 和 6.20,請將 Revision 成員設為 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1,並將 Size 成員設定為 NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1。
CapabilitiesFlags
指定 NIC RSS 功能的旗標位掩碼。 迷你連接埠驅動程式可以指定下列旗標:
價值 | 意義 |
---|---|
|
如果 NIC 支援訊息訊號中斷(MSIS),請設定此旗標。 此旗標表示 NIC 會在將指派給該 CPU 的封包排入佇列之後,為每個 CPU 產生個別的中斷。 |
|
如果 NIC 可以指示目標 CPU 已將接收封包排入佇列的 MiniportInterrupt 函式,請設定此旗標。 |
|
如果 NIC 使用訊息訊號中斷 (MSIs) ,請設定此旗標。 NDIS 6.20 和更新版本支援此旗標。 |
|
如果 NIC 支援埠的獨立 RSS 組態,請設定此旗標。 NDIS 6.30 和更新版本支援此旗標。 |
|
如果 NIC 支援 MSIS,請設定此旗標。 NDIS 6.30 和更新版本支援此旗標。 |
|
如果迷你埠驅動程式可以偵測到哪些目標 CPU 已從其 MiniportInterruptDPC 函式佇列接收封包,請設定此旗標。 |
|
如果 NIC 可以識別 IPv4 封包,請設定此旗標(含或不含選項)。 此外,NIC 支援透過 IPv4 標頭欄位和 TCP 標頭字段計算哈希值。 |
|
如果 NIC 可以識別 IPv6 封包,並透過 IPv6 封包中的欄位計算哈希值,請設定此旗標。 NIC 必須能夠透過基本 IPv6 標頭中的欄位和 TCP 標頭中的欄位計算哈希值。 如果 NIC 無法計算位於 IPv6 延伸模組標頭中的欄位的哈希值,請使用此旗標。 |
|
如果 NIC 可以識別 IPv6 封包,並針對包含 IPv6 擴充功能標頭的 IPv6 封包中的欄位計算哈希值,請設定此旗標。 NIC 可以透過基本 IPv6 標頭、IPv6 延伸模組標頭和 TCP 標頭中的欄位計算哈希值。 NIC 必須能夠計算家庭位址選項中字段的哈希值,以及 IPv6 擴充功能標頭中的 type-2 路由標頭。 |
|
如果 NIC 可以識別具有或沒有選項的 IPv4 封包,以及 NIC 是否支援透過 IPv4 標頭欄位和 UDP 標頭字段計算哈希值,請設定此旗標。 |
|
如果 NIC 可以識別 IPv6 封包,並透過 IPv6 封包中的欄位計算哈希值,請設定此旗標。 NIC 必須能夠透過基本 IPv6 標頭中的欄位和 UDP 標頭中的欄位來計算哈希值。 如果 NIC 無法計算位於 IPv6 延伸模組標頭中的欄位的哈希值,請使用此旗標。 |
|
如果 NIC 可以識別 IPv6 封包,並針對包含 IPv6 擴充功能標頭的 IPv6 封包中的欄位計算哈希值,請設定此旗標。 NIC 可以透過基本 IPv6 標頭、IPv6 延伸模組標頭和 UDP 標頭中的欄位計算哈希值。 NIC 必須能夠計算家庭位址選項中字段的哈希值,以及 IPv6 擴充功能標頭中的 type-2 路由標頭。 |
|
如果 NIC 支援 toeplitz 哈希函式,請設定此旗標。 如果 NIC 支援 RSS,則哈希函式的支援是必要的。 如需哈希函式的詳細資訊,請參閱 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO。 |
|
此旗標保留供日後使用。 |
|
此旗標保留供日後使用。 |
|
此旗標保留供日後使用。 |
NumberOfInterruptMessages
如果 NIC 支援 MSIS,NIC 支援的中斷訊息數目。 如果 NIC 不支援 MSIS,但支援以行為基礎的中斷,請將此數位設定為 1。
NumberOfReceiveQueues
NIC 支援的硬體接收佇列數目。
NumberOfIndirectionTableEntries
迷你埠驅動程式在間接取值數據表中支援的最大項目數。 此值必須是 2 的冪。 所有 NDIS 6.30 和更新版本的迷你埠配接器都必須支援此成員,這是虛擬函式的必要專案。
言論
過度應用驅動程式可以使用 OID_GEN_RECEIVE_SCALE_CAPABILITIES OID 來查詢 NIC 及其迷你埠驅動程式的接收端調整 (RSS) 功能。
迷你埠驅動程式會傳回 NDIS_RECEIVE_SCALE_CAPABILITIES 結構中的 RSS 功能。
對於某些工作負載,由於路由變更或傳送者未遵守 MTU 限制,所以 UDP 封包的子集可能會分散。 在這種情況下,相同流程的封包可能會根據 4 元組或 2 元組哈希在不同的處理器上表示。 因此,公告 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV4、NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6和 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX 的迷你埠驅動程序應該提供一種方式,透過進階屬性停用 UDP RSS 功能。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
標頭 | ntddndis.h (包括 Ndis.h) |