次の方法で共有


TCP/IP オフロード NET_BUFFER_LIST 情報へのアクセス

NDIS バージョン 6.0 以降は、NET_BUFFER_LIST 構造体の NetBufferListInfo メンバーに TCP/IP オフロード帯域外 (OOB) データを提供します。これは、NET_BUFFER 構造体のリンクされたリストを指定します。 NetBufferListInfo メンバーは、リスト内のすべての NET_BUFFER 構造体に共通する情報を含む値の配列です。

NetBufferListInfo 配列内の TCP/IP オフロード OOB データを設定および取得するには、NET_BUFFER_LIST_INFO マクロで次の識別子を使用します。

TcpIpChecksumNetBufferListInfo
TCP/IP プロトコルからミニポート ドライバーに チェックサム タスクをオフロードする場合に使用するチェックサム情報を指定します。 TcpIpChecksumNetBufferListInfo を指定すると、NET_BUFFER_LIST_INFO は (構造体へのポインターではなく) NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 構造体を返します。 この構造体には、単一の PVOID 値またはビット フィールドとしてチェックサム情報にアクセスできるようにする共用体が含まれています。

IPsecOffloadV1NetBufferListInfo
TCP/IP プロトコルからミニポート ドライバーへの IPsec タスクのオフロードに使用されるインターネット プロトコル セキュリティ (IPsec) オフロード情報を指定します。 IPsecOffloadV1NetBufferListInfo を指定すると、NET_BUFFER_LIST_INFO は NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 構造体を返します。

TcpLargeSendNetBufferListInfo
大きな TCP パケットのセグメント化を TCP/IP プロトコルからミニポート ドライバーにオフロードするために使用される情報を指定します。 TcpLargeSendNetBufferListInfo を指定すると、NET_BUFFER_LIST_INFO は (構造体へのポインターではなく) NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 構造体を返します。 この構造体には、単一の PVOID 値またはビット フィールドとして情報にアクセスできるようにする共用体が含まれています。

Ieee8021QNetBufferListInfo
パケットに関する 802.1Q 情報を指定します。 Ieee8021QNetBufferListInfo を指定すると、NET_BUFFER_LIST_INFO は NDIS_NET_BUFFER_LIST_8021Q_INFO 構造体の Value メンバーを返します。 この構造体では、802.1p の優先順位と仮想 LAN (VLAN) 識別子の情報を指定できます。 802.1p 優先度情報は、共有メディア 802 ネットワークでパケット優先度を確立するために使用されます。

ミニポート ドライバーが NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB カプセル化のサポートを報告する場合は、Ieee8021QNetBufferListInfo データを大きな送信オフロード バージョン 1 (LSOV1) と大きな送信オフロード バージョン 2 (LSOV2) イーサネット パケットに挿入する必要があります。

TcpOffloadBytesTransferred
TCP Chimney オフロードの送信、受信、または切断操作で転送されたデータ バイト数を指定します。

TcpReceiveNoPush
TCP Chimney オフロードの受信要求のプッシュ モードを表すブール値を指定します。 TRUE の場合、受信要求は非プッシュ モードになります。 それ以外の場合、受信要求はプッシュ モードです。

LSOV1、LSOV2、チェックサム、IPsec オフロードの種類の場合、ミニポート ドライバーは OOB データの種類と、報告されたオフロード機能に基づいてタスク オフロードを実行します。 たとえば、プロトコル ドライバーが IPv4 パケットに対して LSOV1 サービスを必要とする場合、プロトコル ドライバーが提供する各送信要求には、NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO OOB データの LsoV1Transmit メンバーからの情報が含まれます。 プロトコル ドライバーは、送信要求を行う前に、指定したカプセル化の種類で、ミニポート ドライバーが IPv4 をサポートしていることを確認する必要があることに注意してください。

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 構造体には、最大セグメント サイズ (MSS) が含まれています。 TcpHeaderOffset メンバーは、ミニポート ドライバーが IP ヘッダー、IP オプション、または IP 拡張ヘッダーを解析する必要がないように、TCP ヘッダーの場所を指定します。

LSOV2 と LSOV1 をサポートする NDIS 6.0 以降のミニポート ドライバーは、ドライバー スタックが LSOV2 または LSOV1 を使用しているかどうかを判断する NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFOType メンバーをチェックする必要があり、適切なオフロードを実行する必要があります。

LSOv1 の場合、ミニポート ドライバーが LSO を使用して小さいパケットにセグメント化された大きな TCP パケットの送信を完了する前に、ドライバーは、セグメント化されたパケットで送信された TCP ペイロード バイトの数を NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO の TcpPayload メンバーに書き込みます。

ミニポート ドライバーは、その機能で NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q フラグを指定する場合、バッファー データ内の VLAN ヘッダーを含む NET_BUFFER_LIST 構造体でタスク オフロード サービスを実行できます。 受信データの場合、このフラグは、ミニポート ドライバーが受信チェックサム計算を実行し、イーサネット パケットに VLAN ヘッダーを配置することを示します。

ミニポート ドライバーは、その機能で NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB フラグを指定する場合、Ieee8021QnetBufferListInfo データ内の VLAN ヘッダーを含む NET_BUFFER_LIST 構造体でタスク オフロード サービスを実行できます。 受信 チェックサム オフロード ケースでは、ミニポートは Ieee8021QnetBufferListInfo OOB データに VLAN ヘッダーを挿入します。