typedef struct {
  CTL_ETH_HEADER_t *data;
  unsigned byteCount;
  unsigned ethAndIpByteCount;

For frame-based MACs (LPC2xxx, STR91x, SAM7X), there is a rotating ring of receive frame buffers that are passed to the network task during processing of received frames.

For FIFO-based MACs (Stellaris, ENC28J60), there is a single static receive frame buffer that is filled and then passed to the network task as frames arrive.

In either case, the stack or application code must not hold on to any data in the received frame outside the context of ctl_net_process_received_frame, nor should it block in ctl_net_process_received_frame (which includes any UDP callback handler).

The members are:

Pointer to the complete Ethernet receive frame; the Ethernet header and payload data are held in a single chunk, unlike transmission frames which separate header and payload.
The total count of bytes in the received Ethernet frame, which excludes the __required_align member in the Ethernet header, and excludes the FCS appended by the transmitting MAC.
Set in the IP layer. The offset of the start of the TCP, UDP, or ICMP header after IP options have been parsed, relative to the start of the Ethernet frame, excluding the alignment short.