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
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO