struttura TCP_OFFLOAD_STATE_DELEGATED (ndischimney.h)
[La funzionalità offload del camino TCP è deprecata e non deve essere usata.]
La struttura TCP_OFFLOAD_STATE_DELEGATED contiene le variabili delegate di un oggetto stato della connessione TCP.
Sintassi
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;
Membri
Header
Struttura OFFLOAD_STATE_HEADER. NDIS imposta il membro Length di Header sulle dimensioni, in byte, della struttura TCP_OFFLOAD_STATE_DELEGATED. Il membro RecognizedOptions di Header è riservato.
State
Lo stato corrente della connessione TCP (vedere RFC 793) come uno dei valori TCP_OFFLOAD_CONNECTION_STATE seguenti:
TcpConnectionClosed
Nessuno stato di connessione.
TcpConnectionListen
In attesa di una richiesta di connessione da qualsiasi porta e TCP remoto.
TcpConnectionSynSent
In attesa di una richiesta di connessione corrispondente dopo aver inviato una richiesta di connessione.
TcpConnectionSynRcvd
In attesa di confermare il riconoscimento della richiesta di connessione dopo aver ricevuto e inviato una richiesta di connessione.
TcpConnectionEstablished
Una connessione aperta: i dati ricevuti possono essere recapitati all'utente. Stato normale per la fase di trasferimento dei dati della connessione.
TcpConnectionFinWait1
In attesa di una richiesta di terminazione della connessione dal protocollo TCP remoto o di un riconoscimento della richiesta di terminazione della connessione inviata in precedenza.
TcpConnectionFinWait2
In attesa di una richiesta di terminazione della connessione dal protocollo TCP remoto.
TcpConnectionCloseWait
In attesa di una richiesta di terminazione della connessione dall'utente locale.
TcpConnectionClosing
In attesa di un riconoscimento della richiesta di terminazione della connessione dal tcp remoto.
TcpConnectionLastAck
In attesa di un riconoscimento della richiesta di terminazione della connessione inviata in precedenza al tcp remoto, che include un riconoscimento della richiesta di terminazione della connessione.
TcpConnectionTimeWait
In attesa di un tempo sufficiente per garantire che il tcp remoto abbia ricevuto il riconoscimento della richiesta di terminazione della connessione.
Si noti che lo stack host può eseguire l'offload di una connessione TCP quando la connessione è in qualsiasi stato, ad eccezione di TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,
tcpConnectionSynSento stato TcpConnectionTimeWait. Lo stack host può eseguire query, aggiornare, invalidare o terminare una connessione TCP indipendentemente dallo stato della connessione.
Flags
Riservato per l'uso del sistema.
RcvNxt
Numero di sequenza per il segmento di ricezione successivo (vedere RCV. AVANTI in RFC 793).
RcvWnd
Dimensioni della finestra di ricezione, in byte (vedere RCV. WND in RFC 793).
SndUna
Numero di sequenza per il primo byte di dati non riconosciuti (vedere SND. UNA in RFC 793). Per altre informazioni, vedere Inviare dati contenenti dati da ritrasmettere.
SndNxt
Numero di sequenza per il byte successivo da inviare sulla connessione (vedere SND. NXT in RFC 793). Per altre informazioni, vedere Inviare dati contenenti dati da ritrasmettere.
SndMax
Numero massimo di sequenza inviato sulla connessione. Per altre informazioni, vedere Inviare dati contenenti dati da ritrasmettere.
SndWnd
Dimensioni della finestra di invio, in byte (vedere SND. WND in RFC 793).
MaxSndWnd
Dimensioni massime della finestra di invio, in byte (vedere RFC 813).
SendWL1
Numero di sequenza del segmento usato per l'ultimo aggiornamento della finestra (vedere SND. WL1 in RFC 793).
CWnd
Dimensioni della finestra di congestione, in byte (vedere cwnd in RFC 2581).
SsThresh
Soglia di inizio lenta, in byte (vedere ssthresh in RFC 2581).
SRtt
Il tempo di round trip smussato, in tick di clock (vedere SRTT nelle RFC 793 e 2988). Gestito per ogni connessione perché prende in considerazione il percorso, l'host e talvolta il comportamento dell'applicazione.
RttVar
Variazione dell'ora del round trip, in tick di clock (vedere RTTVAR in RFC 2988).
TsRecent
Valore del timestamp da inviare nel successivo ACK (vedere TS. Recente in RFC 1323)
TsRecentAge
Intervallo di tempo, in tick di clock, dal momento in cui è stato ricevuto il timestamp più recente (vedere RFC 1323).
TsTime
Valore corrente del timestamp modificato.
TotalRT
Tempo totale, in tick di clock, impiegato per ritrasmettere il segmento TCP corrente.
DupAckCount
Numero di AK accettati per lo stesso numero di sequenza (vedere RFC 1323).
SndWndProbeCount
Round probe della finestra di invio corrente. Per una descrizione del probe della finestra di invio, vedere Persist Timer.
KeepAlive
Questo membro è un'unione costituita dai membri seguenti:
KeepAlive.ProbeCount
Numero di probe keepalive inviati che non hanno ricevuto una risposta (vedere RFC 1122).
KeepAlive.TimeoutDelta
Tempo rimanente, in tick di clock, fino al timeout di keepalive successivo (vedere RFC 1122). Si noti che un valore di -1 immediatamente dopo l'offload della connessione TCP indica che il timer keepalive non era in esecuzione quando la connessione è stata scaricata. Se il timer keepalive della destinazione di offload non è in esecuzione, la destinazione di offload deve restituire -1 in questo membro quando risponde a una chiamata alla funzione MiniportQueryOffload o alla funzione MiniportTerminateOffload.
Retransmit
Questo membro è un'unione costituita dai membri seguenti:
Retransmit.Count
Numero di ritrasmetti inviati (vedere RFC 2581).
Retransmit.TimeoutDelta
Ora, in tick di clock, rimanenti fino al successivo timeout di ritrasmissione (vedere RFC 2581). Si noti che un valore di -1 immediatamente dopo l'offload della connessione TCP indica che il timer di ritrasmissione non era in esecuzione quando la connessione è stata scaricata. Il timer di ritrasmissione non è in esecuzione perché non sono presenti dati di invio in sospeso sulla connessione quando la connessione è stata scaricata. Se il timer di ritrasmissione della destinazione di offload non è in esecuzione, la destinazione di offload deve restituire -1 in questo membro quando risponde a una chiamata alla funzione MiniportQueryOffload o alla funzione MiniportTerminateOffload.
SendDataHead
Puntatore a una struttura NET_BUFFER_LIST. Questa struttura NET_BUFFER_LIST si trova nell'elenco collegato a cui fa riferimento il membro netBufferListChain NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura che precede immediatamente la struttura TCP_OFFLOAD_STATE_DELEGATED. Se il puntatore NetBufferListChain è NULL, SendDataHead non è significativo.
Il puntatore SendDataHead punta alla prima struttura NET_BUFFER_LIST la cui struttura NET_BUFFER ha memorizzato nel buffer i dati di invio associati.
Questa variabile viene usata solo in un'operazione di offload di avvio o di terminazione dell'offload. Per altre informazioni sull'uso di questa variabile, vedere Gestione dei dati di invio in sospeso durante e dopo un'operazione di offload e gestione dei dati di invio in sospeso durante un'operazione di offload terminate.
SendDataTail
Puntatore a una struttura NET_BUFFER_LIST. Questa struttura NET_BUFFER_LIST si trova nell'elenco collegato a cui fa riferimento il membro NetBufferListChain della struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST che precede immediatamente la struttura TCP_OFFLOAD_STATE_DELEGATED. Se il puntatore NetBufferListChain è NULL, SendDataTail non è significativo.
Il puntatore SendDataTail punta all'ultima struttura NET_BUFFER_LIST la cui struttura NET_BUFFER ha memorizzato nel buffer i dati di invio associati.
Questa variabile viene usata solo in un'operazione di offload di avvio o di terminazione dell'offload. Per altre informazioni sull'uso di questa variabile, vedere gestione dei dati di invio in sospeso durante e dopo un'operazione di offload e gestione dei dati di invio in sospeso durante un'operazione di offload di terminazione
SendBacklogSize
La destinazione di offload specifica questo valore per indicare il numero di byte di dati che lo stack host deve avere in sospeso nella destinazione di offload per ottenere prestazioni ottimali. Questo è il numero di byte di invio passati alla destinazione di offload, ma che non sono ancora stati completati dalla destinazione di offload. Le variabili e l'algoritmo specifici usati dalla destinazione di offload per calcolare le dimensioni del backlog di invio sono specifici dell'implementazione. Le dimensioni del backlog di invio possono essere una funzione del tempo di round trip (RTT) per la connessione, la larghezza di banda dell'interfaccia e altri parametri. Una destinazione di offload potrebbe, ad esempio, usare il minimo del prodotto di larghezza di banda/ritardo e la finestra ricevuta annunciata. Si noti tuttavia che le dimensioni del backlog di invio non variano in base al numero di byte di dati attualmente registrati per la trasmissione sulla connessione.
Lo stack host può eseguire una query sullo stato delegato TCP per ottenere le dimensioni del backlog di invio. Inoltre, la destinazione di offload può indicare una modifica delle dimensioni del backlog di invio chiamando funzione NdisTcpOffloadEventHandler.
Se la destinazione di offload non supporta la funzionalità send-backlog-size, deve scrivere un valore di 0xFFFFFFFF per SendBacklogSize quando viene eseguita una query sullo stato delegato TCP per la connessione. La variabile SendBacklogSize non viene usata nell'operazione di offload terminate.
BufferedData
Puntatore a dati di ricezione memorizzati nel buffer. Lo stack host può passare tali dati alla destinazione di offload durante l'offload di una connessione TCP. Per altre informazioni, vedere gestione dei dati di ricezione memorizzati nel buffer durante e dopo un'operazione di offload. La destinazione di offload può passare tali dati allo stack host durante il caricamento di una connessione TCP. Per altre informazioni, vedere gestione dei dati di ricezione memorizzati nel buffer durante un'operazione di offload terminate.
ReceiveBacklogSize
La destinazione di offload specifica questo valore per indicare il numero di byte di dati di ricezione memorizzati nel buffer nella destinazione di offload per la connessione TCP offloaded. Lo stack host può eseguire una query sullo stato delegato TCP per ottenere questo valore dalla connessione. Lo stack host usa questo valore per inviare una o più richieste di ricezione sulla connessione con dimensioni sufficienti per contenere tutti i dati memorizzati nel buffer.
Se la destinazione di offload non supporta la funzionalità di dimensioni backlog di ricezione, deve scrivere un valore di 0xFFFFFFFF in ReceiveBacklogSize .
DWnd
Osservazioni
Lo stack host fornisce valori iniziali per le variabili delegate TCP quando esegue l'offload di queste variabili nella destinazione di offload. Dopo l'offload, le variabili delegate TCP sono di proprietà e gestite dalla destinazione di offload. Solo la destinazione di offload può modificare il valore di una variabile delegata TCP offloaded. La destinazione di offload non invia una notifica allo stack host delle modifiche apportate ai valori delle variabili delegate TCP caricate. Tuttavia, lo stack host può eseguire una query sul valore delle variabili delegate TCP caricate, il che fa sì che NDIS chiami la funzione miniportQueryOffload della destinazione di offload. Quando lo stack host termina l'offload dell'oggetto stato della connessione TCP facendo in modo che NDIS chiami la destinazione offload funzione MiniportTerminateOffload, la destinazione di offload passa nuovamente il valore delle variabili delegate TCP nell'oggetto stato di connessione TCP terminato allo stack host.
Quando viene passato a una destinazione di offload, una struttura TCP_OFFLOAD_STATE_DELEGATED è associata a un oggetto NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura, che contiene un'intestazione formattata come struttura NDIS_OBJECT_HEADER. Il membro Revision della struttura NDIS_OBJECT_HEADER, in questo caso, specifica il numero di revisione della struttura TCP_OFFLOAD_STATE_DELEGATED.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | ndischimney.h (include Ndischimney.h) |