NDIS_RECEIVE_SCALE_PARAMETERS 結構 (ntddndis.h)
NDIS_RECEIVE_SCALE_PARAMETERS結構會指定迷你埠配接器的接收端調整 (RSS) 參數。
版本資訊
語法
typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
NDIS_OBJECT_HEADER Header;
USHORT Flags;
USHORT BaseCpuNumber;
ULONG HashInformation;
USHORT IndirectionTableSize;
ULONG IndirectionTableOffset;
USHORT HashSecretKeySize;
ULONG HashSecretKeyOffset;
ULONG ProcessorMasksOffset;
ULONG NumberOfProcessorMasks;
ULONG ProcessorMasksEntrySize;
PROCESSOR_NUMBER DefaultProcessorNumber;
} NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
成員
Header
NDIS_RECEIVE_SCALE_PARAMETERS 結構的NDIS_OBJECT_HEADER結構。 將 Header 指定之 結構的 Type 成員設定為NDIS_OBJECT_TYPE_RSS_PARAMETERS。
若為 NDIS 6.60 和更新版本的驅動程式,請將 Revision 成員設定為 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 ,並將 Size 成員設定為 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3。
針對 NDIS 6.20 和 NDIS 6.60 驅動程式,請將 Revision 成員設定為 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 ,並將 Size 成員設定為 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2。
若為 NDIS 6.0 驅動程式,請將 Revision 成員設定為 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 ,並將 Size 成員設定為 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1。
Flags
USHORT 值,指出迷你埠驅動程序應該對接收級別參數執行的動作。 驅動程式可以使用這些旗標快速判斷哪些參數已變更,並據以更新 RSS 設定。
注意
參考未變更 RSS 參數資訊的旗標僅供優化之用。 如果已設定旗標,則未對對應的參數進行任何變更。 如果旗標清楚,對應的參數可能或可能尚未變更,而且迷你埠驅動程序必須比較參數的新值與目前的值,才能判斷參數中的潛在變更。
在查詢要求中,將此成員設定為零。
在設定要求中,旗標的定義如下:
值 | 意義 |
---|---|
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED | BaseCpuNumber 成員尚未變更。 |
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED | HashInformation 成員尚未變更。 哈希資訊包括哈希類型和哈希函式。 |
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED | 間接數據表和相關聯的數據成員尚未變更。 |
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED | 秘密金鑰和相關聯的數據成員尚未變更。 |
NDIS_RSS_PARAM_FLAG_DISABLE_RSS | 如果設定此旗標,迷你埠驅動程序應該忽略所有其他旗標和設定,並在 NIC 上停用 RSS。 |
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED | 如果已設定此旗標, 則 DefaultProcessorNumber 尚未變更。 |
BaseCpuNumber
要用於 RSS 的最低 CPU 數目。 因為此值會併入間接取值數據表中,請將 BaseCpuNumber 設定為零。
HashInformation
在集合要求中,此成員是 NIC 應該用來計算傳入封包哈希值的哈希類型和哈希函式。 如果在 HashInformation 成員內指定的哈希函式為零,則會停用 RSS。
在查詢要求中,此成員是 NIC 所使用的哈希類型和哈希函式。
過度運用驅動程式和 NDIS 可以使用 NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC 宏,將哈希類型和哈希函式合併成哈希資訊,並設定 HashInformation 成員。
迷你埠驅動程式可以使用 NDIS_RSS_HASH_TYPE_FROM_HASH_INFO 宏,從 HashInformation 取得哈希類型,以及 從 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO 宏取得哈希函式。
IndirectionTableSize
間接數據表的大小,以位元組為單位。 設定 RSS 參數的上層驅動程式必須確定間接取值數據表中的項目數是 2 的冪。
IndirectionTableOffset
從 NDIS_RECEIVE_SCALE_PARAMETERS 結構的開頭的間接數據表位移。 使用此位移來取得間接數據表。
HashSecretKeySize
哈希函式的秘密金鑰陣列大小,以位元組為單位。 陣列的大小是 NdisHashFunctionToeplitz 的 40 個字節。
HashSecretKeyOffset
哈希函式的秘密金鑰陣列從 NDIS_RECEIVE_SCALE_PARAMETERS 結構的開頭位移。 使用此位移來取得 320 位 (40 個字節) 秘密密鑰。
在設定要求中,秘密密鑰可以包含過度處理驅動程序選擇的任何數據。
在查詢要求中,秘密金鑰包含 NIC 正在使用的資料。
ProcessorMasksOffset
處理器遮罩數位從 NDIS_RECEIVE_SCALE_PARAMETERS 結構的開頭位移。
NumberOfProcessorMasks
類型陣列中的元素數目 ,GROUP_AFFINITY 代表間接數據表中使用的處理器
ProcessorMasksEntrySize
處理器遮罩數位專案的大小,以位元組為單位。
DefaultProcessorNumber
啟用 RSS 時,指定將接收無法計算哈希之封包的處理器。
備註
NDIS_RECEIVE_SCALE_PARAMETERS 結構會定義 OID_GEN_RECEIVE_SCALE_PARAMETERS OID 的接收端調整 (RSS) 參數。
注意
間接數據表和秘密金鑰會附加在 NDIS_RECEIVE_SCALE_PARAMETERS 結構成員之後。
間接資料表具有下列版本特定格式:
NDIS 版本 | 格式 |
---|---|
NDIS 6.20 和更新版本 | PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)]; |
NDIS 6.20 之前 | CCHAR IndirectionTable[IndirectionTableSize] |
如果驅動程式堆疊中有較舊的和較新的驅動程式,NDIS 會自動轉譯間接數據表。
迷你埠驅動程序必須檢查間接數據表,以判斷要與硬體佇列相關聯的 CPU 號碼。 如果間接取值數據表中顯示的不同 CPU 數位總數超過 NIC 支援的硬體佇列數目,迷你埠驅動程式必須從間接數據表挑選 CPU 號碼的子集。 子集的數目等於硬體佇列的數目。
迷你埠驅動程式指定接收佇列值的數目,以回應 OID_GEN_RECEIVE_SCALE_CAPABILITIES。
若要清除 RSS 參數並停用 RSS,NDIS 會設定 HashInformation 成員內指定的哈希函式為零。 NDIS 也可以藉由在NDIS_RECEIVE_SCALE_PARAMETERS結構中設定NDIS_RSS_PARAM_FLAG_DISABLE_RSS旗標來停用 RSS。
如果停用 RSS,迷你埠驅動程式應該處理接收作業,而不需執行 RSS 作業。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
標頭 | ntddndis.h (包含 Ndis.h) |
另請參閱
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO