Determining Whether to Fail an Offload Request Because of 802.1Q Information
[The TCP chimney offload feature is deprecated and should not be used.]
When the host stack makes an initiate offload request, one or more filter or intermediate drivers might be present between the host stack and the offload target. During the initiate offload request, a filter or intermediate driver might set the VlanId member of NEIGHBOR_OFFLOAD_STATE_CONST structure, the UserPriority member of the TCP_OFFLOAD_STATE_CACHED structure, or both.
When processing an initiate offload request in its MiniportInitiateOffload function, an offload target must determine whether to fail the request based on the supplied 802.1Q information. The initiate offload request can request more VLAN tag resources than the offload target has available. If this situation occurs, the offload target must fail the initiate offload request by supplying a value of NDIS_STATUS_OFFLOAD_VLAN_TAG_ENTRIES in the Status member of the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure that is associated with the neighbor state object. If offload target resources are available, the following algorithm applies:
If the interface VLAN identifier (the VLAN identifier that is read from the registry) is zero, the offload target must not fail the initiate offload request because of the neighbor VlanId for the TCP connection unless it has run out of VLAN identifier resources.
If one or more of the interface VLAN identifiers is nonzero, one or more VLANs are configured for the network interface.
- If the neighbor VlanId is zero, the offload target must not fail the initiate offload request because of the neighbor VlanId .
- If the neighbor VlanId is nonzero and matches one of the interface VLAN identifiers, the offload target must not fail the initiate offload request because of the neighbor VlanId unless it has run out of VLAN identifiers resources.
- If the neighbor VlanId is nonzero and does not match one of the interface VLAN identifiers, the offload target must fail the initiate offload request with the Status member set to NDIS_STATUS_VLAN_MISMATCH.