NET_PACKET structure (packet.h)

Represents a single network packet.

Syntax

typedef struct _NET_PACKET {
  UINT32            FragmentIndex;
  UINT16            FragmentCount;
  NET_PACKET_LAYOUT Layout;
  UINT8             Ignore : 1;
  UINT8             Scratch : 1;
  UINT8             Reserved1 : 6;
} NET_PACKET;

Members

FragmentIndex

The index in the fragment ring of the first NET_FRAGMENT structure in this packet's payload.

FragmentCount

The number of NET_FRAGMENT structures that belong to this packet.

Layout

A NET_PACKET_LAYOUT structure.

For transmit queues, if the host stack has enabled a task offload that uses a protocol header, specifies a read-only offset to each protocol field. For example, if TCP checksum offload is enabled, this member specifies the offset to the TCP header. Otherwise, this member is empty.

For receive queues, if the host stack has enabled a task offload that uses a protocol header, set the Layer2Type, Layer3Type, and Layer4Type flags. When there are no task offloads this member is empty.

Ignore

For receive queues, the client sets this field to prevent the packet from being indicated to the host. For example, if the hardware encountered a DMA error while writing bytes into this the data buffer for this packet's fragments, the client can set this field to drop the partial packet.

For transmit queues, this field is read-only. If set, it indicates that the client should not transmit the packet.

Scratch

A bit field value that the client may use for any purpose. When the NET_PACKET is reused, this value is reset to zero.

Reserved1

Reserved. Client drivers must not read or write this value.

Remarks

Each NET_PACKET structure represents a single network frame and contains basic metadata applicable to all packets, such as the framing layout. A NET_PACKET contains at least one NET_FRAGMENT that describes the location in system memory where the packet data resides.

The NET_PACKET structure can be an element in a NET_RING structure.

Requirements

Requirement Value
Minimum KMDF version 1.29
Minimum UMDF version 2.33
Header packet.h