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