Summary of NDIS 6.0 Task Offload Porting Issues for Protocol Drivers
The following list summarizes the issues that you must consider when you port offload-capable protocol drivers to NDIS 6.0:
All of the general NDIS 6.0 porting issues apply to porting task offload drivers. For general issues about porting protocol drivers to NDIS 6.0, see Porting Protocol Drivers to NDIS 6.0.
NDIS provides the default offload configuration of the underlying miniport adapter in the DefaultOffloadConfiguration member of the NDIS_BIND_PARAMETERS structure. Protocol drivers should avoid using object identifier (OID) queries and should use the information in NDIS_BIND_PARAMETERS instead.
Protocol drivers can support the following NDIS 6.0 offload OIDs:
OID_TCP_OFFLOAD_CURRENT_CONFIG
As a query request, use the OID_TCP_OFFLOAD_CURRENT_CONFIG OID to determine the task offload capabilities of an underlying miniport adapter.OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES
As a query request, use the OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES OID to report what capabilities a miniport adapter's hardware can support. Protocol drivers or user-mode applications can query this OID to obtain the task offload hardware capabilities. A system administrator can use this OID through the Windows Management Instrumentation (WMI) interface.OID_TCP_OFFLOAD_PARAMETERS
As a set request, use the OID_TCP_OFFLOAD_PARAMETERS OID to set the current offload capabilities of a miniport adapter. Protocol drivers or user-mode applications can set this OID to change the current task offload capabilities. A system administrator can use this OID through the WMI interface.OID_OFFLOAD_ENCAPSULATION
As a set request, use the OID_OFFLOAD_ENCAPSULATION OID to set the task offload encapsulation settings of an underlying miniport adapter.As a query request, use the OID_OFFLOAD_ENCAPSULATION OID to obtain the current task offload encapsulation settings of an underlying miniport adapter.
OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG
As a query request, use the OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG OID to determine the current connection offload capabilities of an underlying miniport adapter.OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES
As a query request, use the OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES OID to determine the current connection offload hardware capabilities of an underlying miniport adapter.OID_TCP_CONNECTION_OFFLOAD_PARAMETERS
As a set request, use the OID_TCP_CONNECTION_OFFLOAD_PARAMETERS OID to set the connection offload configuration parameters of an underlying miniport adapter.As a query request, use the OID_TCP_CONNECTION_OFFLOAD_PARAMETERS OID to determine the current connection offload settings of an underlying miniport adapter.
All task offload capabilities that a miniport adapter supports are enabled by default. The available services are first activated when the protocol driver sets the OID_OFFLOAD_ENCAPSULATION OID. Connection offload services are separate from the task offload services; their operations are enabled by a set request of OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES.
Protocol drivers must handle changes in the task offload capabilities that underlying drivers report. Miniport drivers can report changes in task offload capabilities in the NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication. For example, consider a load balance failover (LBFO) driver that is configured over two network interface cards (NICs). If an offload-capable NIC fails and send requests must go to a non-offload-capable NIC, the task offload capabilities in the driver stack must be updated.
Protocol drivers must support large send offload version 1 (LSOV1) and large send offload version 2 (LSOV2) out-of-band (OOB) information. The information is stored in the NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO structure that is part of the OOB information that is included in a NET_BUFFER_LIST structure.