Condividi tramite


struttura TCP_OFFLOAD_STATE_CACHED (ndischimney.h)

[La funzionalità di offload del camino TCP è deprecata e non deve essere usata.]

La struttura TCP_OFFLOAD_STATE_CACHED contiene le variabili memorizzate nella cache di un oggetto stato della connessione TCP.

Sintassi

typedef struct _TCP_OFFLOAD_STATE_CACHED {
  OFFLOAD_STATE_HEADER Header;
  USHORT               Flags;
  ULONG                InitialRcvWnd;
  ULONG                RcvIndicationSize;
  UCHAR                KaProbeCount;
  ULONG                KaTimeout;
  ULONG                KaInterval;
  ULONG                MaxRT;
  ULONG                FlowLabel : 20;
  UCHAR                TtlOrHopLimit;
  UCHAR                TosOrTrafficClass;
  UCHAR                UserPriority : 3;
} TCP_OFFLOAD_STATE_CACHED, *PTCP_OFFLOAD_STATE_CACHED;

Members

Header

Struttura OFFLOAD_STATE_HEADER . NDIS imposta il membro Length di Header sulle dimensioni, in byte, della struttura TCP_OFFLOAD_STATE_CACHED. Il membro RecognizedOptions di Header è riservato.

Flags

Maschera di bit che può essere impostata su zero o su uno qualsiasi dei flag seguenti, combinati con OR bit per bit:

TCP_FLAG_KEEP_ALIVE_ENABLED

Lo stack host imposta questo flag per abilitare l'opzione keepalive nella connessione. Lo stack host cancella questo flag per disabilitare l'opzione keepalive nella connessione. Per altre informazioni sull'opzione keepalive, vedere RFC 1122.

TCP_FLAG_NAGLING_ENABLED

Lo stack host imposta questo flag per abilitare l'algoritmo Nagle nella connessione. Lo stack host cancella questo flag per disabilitare l'algoritmo Nagle nella connessione. Per altre informazioni sull'algoritmo Nagle, vedere RFC 896.

TCP_FLAG_KEEP_ALIVE_RESTART

Lo stack host imposta questo flag per fare in modo che la destinazione di offload reimposta il timer keepalive su zero.

TCP_FLAG_MAX_RT_RESTART

Lo stack host imposta questo flag per fare in modo che la destinazione di offload reimposta la variabile TotalRT nello stato delegato TCP per la connessione su zero.

TCP_FLAG_UPDATE_RCV_WND

Lo stack host imposta questo flag per indicare che le dimensioni predefinite della finestra di ricezione (InitialRcvWnd nella struttura TCP_OFFLOAD_STATE_CACHED) sono state modificate. Se il valore di InitialRcvWnd è diverso dalle dimensioni correnti della finestra di ricezione della destinazione di offload (RcvWnd nella struttura TCP_OFFLOAD_STATE_DELEGATED), la destinazione di offload deve annunciare una nuova dimensione della finestra di ricezione al peer.

InitialRcvWnd

Finestra di ricezione predefinita (dall'opzione socket SO_RCVBUF).

RcvIndicationSize

Quando non è NULL, il numero ottimale di byte di dati che la destinazione di offload deve fornire in una singola chiamata all'oggetto Funzione NdisTcpOffloadReceiveHandler . Questo numero, che in genere è compreso tra decine e centinaia di byte, è un suggerimento, non un requisito. La destinazione di offload può indicare più o meno di byte di dati RcvIndicationSize . Tuttavia, per prestazioni ottimali, la destinazione di offload deve indicare
Byte di dati RcvIndicationSize . Per ulteriori informazioni, vedere NdisTcpOffloadReceiveHandler.

Se NULL, RcvIndicationSize non è specificato. In questo caso, la destinazione di offload deve ignorare RcvIndicationSize e indicare il maggior numero di dati possibile nelle chiamate alla funzione NdisTcpOffloadReceiveHandler .

KaProbeCount

Numero di probe keepalive che la destinazione di offload deve inviare per determinare se una connessione TCP è intatta (vedere RFC 1122).

KaTimeout

Questo membro specifica, in tick di clock, l'intervallo di timeout per l'inattività prima di inviare un probe keepalive (vedere RFC 1122).

KaInterval

Questo membro specifica, in tick di clock, il timeout dopo il quale ritrasmettere un frame keepalive se non viene ricevuta alcuna risposta a un probe keepalive (vedere RFC 1122).

MaxRT

Questo membro specifica, in tick di clock, il tempo massimo per cui la destinazione di offload deve dedicare la ritrasmissione di un segmento. Se il valore di MaxRT è diverso da zero, MaxRT esegue l'override di TcpMaximumRetransmissions in NDIS_TASK_TCP_CONNECTION_OFFLOAD struttura. Il valore predefinito per è MaxRT è zero, il che significa che TcpMaximumRetransmissions imposta il numero massimo di volte in cui la destinazione di offload deve ritrasmettere un segmento in una connessione TCP. Se il valore di MaxRT è FFFFFFFF (o -1), non esiste alcun limite al numero massimo di ritrasmissioni. Quando MaxRT è diverso da zero, la destinazione di offload deve reimpostare la variabile TotalRT nello stato delegato TCP per la connessione. TotalRT indica il tempo totale, in tick di clock, che la destinazione di offload ha trascorso a ritrasmettere il segmento TCP corrente.

FlowLabel

Questo membro contrassegna i pacchetti con etichetta host per una gestione speciale intervenendo su router, ad esempio il servizio QoS non predefinito o "in tempo reale" (vedere RFC 2460). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP. Questa variabile è significativa solo se la connessione TCP è su IPv6.

TtlOrHopLimit

Se la connessione TCP è su IPv4, questo membro specifica la durata (vedere RFC 791). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.

Se la connessione TCP è su IPv6, questo membro specifica il numero di router che il pacchetto può passare (vedere RFC 2460). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.

TosOrTrafficClass

Se la connessione TCP è su IPv4, questo membro specifica il tipo di servizio per il routing di un pacchetto (vedere RFC 2474). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.

Se la connessione TCP è su IPv6, questo membro assegna la priorità ai valori per i pacchetti in base ai tipi di traffico, che indica la disponibilità del mittente a rimuovere i pacchetti (vedere RFC 2460). Questa variabile viene impostata tramite un'opzione socket e può variare durante la durata della connessione TCP.

UserPriority

Valore di priorità a 3 bit. Se la destinazione di offload supporta informazioni sui pacchetti 802.1p, è necessario inserire questo valore di priorità nell'intestazione tag di tutti i pacchetti trasmessi sulla connessione TCP offloaded. Se la destinazione di offload non supporta le informazioni sui pacchetti 802.1p, è consigliabile ignorare UserPriority . Per altre informazioni sul supporto delle informazioni sui pacchetti 802.1p, vedere 802.1Q e 802.1p Processing on an Offloaded TCP Connection .For more information about support 802.1p packet information, see 802.1Q and 802.1p Processing on an Offloaded TCP Connection.

Commenti

Le variabili memorizzate nella cache sono di proprietà e gestite dallo stack host. Una destinazione di offload non deve modificare il valore di una variabile memorizzata nella cache, a meno che non venga richiesta dallo stack host. Se il valore di una variabile memorizzata nella cache cambia, lo stack host richiede un aggiornamento della variabile, che fa sì che NDIS chiami la funzione MiniportUpdateOffload della destinazione di offload. Quando lo stack host termina l'offload di uno o più oggetti di stato causando la chiamata di NDIS alla destinazione di offload La funzione MiniportTerminateOffload , la destinazione di offload non restituisce il valore delle variabili costanti offloaded allo stack host.

Si noti che se è impostato un flag di TCP_FLAG_MAX_RT_RESTART connessione TCP offloaded, la destinazione di offload deve:

  • Reimpostare la variabile KeepaliveProbeCount delegata della connessione quando lo stack host aggiorna la variabile KaProbeCount memorizzata nella cache della connessione.
  • Reimpostare la variabile KeepaliveTimeoutDelta delegata della connessione quando lo stack host aggiorna le variabili KaTimeout e/o KaInterval memorizzate nella cache della connessione.
Quando viene passato a una destinazione di offload, una struttura TCP_OFFLOAD_STATE_CACHED è 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_CACHED.

Requisiti

Requisito Valore
Intestazione ndischimney.h (include Ndischimney.h)

Vedi anche

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED