estructura NDIS_RECEIVE_SCALE_PARAMETERS (ntddndis.h)

La estructura NDIS_RECEIVE_SCALE_PARAMETERS especifica los parámetros de Escalado lateral de recepción (RSS) para un adaptador de minipuerto.

Información de versión

Sintaxis

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;

Miembros

Header

Estructura NDIS_OBJECT_HEADER de la estructura NDIS_RECEIVE_SCALE_PARAMETERS . Establezca el miembro Type de la estructura que Header especifica para NDIS_OBJECT_TYPE_RSS_PARAMETERS.

  • Para los controladores NDIS 6.60 y versiones posteriores, establezca el miembro Revision en NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 y el miembro Size en NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3.

  • Para los controladores NDIS 6.20 y NDIS 6.60, establezca el miembro Revision en NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 y el miembro Size en NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2.

  • Para los controladores NDIS 6.0, establezca el miembro Revision en NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 y el miembro Size en NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1.

Flags

Valor de USHORT que indica lo que debe hacer el controlador de miniporte con los parámetros de escala de recepción. El controlador puede usar estas marcas para determinar rápidamente qué parámetros han cambiado y actualizar la configuración rss en consecuencia.

Nota

Las marcas que hacen referencia a información de parámetros RSS sin cambios son para fines de optimización. Si se establece una marca, no se ha realizado ningún cambio en el parámetro correspondiente. Si una marca está desactivada, el parámetro correspondiente puede o no haber cambiado y los controladores de minipuerto deben comparar el nuevo valor del parámetro con el valor actual para determinar un posible cambio en el parámetro.

  • En una solicitud de consulta, establezca este miembro en cero.

  • En una solicitud set, las marcas se definen de la siguiente manera:

Valor Significado
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED El miembro BaseCpuNumber no ha cambiado.
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED El miembro HashInformation no ha cambiado. La información hash incluye los tipos hash y la función hash.
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED La tabla de direccionamiento indirecto y los miembros de datos asociados no han cambiado.
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED La clave secreta y los miembros de datos asociados no han cambiado.
NDIS_RSS_PARAM_FLAG_DISABLE_RSS Si se establece esta marca, el controlador de minipuerto debe omitir todas las demás marcas y configuraciones y deshabilitar RSS en la NIC.
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED Si se establece esta marca, DefaultProcessorNumber no ha cambiado.

BaseCpuNumber

El número más bajo de CPU que se va a usar para RSS. Dado que este valor se incorpora en la tabla de direccionamiento indirecto, establezca BaseCpuNumber en cero.

HashInformation

En una solicitud set, este miembro es el tipo hash y la función hash que la NIC debe usar para calcular los valores hash de los paquetes entrantes. Si la función hash especificada dentro del miembro HashInformation es cero, RSS se deshabilita.

En una solicitud de consulta, este miembro es el tipo hash y la función hash que usa la NIC.

Los controladores y NDIS pueden usar la macro de NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC para combinar el tipo hash y la función hash en información hash y establecer el miembro HashInformation .

Los controladores de miniport pueden usar la macro NDIS_RSS_HASH_TYPE_FROM_HASH_INFO para obtener el tipo hash de HashInformation y la macro NDIS_RSS_HASH_FUNC_FROM_HASH_INFO para obtener la función hash.

IndirectionTableSize

Tamaño de la tabla de direccionamiento indirecto, en bytes. El controlador de capa superior que establece los parámetros RSS debe asegurarse de que el número de entradas de la tabla de direccionamiento indirecto es una potencia de 2.

IndirectionTableOffset

Desplazamiento de la tabla de direccionamiento indirecto desde el principio de la estructura NDIS_RECEIVE_SCALE_PARAMETERS . Use este desplazamiento para obtener la tabla de direccionamiento indirecto.

HashSecretKeySize

Tamaño de la matriz de claves secretas de la función hash, en bytes. El tamaño de la matriz es de 40 bytes para NdisHashFunctionToeplitz.

HashSecretKeyOffset

Desplazamiento de la matriz de claves secretas de la función hash desde el principio de la estructura NDIS_RECEIVE_SCALE_PARAMETERS . Use este desplazamiento para obtener la clave secreta de 320 bits (40 bytes).

  • En una solicitud de conjunto, la clave secreta puede contener los datos que elija el controlador sobreapoderado.

  • En una solicitud de consulta, la clave secreta contiene los datos que usa la NIC.

ProcessorMasksOffset

Desplazamiento de una matriz de máscaras de procesador desde el principio de la estructura NDIS_RECEIVE_SCALE_PARAMETERS .

NumberOfProcessorMasks

Número de elementos de una matriz de tipo GROUP_AFFINITY que representa los procesadores usados en la tabla de direccionamiento indirecto

ProcessorMasksEntrySize

Tamaño, en bytes, de una entrada de matriz de máscara de procesador.

DefaultProcessorNumber

Cuando RSS está habilitado, especifica el procesador que recibirá paquetes en los que no se puede calcular el hash.

Comentarios

La estructura NDIS_RECEIVE_SCALE_PARAMETERS define los parámetros de Escalado lateral de recepción (RSS) para el OID de OID_GEN_RECEIVE_SCALE_PARAMETERS .

Nota

La tabla de direccionamiento indirecto y la clave secreta se anexan después de los miembros de la estructura NDIS_RECEIVE_SCALE_PARAMETERS .

La tabla de direccionamiento indirecto tiene el siguiente formato específico de la versión:

Versión de NDIS Formato
NDIS 6.20 y versiones posteriores PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)];
Pre-NDIS 6.20 CCHAR IndirectionTable[IndirectionTableSize]

NDIS traduce automáticamente la tabla de direccionamiento indirecto si hay controladores más antiguos y más recientes en una pila de controladores.

El controlador de minipuerto debe examinar la tabla de direccionamiento indirecto para determinar los números de CPU que se van a asociar a las colas de hardware. Si el número total de números de CPU diferentes que aparecen en la tabla de direccionamiento indirecto es mayor que el número de colas de hardware que admite la NIC, el controlador de minipuerto debe elegir un subconjunto de los números de CPU de la tabla de direccionamiento indirecto. El subconjunto es igual al número de colas de hardware.

El controlador de minipuerto especificó el número de valores de colas de recepción en respuesta a OID_GEN_RECEIVE_SCALE_CAPABILITIES.

Para borrar los parámetros RSS y deshabilitar RSS, NDIS establece la función hash especificada dentro del miembro HashInformation es cero. NDIS también puede deshabilitar RSS estableciendo la marca NDIS_RSS_PARAM_FLAG_DISABLE_RSS en la estructura NDIS_RECEIVE_SCALE_PARAMETERS .

Si RSS está deshabilitado, el controlador de miniporte debe controlar las operaciones de recepción sin realizar operaciones RSS.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.0 y versiones posteriores.
Encabezado ntddndis.h (include Ndis.h)

Consulte también

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