Condividi tramite


OID_TCP_TASK_OFFLOAD

Lo stack host esegue una query sull'OID OID_TCP_TASK_OFFLOAD per ottenere le funzionalità di offload TCP della scheda di interfaccia di rete di un driver miniport o di una destinazione di offload. Dopo aver determinato le funzionalità di offload supportate da una scheda di interfaccia di rete o da una destinazione di offload, lo stack host imposta questo OID per abilitare una o più delle funzionalità segnalate. Lo stack host può anche disabilitare tutte le funzionalità di offload TCP di una scheda di interfaccia di rete o di una destinazione di offload impostando OID_TCP_TASK_OFFLOAD. Solo un protocollo alla volta può abilitare le funzionalità di offload TCP di una scheda di interfaccia di rete specifica.

Esecuzione di query sulle funzionalità di offload

Quando lo stack host esegue query OID_TCP_TASK_OFFLOAD, fornisce nella struttura InformationBuffer una struttura di NDIS_TASK_OFFLOAD_HEADER . Questa struttura specifica quanto segue:

  • Versione di offload supportata dallo stack host.
  • Formato di incapsulamento per l'invio e la ricezione di pacchetti elaborati dallo stack host.
  • Dimensioni dell'intestazione di incapsulamento in tali pacchetti.

Con queste informazioni, un driver miniport o la relativa scheda di interfaccia di rete può individuare l'inizio della prima intestazione IP in un pacchetto di trasmissione, che è un prerequisito per l'esecuzione di un'attività di offload. Una destinazione di offload deve conoscere il formato di incapsulamento per elaborare i pacchetti di ricezione. In risposta a una query di OID_TCP_TASK_OFFLOAD, un driver miniport o una destinazione di offload restituisce, nella proprietà InformationBuffer, la struttura NDIS_TASK_OFFLOAD_HEADER seguita immediatamente da una o più strutture NDIS_TASK_OFFLOAD . Ogni struttura NDIS_TASK_OFFLOAD descrive una funzionalità di offload supportata dalla scheda di interfaccia di rete del driver miniport o dalla destinazione di offload. Se la scheda di interfaccia di rete del driver miniport o la destinazione di offload supporta più versioni di una particolare funzionalità di offload, deve restituire una struttura NDIS_TASK_OFFLOAD per ogni versione.

Ogni struttura NDIS_TASK_OFFLOAD ha un membro Task che specifica la particolare funzionalità di offload a cui si applica la struttura. Ogni struttura NDIS_TASK_OFFLOAD ha anche un TaskBuffer che contiene informazioni pertinenti alla funzionalità di offload specificata. Le informazioni contenute in TaskBuffer vengono formattate come una delle strutture seguenti:

Nota

Se un driver intermedio modifica il contenuto dei pacchetti inoltrati a un driver miniport sottostante in modo che le funzioni di offload TCP non possano essere eseguite sui pacchetti, il driver intermedio deve rispondere alle OID_TCP_TASK_OFFLOAD query con stato NDIS_STATUS_NOT_SUPPORTED anziché passare la richiesta OID al driver miniport sottostante o alla destinazione di offload.

Abilitazione delle funzionalità di offload

Dopo aver eseguito una query sulle funzionalità di offload di una scheda di interfaccia di rete o di una destinazione offload, lo stack host abilita una o più di queste funzionalità impostando OID_TCP_TASK_OFFLOAD. Quando si imposta OID_TCP_TASK_OFFLOAD, lo stack host fornisce, in InformationBuffer, una struttura NDIS_TASK_OFFLOAD_HEADER seguita immediatamente da una struttura NDIS_TASK_OFFLOAD per ogni funzionalità di offload usata dallo stack host.

L'attività in ogni struttura NDIS_TASK_OFFLOAD indica la funzionalità di offload usata dallo stack host. Lo stack host consente inoltre aspetti specifici di una particolare funzionalità di offload impostando i membri della struttura nell'Oggetto TaskBuffer di ogni struttura NDIS_TASK_OFFLOAD.

Modifica delle funzionalità di offload

Per modificare le funzionalità di offload abilitate per una scheda di interfaccia di rete o una destinazione di offload, lo stack host imposta OID_TCP_TASK_OFFLOAD. Il driver miniport o la destinazione di offload deve abilitare solo le funzionalità di offload specificate dal set di OID_TCP_TASK_OFFLOAD più recente. Il driver miniport o la destinazione di offload deve disabilitare tutte le altre funzionalità di offload. Si noti che prima di disabilitare una specifica funzionalità di offload del camino TCP, lo stack host termina l'offload di tutte le connessioni TCP offloaded che usano tale funzionalità.

Una destinazione offload può usare indicazioni di sospensione o ripresa dell'offload per modificare le funzionalità di offload TCP segnalate:

  • Una destinazione di offload indica una pausa chiamando la funzione NdisMIndicateStatusEx con il membro NDIS_STATUS_INDICATION-StatusCode> impostato su NDIS_STATUS_OFFLOAD_PAUSE.
  • Una destinazione di offload indica una ripresa chiamando la funzione NdisMIndicateStatusEx con il membro NDIS_STATUS_INDICATION-StatusCode> impostato su NDIS_STATUS_OFFLOAD_RESUME.

Dopo che una destinazione di offload richiede allo stack host di riprendere l'offload degli oggetti di stato, lo stack host esegue di nuovo query OID_TCP_TASK_OFFLOAD per ottenere le funzionalità riviste di offload TCP della destinazione di offload. Per altre informazioni, vedere NDIS_STATUS_OFFLOAD_RESUME.

Disabilitazione delle funzionalità di offload

Per disabilitare tutte le funzionalità di offload supportate da una scheda di interfaccia di rete o da una destinazione di offload, lo stack host imposta OID_TCP_TASK_OFFLOAD. In InformationBuffer lo stack host fornisce una struttura NDIS_TASK_OFFLOAD_HEADER con il membro OffsetFirstTask di questa struttura impostato su zero.

Requisiti

Versione: Windows Vista e intestazione successiva: Ntddndis.h (include Ndis.h)