Architecture

www.ti.com

Example 2. Receive Buffer Descriptor in C Structure Format

/*

//EMAC Descriptor

//The following is the format of a single buffer descriptor

//on the EMAC.

*/

 

typedef

struct _EMAC_Desc {

struct

_EMAC_Desc *pNext; /* Pointer to next descriptor in chain */

Uint8 *pBuffer; /* Pointer to data buffer */

Uint32

BufOffLen; /* Buffer Offset(MSW) and Length(LSW) */

Uint32

PktFlgLen; /* Packet Flags(MSW) and Length(LSW) */

} EMAC_Desc;

/* Packet Flags */

#define

EMAC_DSC_FLAG_SOP 0x80000000u

#define

EMAC_DSC_FLAG_EOP 0x40000000u

#define

EMAC_DSC_FLAG_OWNER 0x20000000u

#define

EMAC_DSC_FLAG_EOQ 0x10000000u

#define

EMAC_DSC_FLAG_TDOWNCMPLT 0x08000000u

#define

EMAC_DSC_FLAG_PASSCRC 0x04000000u

#define

EMAC_DSC_FLAG_JABBER 0x02000000u

#define

EMAC_DSC_FLAG_OVERSIZE 0x01000000u

#define

EMAC_DSC_FLAG_FRAGMENT 0x00800000u

#define

EMAC_DSC_FLAG_UNDERSIZED 0x00400000u

#define

EMAC_DSC_FLAG_CONTROL 0x00200000u

#define

EMAC_DSC_FLAG_OVERRUN 0x00100000u

#define

EMAC_DSC_FLAG_CODEERROR 0x00080000u

#define

EMAC_DSC_FLAG_ALIGNERROR 0x00040000u

#define

EMAC_DSC_FLAG_CRCERROR 0x00020000u

#define

EMAC_DSC_FLAG_NOMATCH 0x00010000u

2.5.5.3Buffer Offset

This 16-bit field must be initialized to zero by the software application before adding the descriptor to a receive queue.

Whether or not this field is updated depends on the setting of the RXBUFFEROFFSET register. When the offset register is set to a non-zero value, the received packet is written to the packet buffer at an offset given by the value of the register, and this value is also written to the buffer offset field of the descriptor.

When a packet is fragmented over multiple buffers because it does not fit in the first buffer supplied, the buffer offset only applies to the first buffer in the list, which is where the start of packet (SOP) flag is set in the corresponding buffer descriptor. In other words, the buffer offset field is only updated by the EMAC on SOP descriptors.

The range of legal values for the BUFFEROFFSET register is 0 to (Buffer Length – 1) for the smallest value of buffer length for all descriptors in the list.

26

EMAC/MDIO Module

SPRUFL5B –April 2011

 

 

Submit Documentation Feedback

© 2011, Texas Instruments Incorporated

Page 26
Image 26
Texas Instruments TMS320C674X manual Example 2. Receive Buffer Descriptor in C Structure Format, Buffer Offset