NDIS_RECEIVE_SCALE_PARAMETERS structure (ntddndis.h)

La structure NDIS_RECEIVE_SCALE_PARAMETERS spécifie les paramètres RSS (Receive Side Scaling) pour un adaptateur miniport.

Informations sur la version

Syntaxe

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;

Membres

Header

Structure NDIS_OBJECT_HEADER de la structure NDIS_RECEIVE_SCALE_PARAMETERS . Définissez le membre Type de la structure spécifiée par Header sur NDIS_OBJECT_TYPE_RSS_PARAMETERS.

  • Pour les pilotes NDIS 6.60 et versions ultérieures, définissez le membre Revisionsur NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 et le membre Sizesur NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3.

  • Pour les pilotes NDIS 6.20 et antérieurs à NDIS 6.60, définissez le membre Revision sur NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 et le membre Size sur NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2.

  • Pour les pilotes NDIS 6.0, définissez le membre Revisionsur NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 et le membre Sizesur NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1.

Flags

Valeur USHORT qui indique ce que le pilote miniport doit faire avec les paramètres d’échelle de réception. Le pilote peut utiliser ces indicateurs pour déterminer rapidement les paramètres qui ont changé et mettre à jour les paramètres RSS en conséquence.

Notes

Les indicateurs qui font référence à des informations de paramètre RSS inchangées sont à des fins d’optimisation. Si un indicateur est défini, aucune modification n’a été apportée au paramètre correspondant. Si un indicateur est clair, le paramètre correspondant peut avoir ou non changé et les pilotes miniport doivent comparer la nouvelle valeur du paramètre à la valeur actuelle afin de déterminer une modification potentielle du paramètre.

  • Dans une demande de requête, définissez ce membre sur zéro.

  • Dans une demande d’ensemble, les indicateurs sont définis comme suit :

Valeur Signification
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED Le membre BaseCpuNumber n’a pas changé.
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED Le membre HashInformation n’a pas changé. Les informations de hachage incluent les types de hachage et la fonction de hachage.
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED La table d’indirection et les membres de données associés n’ont pas changé.
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED La clé secrète et les membres de données associés n’ont pas changé.
NDIS_RSS_PARAM_FLAG_DISABLE_RSS Si cet indicateur est défini, le pilote miniport doit ignorer tous les autres indicateurs et paramètres et désactiver RSS sur la carte réseau.
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED Si cet indicateur est défini, le DefaultProcessorNumber n’a pas changé.

BaseCpuNumber

Nombre d’UC le plus bas à utiliser pour RSS. Étant donné que cette valeur est incorporée dans la table d’indirection, définissez BaseCpuNumber sur zéro.

HashInformation

Dans une demande d’ensemble, ce membre est le type de hachage et la fonction de hachage que la carte réseau doit utiliser pour calculer les valeurs de hachage des paquets entrants. Si la fonction de hachage spécifiée dans le membre HashInformation est égale à zéro, RSS est désactivé.

Dans une demande de requête, ce membre est le type de hachage et la fonction de hachage que la carte réseau utilise.

Les pilotes de dépassement et NDIS peuvent utiliser la macro NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC pour combiner le type de hachage et la fonction de hachage en informations de hachage et définir le membre HashInformation .

Les pilotes miniport peuvent utiliser la macro NDIS_RSS_HASH_TYPE_FROM_HASH_INFO pour obtenir le type de hachage à partir de HashInformation et la macro NDIS_RSS_HASH_FUNC_FROM_HASH_INFO pour obtenir la fonction de hachage.

IndirectionTableSize

Taille de la table d’indirection, en octets. Le pilote de couche supérieure qui définit les paramètres RSS doit s’assurer que le nombre d’entrées dans la table d’indirection est une puissance de 2.

IndirectionTableOffset

Décalage de la table d’indirection à partir du début de la structure NDIS_RECEIVE_SCALE_PARAMETERS . Utilisez ce décalage pour obtenir la table d’indirection.

HashSecretKeySize

Taille du tableau de clés secrètes de la fonction de hachage, en octets. La taille du tableau est de 40 octets pour NdisHashFunctionToeplitz.

HashSecretKeyOffset

Décalage du tableau de clés secrètes de la fonction de hachage à partir du début de la structure NDIS_RECEIVE_SCALE_PARAMETERS . Utilisez ce décalage pour obtenir la clé secrète 320 bits (40 octets).

  • Dans une demande d’ensemble, la clé secrète peut contenir toutes les données choisies par le pilote de sur-position.

  • Dans une demande de requête, la clé secrète contient les données que la carte réseau utilise.

ProcessorMasksOffset

Décalage d’un tableau de masques de processeur à partir du début de la structure NDIS_RECEIVE_SCALE_PARAMETERS .

NumberOfProcessorMasks

Nombre d’éléments dans un tableau de type GROUP_AFFINITY représentant les processeurs utilisés dans la table d’indirection

ProcessorMasksEntrySize

Taille, en octets, d’une entrée de tableau de masque de processeur.

DefaultProcessorNumber

Lorsque RSS est activé, spécifie le processeur qui recevra les paquets où le hachage ne peut pas être calculé.

Remarques

La structure NDIS_RECEIVE_SCALE_PARAMETERS définit les paramètres RSS (Receive Side Scaling) pour l’OID OID_GEN_RECEIVE_SCALE_PARAMETERS .

Notes

La table d’indirection et la clé secrète sont ajoutées après les membres de la structure NDIS_RECEIVE_SCALE_PARAMETERS.

La table d’indirection a le format spécifique à la version suivant :

NDIS Version Format
NDIS 6.20 et versions ultérieures PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)];
Pré-NDIS 6.20 CCHAR IndirectionTable[IndirectionTableSize]

NDIS traduit automatiquement la table d’indirection s’il existe des pilotes plus anciens et plus récents dans une pile de pilotes.

Le pilote miniport doit examiner la table d’indirection pour déterminer les numéros de processeur à associer aux files d’attente matérielles. Si le nombre total de numéros d’UC différents qui apparaissent dans la table d’indirection est supérieur au nombre de files d’attente matérielles que la carte réseau prend en charge, le pilote miniport doit choisir un sous-ensemble des numéros de processeur dans la table d’indirection. Le sous-ensemble est égal en nombre au nombre de files d’attente matérielles.

Le pilote miniport a spécifié le nombre de files d’attente de réception en réponse à OID_GEN_RECEIVE_SCALE_CAPABILITIES.

Pour effacer les paramètres RSS et désactiver RSS, NDIS définit la fonction de hachage spécifiée dans le membre HashInformation sur zéro. NDIS peut également désactiver RSS en définissant l’indicateur NDIS_RSS_PARAM_FLAG_DISABLE_RSS dans la structure NDIS_RECEIVE_SCALE_PARAMETERS .

Si RSS est désactivé, le pilote miniport doit gérer les opérations de réception sans effectuer d’opérations RSS.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
En-tête ntddndis.h (include Ndis.h)

Voir aussi

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