共用方式為


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)

另請參閱

Receive Side Scaling (RSS)

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO

NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC

NDIS_RSS_HASH_TYPE_FROM_HASH_INFO

OID_GEN_RECEIVE_SCALE_CAPABILITIES

OID_GEN_RECEIVE_SCALE_PARAMETERS