структура 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) |
См. также раздел
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO