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 指定之 結構的 Type 成員設定為NDIS_OBJECT_TYPE_RSS_CAPABILITIES。
若為 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 支援訊息訊號中斷, (MSI) ,請設定此旗標。 此旗標表示 NIC 會在將指派給該 CPU 的封包排入佇列之後,為每個 CPU 產生個別中斷。 |
|
如果 NIC 可以指示目標 CPU 已排入佇列接收封包的 MiniportInterrupt 函式,請設定此旗標。 |
|
如果 NIC 使用訊息訊號中斷, (MSI) ,請設定此旗標。 NDIS 6.20 和更新版本支援此旗標。 |
|
如果 NIC 支援 MSI,請設定此旗標。 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 不支援 MSI,但支援以行為基礎的中斷,請將此數位設定為 1。
NumberOfReceiveQueues
NIC 支援的硬體接收佇列數目。
NumberOfIndirectionTableEntries
迷你埠驅動程式在間接數據表中支援的最大項目數。 此值必須是 2 的冪。 所有 NDIS 6.30 和更新版本的迷你埠配接器都必須支援此成員,這是虛擬函式所需的成員。
備註
過度運用驅動程式可以使用 OID_GEN_RECEIVE_SCALE_CAPABILITIES OID 可查詢 NIC 及其迷你埠驅動程式的接收端調整 (RSS) 功能。
迷你埠驅動程式會傳回 NDIS_RECEIVE_SCALE_CAPABILITIES 結構中的 RSS 功能。
對於某些工作負載,UDP 封包的子集可能會因為路由變更或傳送者未遵守 MTU 限制而分散。 在這種情況下,相同流程的封包可能會根據 4 元組或 2 個 Tuple 哈希,在不同的處理器上表示。 因此,公告 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) |