structure NDK_ADAPTER_INFO (ndkinfo.h)
La structure NDK_ADAPTER_INFO spécifie des informations sur les limites et les fonctionnalités d’un adaptateur NDK.
typedef struct _NDK_ADAPTER_INFO {
NDK_VERSION Version;
UINT32 VendorId;
UINT32 DeviceId;
SIZE_T MaxRegistrationSize;
SIZE_T MaxWindowSize;
ULONG FRMRPageCount;
ULONG MaxInitiatorRequestSge;
ULONG MaxReceiveRequestSge;
ULONG MaxReadRequestSge;
ULONG MaxTransferLength;
ULONG MaxInlineDataSize;
ULONG MaxInboundReadLimit;
ULONG MaxOutboundReadLimit;
ULONG MaxReceiveQueueDepth;
ULONG MaxInitiatorQueueDepth;
ULONG MaxSrqDepth;
ULONG MaxCqDepth;
ULONG LargeRequestThreshold;
ULONG MaxCallerData;
ULONG MaxCalleeData;
ULONG AdapterFlags;
NDK_RDMA_TECHNOLOGY RdmaTechnology;
} NDK_ADAPTER_INFO;
Version
Versions principale et mineure de l’interface NDK (NDK_VERSION).
VendorId
Identificateur unique d’organisation (OUI) d’un fournisseur.
DeviceId
Identificateur d’appareil défini par le fournisseur.
MaxRegistrationSize
Taille maximale, en octets, d’une inscription mémoire unique que l’adaptateur peut traiter.
MaxWindowSize
Taille maximale, en octets, d’une fenêtre mémoire unique.
FRMRPageCount
Taille de la région de mémoire d’enregistrement rapide (FRMR) (dans PAGE_SIZE pages) pour laquelle la carte prend en charge le plus grand nombre de FRMR. Un fournisseur doit prendre en charge au moins 16 pages FRMR. Cette valeur est généralement utilisée par les couches supérieures comme taille FRMR qui optimise les opérations d’E/S basées sur FRMR simultanées. Par conséquent, la publicité d’une valeur supérieure à 16 ne devrait être faite que si le nombre total de FRMRs pris en charge avec cette taille n’est pas réduit de façon significative.
MaxInitiatorRequestSge
Nombre maximal d’entrées de collecte de points (SGE) qui peuvent être spécifiées dans une requête unique sur une file d’attente d’initiateurs.
MaxReceiveRequestSge
Nombre maximal d’EG pouvant être spécifiés dans une requête unique sur une file d’attente de réception.
MaxReadRequestSge
Nombre maximal de SGE qui peuvent être spécifiés dans une demande de lecture.
MaxTransferLength
Longueur totale maximale qui peut être référencée par tous les SGE dans une seule demande d’envoi, de réception, de lecture ou d’écriture.
MaxInlineDataSize
Quantité maximale de données inline, en octets, qui peuvent être envoyées dans une seule demande d’envoi ou d’écriture.
MaxInboundReadLimit
Nombre maximal d’opérations de lecture entrantes en cours pour chaque QP.
MaxOutboundReadLimit
Nombre maximal d’opérations de lecture sortantes en cours pour chaque QP.
MaxReceiveQueueDepth
Nombre maximal de demandes en suspens pour chaque file d’attente de réception.
MaxInitiatorQueueDepth
Nombre maximal de demandes en suspens pour chaque file d’attente d’initiateurs.
MaxSrqDepth
Nombre maximal de demandes en suspens pour chaque file d’attente de réception partagée (SRQ). La valeur zéro signifie qu’il n’y a pas de prise en charge SRQ.
MaxCqDepth
Nombre maximal d’entrées d’achèvement pour chaque file d’attente d’achèvement (CQ).
LargeRequestThreshold
Indicateur de taille des données, en octets, au-dessus duquel les opérations de lecture et d’écriture produisent de meilleurs résultats que les opérations d’envoi et de réception.
MaxCallerData
Taille maximale, en octets, des données privées qui peuvent être envoyées avec une demande de connexion.
MaxCalleeData
Taille maximale, en octets, des données privées qui peuvent être envoyées avec une demande d’acceptation ou de refus.
AdapterFlags
Ensemble d’indicateurs qui déterminent les propriétés de l’adaptateur. Les indicateurs actuellement définis sont les suivants :
Valeur | Signification |
---|---|
|
Définissez si le fournisseur écrit les données entrantes dans la mémoire tampon du consommateur dans l’ordre. Autrement dit, la dernière position d’octet dans la mémoire tampon du consommateur n’est pas mise à jour avant toute position d’octet antérieure. |
|
Définissez si le fournisseur n’a pas besoin de droits d’accès spéciaux sur la mémoire tampon du récepteur pour une demande de lecture RDMA. Lorsque cet indicateur est défini, le consommateur n’est pas tenu d’utiliser les indicateurs NDK_MR_FLAG_RDMA_READ_SINK ou NDK_OP_FLAG_RDMA_READ_SINK lorsqu’il inscrit des mémoires tampons récepteur pour les demandes de lecture RDMA. Le consommateur peut également utiliser des mappages d’adresses logiques directement (avec un jeton obtenu avec la fonction NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN ) en tant que mémoires tampons de récepteur de lecture RDMA. Cela est similaire à l’accès aux mémoires tampons locales pour les opérations d’écriture, d’envoi et de réception RDMA. |
|
Définissez si le fournisseur prend en charge la modération d’interruption contrôlée par programmation pour chaque file d’attente d’achèvement (CQ). Lorsque cet indicateur est défini, un consommateur NDK peut utiliser la fonction NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION dans la table NDK_CQ_DISPATCH . |
|
Définissez si le fournisseur prend en charge le traitement simultané de plusieurs connexions avec plusieurs moteurs d’exécution. Si cet indicateur est défini, un consommateur NDK qui utilise plusieurs connexions simultanément sur l’adaptateur peut fournir de meilleures performances qu’une seule connexion. |
|
Définissez si le fournisseur prend en charge l’invalidation du jeton local spécifié dans le premier NDK_SGE passé à une fonction NdkRead (NDK_FN_READ) lors de la fin de la demande de lecture.
Note Cette valeur est prise en charge uniquement dans NDKPI 1.2 (Windows Server 2012 R2) et versions ultérieures. |
|
Définissez si le fournisseur prend en charge le redimensionnement des objets CQ. Si cet indicateur n’est pas défini, le consommateur ne doit pas tenter un redimensionnement CQ. |
|
Définissez si le fournisseur prend en charge les connexions de bouclage. Autrement dit, bouclage d’une adresse réseau locale sur une carte réseau donnée vers la même adresse locale sur la même carte réseau. |
RdmaTechnology
La fonction NDK_FN_QUERY_ADAPTER_INFO récupère le NDK_ADAPTER_INFO, qui contient des informations sur les différentes limites et fonctionnalités de l’adaptateur.
Client minimal pris en charge | Aucun pris en charge, pris en charge dans NDIS 6.30 et versions ultérieures. |
Serveur minimal pris en charge | Windows Server 2012 |
En-tête | ndkinfo.h (inclure Ndkpi.h) |
NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION