Splitting IPv4 Frames

To support header-data split, a NIC must support splitting IPv4 Ethernet frames that have no IPv4 options. The NIC must be able to split such frames at the beginning of upper-layer-protocol header.

Support for IPv4 Ethernet frames with IPv4 options is optional. The NIC can support some IPv4 options and not the others. The NIC must not split IPv4 frames that contain IPv4 options that it does not recognize. The header portion of a split frame must contain the entire IPv4 header and all of the IPv4 options that are present.

The NIC can also support header-data split for fragmented IPv4 frames. For more information about fragmented IPv4 frames, see Splitting Fragmented IP Frames.

Note  Supporting an IPv4 option, an IPv6 extension header or a TCP option, for the purposes of header-data requirements, implies the ability of the NIC to recognize the element, determine its length, include it in the header MDL and locate its end and the beginning of the next element in the frame.

If the header-data split provider splits an IPv4 frame, the indicated NET_BUFFER_LIST structures must have the NDIS_NBL_FLAGS_IS_IPV4 flag set in the NblFlags member. For complete information about setting header-data split flags in the NET_BUFFER_LIST structure, see Setting NET_BUFFER_LIST Information.

Additional Ethernet frame characteristics determine how to split IPv4 frames. If the IP frame is fragmented, see Splitting Fragmented IP Frames. If the frame contains TCP information, see Splitting Frames at the TCP Payload. If the frame contains UDP information, see Splitting Frames at the UDP Payload. For all other cases, see Splitting Frames Other Than TCP and UDP.