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.

Syntaxe

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;

Membres

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.

Note Cette valeur remplace la valeur MaxInitiatorRequestSge pour les demandes 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
NDK_ADAPTER_FLAG_IN_ORDER_DMA_SUPPORTED
0x00000001
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.
NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED
0x00000002

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.

NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED
0x00000004
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 .
NDK_ADAPTER_FLAG_MULTI_ENGINE_SUPPORTED
0x00000008
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.
NDK_ADAPTER_FLAG_RDMA_READ_LOCAL_INVALIDATE_SUPPORTED
0x00000010
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.

NDK_ADAPTER_FLAG_CQ_RESIZE_SUPPORTED
0x00000100
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.
NDK_ADAPTER_FLAG_LOOPBACK_CONNECTIONS_SUPPORTED
0x00010000
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

Notes

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.

Spécifications

   
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)

Voir aussi

NDK_CQ_DISPATCH

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION

NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN

NDK_VERSION