Reporting a NIC's TCP-Packet-Segmentation Capabilities (NDIS 5.1)
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
The miniport driver specifies its NIC's packet-segmentation capabilities in an NDIS_TASK_TCP_LARGE_SENDstructure. In response to a query of OID_TCP_TASK_OFFLOAD, the miniport driver overlays this structure onto the TaskBufferof an NDIS_TASK_OFFLOADstructure that the miniport driver returns in the InformationBuffer.
The NDIS_TASK_TCP_LARGE_SEND structure is defined as:
typedef struct _NDIS_TASK_TCP_LARGE_SEND
{
ULONG Version;
ULONG MaxOffLoadSize;
ULONG MinSegmentCount;
BOOLEAN TcpOptions;
BOOLEAN IpOptions;
} NDIS_TASK_TCP_LARGE_SEND, *PNDIS_TASK_TCP_LARGE_SEND;
The miniport driver must specify the following in the NDIS_TASK_TCP_LARGE_SEND structure:
The MaxOffLoadSize, which is the maximum bytes of user data that the TCP/IP transport can pass to the miniport driver in a large TCP packet.
The MinSegmentCount, which is the minimum number of segments by which a large TCP packet must be divisible before the TCP/IP transport can offload it to the miniport driver's NIC for segmentation.
Whether its NIC can segment a large TCP packet that contains TCP options.
Whether its NIC can segment a large TCP packet that contains IP options.