www.ti.com | Architecture |
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.6.5.3Buffer Offset
This
Whether or not this field is updated depends on the setting of the RXBUFFEROFFSET register. When the offset register is set to a
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.
SPRUFI5B
Submit Documentation Feedback | (MDIO) |
|
©