NDIS_UDP_SEGMENTATION_OFFLOAD structure (ntddndis.h)

La structure NDIS_UDP_SEGMENTATION_OFFLOAD fournit des informations de déchargement de segmentation UDP (USO) dans la structure NDIS_OFFLOAD .

Syntaxe

typedef struct _NDIS_UDP_SEGMENTATION_OFFLOAD {
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved : 25;
#else
    ULONG Reserved : 26;
#endif
  } IPv4;
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved1 : 25;
#else
    ULONG Reserved1 : 26;
#endif
    ULONG IpExtensionHeadersSupported : 2;
    ULONG Reserved2 : 30;
  } IPv6;
} NDIS_UDP_SEGMENTATION_OFFLOAD, *PNDIS_UDP_SEGMENTATION_OFFLOAD;

Membres

IPv4

Structure dans NDIS_UDP_SEGMENTATION_OFFLOAD qui spécifie des informations IPv4, contenant les membres suivants :

IPv4.Encapsulation

Paramètres d’encapsulation pour IPv4. Pour plus d’informations sur ce membre, consultez la section Remarques suivante.

IPv4.MaxOffLoadSize

Nombre maximal d’octets de données utilisateur que le transport peut passer au pilote miniport dans un seul paquet. Le transport ne transmet pas de paquet au pilote miniport qui contient plus d’octets de données utilisateur que maxOffLoadSize spécifié. Si un tel paquet doit être transmis, le transport lui-même segmente le paquet en paquets plus petits.

IPv4.MinSegmentCount

Nombre minimal de segments par 2000 pour qu’un paquet UDP volumineux soit divisible avant que le transport puisse le décharger sur le matériel à des fins de segmentation. Le transport ne déchargera pas un paquet volumineux vers le pilote miniport à des fins de segmentation, sauf si le pilote miniport peut créer au moins autant de segments que minSegmentCount spécifie à partir du paquet. Si un paquet UDP volumineux ne répond pas à l’exigence de segment minimal, le transport TCP/IP segmente lui-même le paquet en paquets plus petits.

IPv4.SubMssFinalSegmentSupported

Valeur ULONG qui spécifie si tous les segments qu’un pilote miniport dérive d’un paquet UDP volumineux doivent avoir la même taille maximale de segment (MSS) ou non. Si le pilote miniport ne définit pas la fonctionnalité SubMssFinalSegmentSupported , chaque paquet UDP volumineux déchargé par le transport doit avoir Length % MSS == 0. Autrement dit, le paquet volumineux est divisible en N paquets avec chaque segment de paquet contenant exactement des octets utilisateur MSS . Si le pilote miniport définit la fonctionnalité SubMssFinalSegmentSupported , cette condition de divisibilité de longueur de paquet sur le transport ne s’applique pas. En d’autres termes, le segment final peut être inférieur à MSS.

Le pilote doit définir la valeur de SubMssFinalSegmentSupported sur NDIS_OFFLOAD_SUPPORTED si le miniport est capable de segmenter les envois UDP où la longueur totale du paquet volumineux a un reste différent de zéro lorsqu’il est divisé par MSS. Lorsque la prise en charge du pilote miniport est indiquée via cet indicateur, le pilote de protocole est autorisé à émettre des envois UDP volumineux où la longueur de charge utile UDP du paquet segmenté final est inférieure à MSS.

Pour plus d’informations, consultez Déchargement de segmentation UDP (USO).

IPv4.Reserved

Réservé. Les pilotes miniport ne doivent pas lire ou écrire dans ce champ.

IPv6

Structure dans NDIS_UDP_SEGMENTATION_OFFLOAD qui spécifie des informations IPv6, contenant les membres suivants :

IPv6.Encapsulation

Paramètres d’encapsulation pour IPv6. Pour plus d’informations sur ce membre, consultez la section Remarques suivante.

IPv6.MaxOffLoadSize

Nombre maximal d’octets de données utilisateur que le transport peut passer au pilote miniport dans un seul paquet. Le transport ne transmet pas de paquet au pilote miniport qui contient plus d’octets de données utilisateur que maxOffLoadSize spécifié. Si un tel paquet doit être transmis, le transport lui-même segmente le paquet en paquets plus petits.

IPv6.MinSegmentCount

Nombre minimal de segments par 2000 pour qu’un paquet UDP volumineux soit divisible avant que le transport puisse le décharger sur le matériel à des fins de segmentation. Le transport ne déchargera pas un paquet volumineux vers le pilote miniport à des fins de segmentation, sauf si le pilote miniport peut créer au moins autant de segments que minSegmentCount spécifie à partir du paquet. Si un paquet UDP volumineux ne répond pas à l’exigence de segment minimal, le transport TCP/IP segmente lui-même le paquet en paquets plus petits.

IPv6.SubMssFinalSegmentSupported

Valeur ULONG qui spécifie si tous les segments qu’un pilote miniport dérive d’un paquet UDP volumineux doivent avoir la même taille maximale de segment (MSS) ou non. Si le pilote miniport ne définit pas la fonctionnalité SubMssFinalSegmentSupported , chaque paquet UDP volumineux déchargé par le transport doit avoir Length % MSS == 0. Autrement dit, le paquet volumineux est divisible en N paquets avec chaque segment de paquet contenant exactement des octets utilisateur MSS . Si le pilote miniport définit la fonctionnalité SubMssFinalSegmentSupported , cette condition de divisibilité de longueur de paquet sur le transport ne s’applique pas. En d’autres termes, le segment final peut être inférieur à MSS.

Le pilote doit définir la valeur de SubMssFinalSegmentSupported sur NDIS_OFFLOAD_SUPPORTED si le miniport est capable de segmenter les envois UDP où la longueur totale du paquet volumineux a un reste différent de zéro lorsqu’il est divisé par MSS. Lorsque la prise en charge du pilote miniport est indiquée via cet indicateur, le pilote de protocole est autorisé à émettre des envois UDP volumineux où la longueur de charge utile UDP du paquet segmenté final est inférieure à MSS.

Pour plus d’informations, consultez Déchargement de segmentation UDP (USO).

IPv6.Reserved1

Réservé. Les pilotes miniport ne doivent pas lire ou écrire dans ce champ.

IPv6.IpExtensionHeadersSupported

Valeur ULONG définie par un pilote miniport pour indiquer que l’adaptateur miniport peut segmenter un paquet UDP volumineux dont l’en-tête IP contient des en-têtes d’extension IPv6.

IPv6.Reserved2

Réservé. Les pilotes miniport ne doivent pas lire ou écrire dans ce champ.

Remarques

Les pilotes miniport doivent définir les valeurs des champs et des exigences d’encapsulation de cette structure de la même façon que la structure NDIS_TCP_LARGE_SEND_OFFLOAD_V2 .

La structure NDIS_UDP_SEGMENTATION_OFFLOAD est utilisée dans le membre UdpSegmentation de la structure NDIS_OFFLOAD . NDIS_UDP_SEGMENTATION_OFFLOAD spécifie les services actuels ou pris en charge qu’un adaptateur miniport fournit pour segmenter des paquets UDP volumineux en paquets plus petits.

NDIS_OFFLOAD est utilisé dans la structure NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES, la structure NDIS_BIND_PARAMETERS, la structure NDIS_FILTER_ATTACH_PARAMETERS, l’OID OID_TCP_OFFLOAD_CURRENT_CONFIG et l’indication status NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.

Par OID_TCP_OFFLOAD_CURRENT_CONFIG, la structure NDIS_OFFLOAD spécifie les fonctionnalités de déchargement de tâche prises en charge par un adaptateur miniport. Si les fonctionnalités de déchargement actuelles changent, un pilote miniport signale les nouvelles fonctionnalités dans un NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication.

Les membres Encapsulation de NDIS_UDP_SEGMENTATION_OFFLOAD définissent les paramètres d’encapsulation UDP pour l’adaptateur miniport.

En réponse à une demande de requête OID_TCP_OFFLOAD_CURRENT_CONFIG , NDIS fournit un or au niveau du bit des indicateurs d’encapsulation, qui indiquent les paramètres d’encapsulation pris en charge, dans chacun des membres d’encapsulation . Les pilotes miniport doivent fournir une encapsulation Ethernet (NDIS_ENCAPSULATION_IEEE_802_3). Les autres types d’encapsulation sont facultatifs.

Pour une indication status NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG, le pilote miniport fournit un OR au niveau du bit des indicateurs d’encapsulation, qui indiquent les fonctionnalités actuelles, dans chacun des membres d’Encapsulation.

Les indicateurs suivants sont définis pour les membres Encapsulation :

NDIS_ENCAPSULATION_NOT_SUPPORTED
Spécifie qu’aucun déchargement d’encapsulation n’est pris en charge.

NDIS_ENCAPSULATION_NULL
Spécifie l’encapsulation NULL.

NDIS_ENCAPSULATION_IEEE_802_3
Spécifie l’encapsulation IEEE 802.3.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Spécifie l’encapsulation IEEE 802.3p et IEEE 802.3q.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Spécifie que les paramètres d’encapsulation IEEE 802.3p et IEEE 802.3q sont spécifiés dans le membre NetBufferListInfo de chaque structure NET_BUFFER_LIST.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Spécifie l’encapsulation du contrôle de liaison logique (LLC) pour les protocoles routés, comme décrit dans RFC 1483. Cet indicateur est également utilisé pour indiquer l’encapsulation Ethernet LLC/SNAP.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1912
En-tête ntddndis.h

Voir aussi

Déchargement de segmentation UDP (USO)