
www.ti.com  | EMAC Functional Architecture  | 
2.5.5Receive Buffer Descriptor Format
A receive (RX) buffer descriptor (Figure 13) is a contiguous block of four 
Example 2 shows the receive descriptor described by a C structure.
  | 
  | 
  | Figure 13. Receive Descriptor Format | 
  | 
  | ||||
(a) Word 0  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
31  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 0  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | ||
  | 
  | 
  | 
  | Next Descriptor Pointer  | 
  | 
  | 
  | ||
(b) Word 1  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
31  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 0  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | ||
  | 
  | 
  | 
  | Buffer Pointer  | 
  | 
  | 
  | ||
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
(c) Word 2  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
31  | 
  | 
  | 16  | 15  | 
  | 
  | 0  | ||
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | ||
  | Buffer Offset  | 
  | 
  | 
  | 
  | Buffer Length  | 
  | ||
(d) Word 3  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
31  | 30  | 29  | 28  | 27  | 26  | 25  | 24  | ||
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
SOP  | EOP  | OWNER  | 
  | EOQ  | 
  | TDOWNCMPLT  | PASSCRC  | JABBER  | OVERSIZE  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
23  | 22  | 21  | 20  | 19  | 18  | 17  | 16  | ||
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
FRAGMENT  | UNDERSIZED  | CONTROL  | 
  | OVERRUN  | 
  | CODEERROR  | ALIGNERROR  | CRCERROR  | NOMATCH  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
15  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 0  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | Packet Length  | 
  | 
  | 
  | ||
Example 2. Receive 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  | 
SPRUEF8F   | C6472/TCI6486 EMAC/MDIO  | 37  | 
Submit Documentation Feedback | 
  | 
  | 
Copyright ©