структура 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_OBJECT_HEADER для структуры NDIS_RECEIVE_SCALE_PARAMETERS . Задайте для элемента 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 и pre-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 Если этот флаг установлен, драйвер мини-порта должен игнорировать все остальные флаги и параметры и отключить RSS на сетевом адаптере.
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED Если этот флаг установлен, значение DefaultProcessorNumber не изменилось.

BaseCpuNumber

Наименьшее число ЦП, используемое для RSS. Так как это значение включено в таблицу косвенного обращения, задайте для BaseCpuNumber значение 0.

HashInformation

В запросе набора этот член является хэш-типом и хэш-функцией, которую сетевой адаптер должен использовать для вычисления хэш-значений для входящих пакетов. Если хэш-функция, указанная в элементе HashInformation , равна нулю, RSS отключена.

В запросе запроса этот член является хэш-типом и хэш-функцией, которые использует сетевой адаптер.

Драйверы overlying и 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

Размер массива секретных ключей хэш-функции в байтах. Размер массива составляет 40 байт для NdisHashFunctionToeplitz.

HashSecretKeyOffset

Смещение массива секретных ключей хэш-функции от начала структуры NDIS_RECEIVE_SCALE_PARAMETERS . Используйте это смещение, чтобы получить 320-разрядный (40 байт) секретный ключ.

  • В запросе набора секретный ключ может содержать любые данные, выбранные драйвером.

  • В запросе секретный ключ содержит данные, которые использует сетевой адаптер.

ProcessorMasksOffset

Смещение массива масок процессора от начала структуры NDIS_RECEIVE_SCALE_PARAMETERS .

NumberOfProcessorMasks

Количество элементов в массиве типа GROUP_AFFINITY , представляющих процессоры, используемые в таблице косвенного обращения.

ProcessorMasksEntrySize

Размер (в байтах) записи массива маски процессора.

DefaultProcessorNumber

Если rss включен, указывает процессор, который будет получать пакеты, в которых хэш не может быть вычислен.

Комментарии

Структура NDIS_RECEIVE_SCALE_PARAMETERS определяет параметры масштабирования на стороне получения (RSS) для OID_GEN_RECEIVE_SCALE_PARAMETERS OID.

Примечание

Таблица косвенного обращения и секретный ключ добавляются после членов структуры NDIS_RECEIVE_SCALE_PARAMETERS .

Таблица косвенного обращения имеет следующий формат для конкретной версии:

Версия NDIS Формат
NDIS 6.20 и более поздних версий PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)];
Предварительная NDIS 6.20 CCHAR IndirectionTable[IndirectionTableSize]

NDIS автоматически преобразует таблицу косвенного обращения, если в стеке драйверов есть старые и новые драйверы.

Драйвер мини-порта должен изучить таблицу косвенного обращения, чтобы определить номера ЦП, которые необходимо связать с очередями оборудования. Если общее количество различных номеров ЦП, отображаемых в таблице косвенного обращения, превышает количество аппаратных очередей, поддерживаемых сетевой картой, драйвер мини-порта должен выбрать подмножество номеров ЦП из таблицы косвенного обращения. Подмножество равно количеству аппаратных очередей.

Драйвер мини-порта указал число очередей получения в ответ на OID_GEN_RECEIVE_SCALE_CAPABILITIES.

Чтобы очистить параметры RSS и отключить RSS, NDIS устанавливает хэш-функцию, указанную в элементе HashInformation , равным нулю. NDIS также может отключить RSS, установив флаг NDIS_RSS_PARAM_FLAG_DISABLE_RSS в структуре NDIS_RECEIVE_SCALE_PARAMETERS .

Если 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