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 指定為 NDIS_OBJECT_TYPE_RSS_PARAMETERS之 結構 Type 成員。
針對 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