共用方式為


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)

另請參閱

接收端調整 (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