estrutura NDIS_RECEIVE_SCALE_PARAMETERS (ntddndis.h)
A estrutura NDIS_RECEIVE_SCALE_PARAMETERS especifica os parâmetros RSS (Receive Side Scaling) para um adaptador de miniport.
Informações sobre versão
Sintaxe
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;
Membros
Header
A estrutura NDIS_OBJECT_HEADER para a estrutura NDIS_RECEIVE_SCALE_PARAMETERS . Defina o membro Type da estrutura especificada por Cabeçalho para NDIS_OBJECT_TYPE_RSS_PARAMETERS.
Para drivers NDIS 6.60 e posteriores, defina o membro Revision como NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 e o membro Sizecomo NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3.
Para drivers NDIS 6.20 e pré-NDIS 6.60, defina o membro Revision como NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 e o membro Size como NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2.
Para drivers NDIS 6.0, defina o membro Revision como NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 e o membro Sizecomo NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1.
Flags
Um valor USHORT que indica o que o driver de miniporto deve fazer com os parâmetros de escala de recebimento. O driver pode usar esses sinalizadores para determinar rapidamente quais parâmetros foram alterados e atualizar as configurações do RSS adequadamente.
Observação
Os sinalizadores que se referem a informações de parâmetro RSS inalteradas são para fins de otimização. Se um sinalizador for definido, nenhuma alteração será feita no parâmetro correspondente. Se um sinalizador estiver claro, o parâmetro correspondente poderá ou não ter sido alterado e os drivers de miniporto deverão comparar o novo valor do parâmetro com o valor atual para determinar uma possível alteração no parâmetro.
Em uma solicitação de consulta, defina esse membro como zero.
Em uma solicitação definida, os sinalizadores são definidos da seguinte maneira:
Valor | Significado |
---|---|
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED | O membro BaseCpuNumber não foi alterado. |
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED | O membro HashInformation não foi alterado. As informações de hash incluem os tipos de hash e a função de hash. |
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED | A tabela de indireção e os membros de dados associados não foram alterados. |
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED | A chave secreta e os membros de dados associados não foram alterados. |
NDIS_RSS_PARAM_FLAG_DISABLE_RSS | Se esse sinalizador estiver definido, o driver de miniporto deverá ignorar todos os outros sinalizadores e configurações e desabilitar o RSS na NIC. |
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED | Se esse sinalizador estiver definido, o DefaultProcessorNumber não será alterado. |
BaseCpuNumber
O menor número de CPU a ser usado para RSS. Como esse valor é incorporado à tabela de indireção, defina BaseCpuNumber como zero.
HashInformation
Em uma solicitação definida, esse membro é o tipo de hash e a função de hash que a NIC deve usar para calcular os valores de hash para os pacotes de entrada. Se a função hash especificada no membro HashInformation for zero, o RSS será desabilitado.
Em uma solicitação de consulta, esse membro é o tipo de hash e a função de hash que a NIC está usando.
Drivers e NDIS em excesso podem usar a macro NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC para combinar o tipo de hash e a função de hash em informações de hash e definir o membro HashInformation .
Os drivers de miniport podem usar a macro NDIS_RSS_HASH_TYPE_FROM_HASH_INFO para obter o tipo de hash de HashInformation e a macro NDIS_RSS_HASH_FUNC_FROM_HASH_INFO para obter a função de hash.
IndirectionTableSize
O tamanho da tabela de indireção, em bytes. O driver de camada superior que define os parâmetros RSS deve garantir que o número de entradas na tabela de indireção seja uma potência de 2.
IndirectionTableOffset
O deslocamento da tabela de indireção desde o início da estrutura NDIS_RECEIVE_SCALE_PARAMETERS . Use esse deslocamento para obter a tabela de indireção.
HashSecretKeySize
O tamanho da matriz de chaves secretas da função de hash, em bytes. O tamanho da matriz é de 40 bytes para NdisHashFunctionToeplitz.
HashSecretKeyOffset
O deslocamento da matriz de chaves secretas da função de hash desde o início da estrutura NDIS_RECEIVE_SCALE_PARAMETERS . Use esse deslocamento para obter a chave secreta de 320 bits (40 bytes).
Em uma solicitação definida, a chave secreta pode conter todos os dados escolhidos pelo driver sobressocida.
Em uma solicitação de consulta, a chave secreta contém os dados que a NIC está usando.
ProcessorMasksOffset
O deslocamento de uma matriz de máscaras de processador desde o início da estrutura NDIS_RECEIVE_SCALE_PARAMETERS .
NumberOfProcessorMasks
O número de elementos em uma matriz do tipo GROUP_AFFINITY que representa os processadores usados na tabela de indireção
ProcessorMasksEntrySize
O tamanho, em bytes, de uma entrada de matriz de máscara de processador.
DefaultProcessorNumber
Quando o RSS está habilitado, especifica o processador que receberá pacotes em que o hash não pode ser calculado.
Comentários
A estrutura NDIS_RECEIVE_SCALE_PARAMETERS define os parâmetros RSS (Receive Side Scaling) para o OID OID_GEN_RECEIVE_SCALE_PARAMETERS .
Observação
A tabela de indireção e a chave secreta são acrescentadas após os membros da estrutura NDIS_RECEIVE_SCALE_PARAMETERS .
A tabela de indireção tem o seguinte formato específico da versão:
Versão do NDIS | Formatar |
---|---|
NDIS 6.20 e versões posteriores | PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)]; |
Pré-NDIS 6.20 | CCHAR IndirectionTable[IndirectionTableSize] |
O NDIS converte automaticamente a tabela de indireção se houver drivers mais antigos e mais recentes em uma pilha de driver.
O driver de miniporte deve examinar a tabela de indireção para determinar os números da CPU a serem associados às filas de hardware. Se o número total de números de CPU diferentes que aparecem na tabela de indireção for maior do que o número de filas de hardware compatíveis com a NIC, o driver de miniporte deverá escolher um subconjunto dos números da CPU na tabela de indireção. O subconjunto é igual em número ao número de filas de hardware.
O driver de miniporto especificou o número de valores de filas de recebimento em resposta a OID_GEN_RECEIVE_SCALE_CAPABILITIES.
Para limpar os parâmetros RSS e desabilitar o RSS, o NDIS define que a função de hash especificada dentro do membro HashInformation é zero. O NDIS também pode desabilitar o RSS definindo o sinalizador NDIS_RSS_PARAM_FLAG_DISABLE_RSS na estrutura NDIS_RECEIVE_SCALE_PARAMETERS .
Se o RSS estiver desabilitado, o driver de miniporto deverá lidar com operações de recebimento sem executar operações de RSS.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no NDIS 6.0 e posterior. |
Cabeçalho | ntddndis.h (inclua Ndis.h) |
Confira também
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO