structure TCP_OFFLOAD_STATE_DELEGATED (ndischimney.h)
[La fonctionnalité de déchargement de cheminée TCP est déconseillée et ne doit pas être utilisée.]
La structure TCP_OFFLOAD_STATE_DELEGATED contient les variables déléguées d’un objet d’état de connexion TCP.
Syntaxe
typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
OFFLOAD_STATE_HEADER Header;
TCP_OFFLOAD_CONNECTION_STATE State;
USHORT Flags;
ULONG RcvNxt;
ULONG RcvWnd;
ULONG SndUna;
ULONG SndNxt;
ULONG SndMax;
ULONG SndWnd;
ULONG MaxSndWnd;
ULONG SendWL1;
ULONG CWnd;
ULONG SsThresh;
USHORT SRtt;
USHORT RttVar;
ULONG TsRecent;
ULONG TsRecentAge;
ULONG TsTime;
ULONG TotalRT;
UCHAR DupAckCount;
UCHAR SndWndProbeCount;
struct {
UCHAR ProbeCount;
ULONG TimeoutDelta;
} KeepAlive;
struct {
UCHAR Count;
ULONG TimeoutDelta;
} Retransmit;
union {
struct {
PNET_BUFFER_LIST SendDataHead;
PNET_BUFFER_LIST SendDataTail;
};
ULONG SendBacklogSize;
};
union {
PNET_BUFFER_LIST BufferedData;
ULONG ReceiveBacklogSize;
};
ULONG DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;
Membres
Header
Structure OFFLOAD_STATE_HEADER. NDIS définit le membre Length de Header sur la taille, en octets, de la structure TCP_OFFLOAD_STATE_DELEGATED. Le membre RecognizedOptions du d’en-tête est réservé.
State
État actuel de la connexion TCP (voir RFC 793) comme l’une des valeurs de TCP_OFFLOAD_CONNECTION_STATE suivantes :
TcpConnectionClosed
Aucun état de connexion.
TcpConnectionListen
En attente d’une demande de connexion à partir de n’importe quel port et TCP distants.
TcpConnectionSynSent
En attente d’une demande de connexion correspondante après avoir envoyé une demande de connexion.
TcpConnectionSynRcvd
En attente d’un accusé de réception de demande de connexion de confirmation après avoir reçu et envoyé une demande de connexion.
TcpConnectionEstablished
Connexion ouverte : les données reçues peuvent être remises à l’utilisateur. État normal de la phase de transfert de données de la connexion.
TcpConnectionFinWait1
En attente d’une demande d’arrêt de connexion à partir du TCP distant ou d’un accusé de réception de la demande d’arrêt de connexion qui a été envoyée précédemment.
TcpConnectionFinWait2
En attente d’une demande d’arrêt de connexion à partir du PROTOCOLE TCP distant.
TcpConnectionCloseWait
En attente d’une demande d’arrêt de connexion de l’utilisateur local.
TcpConnectionClosing
En attente d’un accusé de réception de demande d’arrêt de connexion à partir du TCP distant.
TcpConnectionLastAck
En attente d’un accusé de réception de la demande d’arrêt de connexion précédemment envoyée au PROTOCOLE TCP distant, qui inclut un accusé de réception de sa demande d’arrêt de connexion.
TcpConnectionTimeWait
En attendant suffisamment de temps pour s’assurer que le TCP distant a reçu l’accusé de réception de sa demande d’arrêt de connexion.
Notez que la pile hôte peut décharger une connexion TCP lorsque la connexion est dans n’importe quel état, sauf tcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,
tcpConnectionSynSent, ou état TcpConnectionTimeWait. La pile hôte peut interroger, mettre à jour, invalider ou arrêter une connexion TCP, quel que soit l’état de la connexion.
Flags
Réservé à l’utilisation du système.
RcvNxt
Numéro de séquence pour le segment de réception suivant (voir RCV. SUIVANT dans RFC 793).
RcvWnd
Taille de la fenêtre de réception, en octets (voir RCV. WND dans RFC 793).
SndUna
Numéro de séquence pour le premier octet de données non reconnues (voir SND). UNA dans RFC 793). Pour plus d’informations, consultez Envoyer des données qui contiennent des données à retransmettre.
SndNxt
Numéro de séquence pour l’octet suivant à envoyer sur la connexion (voir SND). NXT dans RFC 793). Pour plus d’informations, consultez Envoyer des données qui contiennent des données à retransmettre.
SndMax
Numéro de séquence maximal envoyé sur la connexion. Pour plus d’informations, consultez Envoyer des données qui contiennent des données à retransmettre.
SndWnd
Taille de la fenêtre d’envoi, en octets (voir SND. WND dans RFC 793).
MaxSndWnd
Taille maximale de la fenêtre d’envoi, en octets (voir RFC 813).
SendWL1
Numéro de séquence de segment utilisé pour la dernière mise à jour de fenêtre (voir SND. WL1 dans RFC 793).
CWnd
Taille de la fenêtre de congestion, en octets (voir cwnd dans RFC 2581).
SsThresh
Seuil de début lent, en octets (voir ssthresh dans RFC 2581).
SRtt
Temps d’aller-retour lisse, en cycles d’horloge (voir SRTT dans les RFC 793 et 2988). Géré par connexion, car il prend en compte le chemin d’accès, l’hôte et parfois le comportement de l’application.
RttVar
Variation de temps aller-retour, en cycles d’horloge (voir RTTVAR dans RFC 2988).
TsRecent
Valeur d’horodatage à envoyer dans l’ACK suivante (voir TS). Récent dans RFC 1323)
TsRecentAge
Durée, en cycles d’horloge, depuis la réception de l’horodatage le plus récent (voir RFC 1323).
TsTime
Valeur actuelle de l’horodatage ajusté.
TotalRT
Temps total, en cycles d’horloge, qui a été passé à retransmettre le segment TCP actuel.
DupAckCount
Nombre de kits DE contrôle d’accès acceptés pour le même numéro de séquence (voir RFC 1323).
SndWndProbeCount
Round de la sonde de fenêtre d’envoi actuelle. Pour obtenir une description de l’arrondi de la sonde de fenêtre d’envoi, consultez du minuteur de persistance.
KeepAlive
Ce membre est une union qui se compose des membres suivants :
KeepAlive.ProbeCount
Nombre de sondes keepalive envoyées qui n’ont pas reçu de réponse (voir RFC 1122).
KeepAlive.TimeoutDelta
Durée restante, en cycles d’horloge, jusqu’au prochain délai d’attente de conservation (voir RFC 1122). Notez qu’une valeur de -1 immédiatement après le déchargement de la connexion TCP indique que le minuteur keepalive n’était pas en cours d’exécution lorsque la connexion a été déchargée. Si le minuteur keepalive de la cible de déchargement n’est pas en cours d’exécution, la cible de déchargement doit retourner -1 dans ce membre lors de la réponse à un appel à la fonction MiniportQueryOffload ou à la fonction MiniportTerminateOffload.
Retransmit
Ce membre est une union qui se compose des membres suivants :
Retransmit.Count
Nombre de retransmis qui ont été envoyés (voir RFC 2581).
Retransmit.TimeoutDelta
Heure, en cycles d’horloge, restant jusqu’au prochain délai de retransmite (voir RFC 2581). Notez qu’une valeur de -1 immédiatement après le déchargement de la connexion TCP indique que le minuteur de retransmite n’était pas en cours d’exécution lorsque la connexion a été déchargée. Le minuteur de retransmite n’était pas en cours d’exécution, car il n’y avait pas de données d’envoi en attente sur la connexion lorsque la connexion a été déchargée. Si le minuteur de transfert de la cible de déchargement n’est pas en cours d’exécution, la cible de déchargement doit retourner -1 dans ce membre lors de la réponse à un appel à la fonction MiniportQueryOffload ou à la fonction MiniportTerminateOffload.
SendDataHead
Pointeur vers une structure NET_BUFFER_LIST. Cette structure NET_BUFFER_LIST se trouve dans la liste liée vers laquelle pointe le membre NetBufferListChain du NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure qui précède immédiatement la structure TCP_OFFLOAD_STATE_DELEGATED. Si le pointeur NetBufferListChain est NULL, SendDataHead n’est pas significatif.
Le pointeur SendDataHead pointe vers la première structure NET_BUFFER_LIST dont NET_BUFFER structure a mis en mémoire tampon les données d’envoi associées.
Cette variable est utilisée uniquement dans une opération de déchargement de lancement ou d’arrêt du déchargement. Pour plus d’informations sur l’utilisation de cette variable, consultez Gestion des données d’envoi en attente pendant et après une opération de déchargement et gestion des données d’envoi en attente pendant une opération de déchargement de fin.
SendDataTail
Pointeur vers une structure NET_BUFFER_LIST. Cette structure NET_BUFFER_LIST se trouve dans la liste liée pointée par le membre NetBufferListChain de la structure NDIS_MINIPORT_OFFLOAD_BLOCK_LIST qui précède immédiatement la structure TCP_OFFLOAD_STATE_DELEGATED. Si le pointeur NetBufferListChain est null, SendDataTail n’est pas significatif.
Le pointeur SendDataTail pointe vers la dernière structure NET_BUFFER_LIST dont NET_BUFFER structure a mis en mémoire tampon les données d’envoi associées.
Cette variable est utilisée uniquement dans une opération de déchargement de lancement ou d’arrêt du déchargement. Pour plus d’informations sur l’utilisation de cette variable, consultez gestion des données d’envoi en attente pendant et après une opération de déchargement et gestion des données d’envoi en attente pendant une opération de déchargement d’arrêt
SendBacklogSize
La cible de déchargement spécifie cette valeur pour indiquer le nombre d’octets de données que la pile hôte doit avoir en attente à la cible de déchargement pour des performances optimales. (Il s’agit du nombre d’octets d’envoi passés à la cible de déchargement, mais qui n’ont pas encore été terminés par la cible de déchargement.) Les variables et algorithmes spécifiques que la cible de déchargement utilise pour calculer la taille du backlog d’envoi sont spécifiques à l’implémentation. La taille du backlog d’envoi peut être une fonction du temps d’aller-retour (RTT) pour la connexion, la bande passante de l’interface et d’autres paramètres. Une cible de déchargement peut, par exemple, utiliser le minimum de la bande passante/retard produit et la fenêtre reçue annoncée. Notez toutefois que la taille du backlog d’envoi ne varie pas en fonction du nombre d’octets de données actuellement publiés pour la transmission sur la connexion.
La pile hôte peut interroger l’état délégué TCP de la connexion pour obtenir la taille du backlog d’envoi. En outre, la cible de déchargement peut indiquer une modification de la taille du backlog d’envoi en appelant le fonction NdisTcpOffloadEventHandler.
Si la cible de déchargement ne prend pas en charge la fonctionnalité de taille du backlog d’envoi, elle doit écrire une valeur de 0xFFFFFFFF dans SendBacklogSize lorsque l’état délégué TCP pour la connexion est interrogé. La variable SendBacklogSize n’est pas utilisée dans l’opération de déchargement de fin.
BufferedData
Pointeur vers les données de réception mises en mémoire tampon. La pile hôte peut transmettre ces données à la cible de déchargement lors du déchargement d’une connexion TCP. (Pour plus d’informations, consultez gestion des données de réception mises en mémoire tampon pendant et après une opération de déchargement.) La cible de déchargement peut transmettre ces données à la pile hôte lors du chargement d’une connexion TCP. (Pour plus d’informations, consultez Gestion des données de réception mises en mémoire tampon pendant une opération de déchargement de fin.)
ReceiveBacklogSize
La cible de déchargement spécifie cette valeur pour indiquer le nombre d’octets de données de réception qui sont mis en mémoire tampon dans la cible de déchargement pour la connexion TCP déchargée. La pile hôte peut interroger l’état délégué TCP de la connexion pour obtenir cette valeur. La pile hôte utilise cette valeur pour publier une ou plusieurs demandes de réception sur la connexion suffisamment volumineuses pour contenir toutes les données mises en mémoire tampon.
Si la cible de déchargement ne prend pas en charge la fonctionnalité de taille du backlog de réception, elle doit écrire une valeur de 0xFFFFFFFF pour ReceiveBacklogSize.
DWnd
Remarques
La pile hôte fournit des valeurs initiales pour les variables déléguées TCP lorsqu’elle décharge ces variables sur la cible de déchargement. Une fois déchargées, les variables déléguées TCP sont détenues et gérées par la cible de déchargement. Seule la cible de déchargement peut modifier la valeur d’une variable déléguée TCP déchargée. La cible de déchargement n’informe pas la pile hôte des modifications apportées aux valeurs des variables déléguées TCP déchargées. Toutefois, la pile hôte peut interroger la valeur des variables déléguées TCP déchargées, ce qui entraîne l’appel de la fonction MiniportQueryOff load de la cible de déchargement. Lorsque la pile hôte met fin au déchargement de l’objet d’état de connexion TCP en provoquant l’appel de NDIS à la cible de déchargement miniportTerminateOffload fonction, la cible de déchargement transmet la valeur des variables déléguées TCP dans l’objet d’état de connexion TCP terminé à la pile hôte.
Lorsqu’elle est passée à une cible de déchargement, une structure de TCP_OFFLOAD_STATE_DELEGATED est associée à un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure, qui contient un en-tête mis en forme comme structure NDIS_OBJECT_HEADER. Le membre Révision de la structure NDIS_OBJECT_HEADER, dans ce cas, spécifie le numéro de révision de la structure TCP_OFFLOAD_STATE_DELEGATED.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ndischimney.h (include Ndischimney.h) |