Compartilhar via


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

RSS (Receive Side Scaling)

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