RTEMS 6.1-rc2
|
Modules | |
GMACD Return Codes | |
Macros | |
#define | GCIRC_CNT(head, tail, size) fixed_mod((head) - (tail), (size)) |
#define | GCIRC_SPACE(head, tail, size) GCIRC_CNT((tail),((head)+1),(size)) |
#define | GCIRC_CNT_TO_END(head, tail, size) |
#define | GCIRC_SPACE_TO_END(head, tail, size) |
#define | GCIRC_INC(headortail, size) |
#define | GCIRC_EMPTY(head, tail) (head == tail) |
#define | GCIRC_CLEAR(head, tail) (head = tail = 0) |
Functions | |
__STATIC_INLINE int | fixed_mod (int a, int b) |
void | GMACD_TxPtpEvtMsgCBRegister (sGmacd *pGmacd, fGmacdTxPtpEvtCallBack pTxPtpEvtCb, gmacQueList_t queIdx) |
void | GMACD_Handler (sGmacd *pGmacd, gmacQueList_t queIdx) |
GMAC Interrupt handler. | |
void | GMACD_Init (sGmacd *pGmacd, Gmac *pHw, uint8_t bID, uint8_t enableCAF, uint8_t enableNBC) |
Initialize the GMAC with the Gmac controller address. | |
uint8_t | GMACD_InitTransfer (sGmacd *pGmacd, const sGmacInit *pInit, gmacQueList_t queIdx) |
void | GMACD_Reset (sGmacd *pGmacd) |
uint8_t | GMACD_SendSG (sGmacd *pGmacd, const sGmacSGList *sgl, fGmacdTransferCallback fTxCb, gmacQueList_t queIdx) |
Send a frame split into buffers. If the frame size is larger than transfer buffer size error returned. If frame transfer status is monitored, specify callback for each frame. | |
uint8_t | GMACD_Send (sGmacd *pGmacd, void *pBuffer, uint32_t size, fGmacdTransferCallback fTxCb, gmacQueList_t queIdx) |
Send a packet with GMAC. If the packet size is larger than transfer buffer size error returned. If packet transfer status is monitored, specify callback for each packet. | |
uint32_t | GMACD_TxLoad (sGmacd *pGmacd, gmacQueList_t queIdx) |
uint8_t | GMACD_Poll (sGmacd *pGmacd, uint8_t *pFrame, uint32_t frameSize, uint32_t *pRcvSize, gmacQueList_t queIdx) |
Receive a packet with GMAC. If not enough buffer for the packet, the remaining data is lost but right frame length is returned. | |
void | GMACD_SetRxCallback (sGmacd *pGmacd, fGmacdTransferCallback fRxCb, gmacQueList_t queIdx) |
Registers pRxCb callback. Callback will be invoked after the next received frame. When GMAC_Poll() returns GMAC_RX_NO_DATA the application task call GMAC_Set_RxCb() to register pRxCb() callback and enters suspend state. The callback is in charge to resume the task once a new frame has been received. The next time GMAC_Poll() is called, it will be successful. | |
uint8_t | GMACD_SetTxWakeupCallback (sGmacd *pGmacd, fGmacdWakeupCallback fWakeup, uint8_t bThreshold, gmacQueList_t queIdx) |
Variables | |
uint8_t | ptpTxQueWriteIdx = 0u |
uint8_t | ptpTxQueReadIdx = 0u |
ptpMsgType | gPtpMsgTxQue [EFRS_BUFFER_LEN] |
uint16_t | gPtpMsgTxSeqId [EFRS_BUFFER_LEN] |
const uint32_t | isrMasks [] |
#define GCIRC_CLEAR | ( | head, | |
tail | |||
) | (head = tail = 0) |
Clear circular buffer
#define GCIRC_CNT | ( | head, | |
tail, | |||
size | |||
) | fixed_mod((head) - (tail), (size)) |
Return count in buffer
#define GCIRC_CNT_TO_END | ( | head, | |
tail, | |||
size | |||
) |
Return count up to the end of the buffer. Carefully avoid accessing head and tail more than once, so they can change underneath us without returning inconsistent results
#define GCIRC_EMPTY | ( | head, | |
tail | |||
) | (head == tail) |
Circular buffer is empty ?
#define GCIRC_INC | ( | headortail, | |
size | |||
) |
Increment head or tail
#define GCIRC_SPACE | ( | head, | |
tail, | |||
size | |||
) | GCIRC_CNT((tail),((head)+1),(size)) |
Return space available, 0..size-1. always leave one free char as a completely full buffer has head == tail, which is the same as empty
#define GCIRC_SPACE_TO_END | ( | head, | |
tail, | |||
size | |||
) |
Return space available up to the end of the buffer
__STATIC_INLINE int fixed_mod | ( | int | a, |
int | b | ||
) |
ISO/IEC 14882:2003(E) - 5.6 Multiplicative operators: The binary / operator yields the quotient, and the binary % operator yields the remainder from the division of the first expression by the second. If the second operand of / or % is zero the behaviour is undefined; otherwise (a/b)*b + ab is equal to a. If both operands are non-negative then the remainder is non-negative; if not, the sign of the remainder is implementation-defined 74).
void GMACD_Handler | ( | sGmacd * | pGmacd, |
gmacQueList_t | queIdx | ||
) |
GMAC Interrupt handler.
pGmacd | Pointer to GMAC Driver instance. |
Initialize the GMAC with the Gmac controller address.
pGmacd | Pointer to GMAC Driver instance. |
pHw | Pointer to HW address for registers. |
bID | HW ID for power management |
enableCAF | Enable/Disable CopyAllFrame. |
enableNBC | Enable/Disable NoBroadCast. |
Initialize necessary allocated buffer lists for GMAC Driver to transfer data. Must be invoked after GMACD_Init() but before RX/TX start. Replace the deprecated GMACD_InitTransfer().
pGmacd | Pointer to GMAC Driver instance. |
pInit | Pointer to sGmacInit. |
pInit | Pointer to gmacQueList_t for different queue. |
uint8_t GMACD_Poll | ( | sGmacd * | pGmacd, |
uint8_t * | pFrame, | ||
uint32_t | frameSize, | ||
uint32_t * | pRcvSize, | ||
gmacQueList_t | queIdx | ||
) |
Receive a packet with GMAC. If not enough buffer for the packet, the remaining data is lost but right frame length is returned.
pGmacd | Pointer to GMAC Driver instance. |
pFrame | Buffer to store the frame |
frameSize | Size of the frame |
pRcvSize | Received size |
void GMACD_Reset | ( | sGmacd * | pGmacd | ) |
Reset TX & RX queue & statistics
pGmacd | Pointer to GMAC Driver instance. |
uint8_t GMACD_Send | ( | sGmacd * | pGmacd, |
void * | pBuffer, | ||
uint32_t | size, | ||
fGmacdTransferCallback | fTxCb, | ||
gmacQueList_t | queIdx | ||
) |
Send a packet with GMAC. If the packet size is larger than transfer buffer size error returned. If packet transfer status is monitored, specify callback for each packet.
pGmacd | Pointer to GMAC Driver instance. |
pBuffer | The buffer to be send |
size | The size of buffer to be send |
fTxCb | Threshold Wakeup callback |
uint8_t GMACD_SendSG | ( | sGmacd * | pGmacd, |
const sGmacSGList * | sgl, | ||
fGmacdTransferCallback | fTxCb, | ||
gmacQueList_t | queIdx | ||
) |
Send a frame split into buffers. If the frame size is larger than transfer buffer size error returned. If frame transfer status is monitored, specify callback for each frame.
pGmacd | Pointer to GMAC Driver instance. |
sgl | Pointer to a scatter-gather list describing the buffers of the ethernet frame. |
fTxCb | Pointer to callback function. |
void GMACD_SetRxCallback | ( | sGmacd * | pGmacd, |
fGmacdTransferCallback | fRxCb, | ||
gmacQueList_t | queIdx | ||
) |
Registers pRxCb callback. Callback will be invoked after the next received frame. When GMAC_Poll() returns GMAC_RX_NO_DATA the application task call GMAC_Set_RxCb() to register pRxCb() callback and enters suspend state. The callback is in charge to resume the task once a new frame has been received. The next time GMAC_Poll() is called, it will be successful.
pGmacd | Pointer to GMAC Driver instance. |
fRxCb | Pointer to callback function |
uint8_t GMACD_SetTxWakeupCallback | ( | sGmacd * | pGmacd, |
fGmacdWakeupCallback | fWakeup, | ||
uint8_t | bThreshold, | ||
gmacQueList_t | queIdx | ||
) |
Register/Clear TX wakeup callback.
When GMACD_Send() returns GMACD_TX_BUSY (all TD busy) the application task calls GMACD_SetTxWakeupCallback() to register fWakeup() callback and enters suspend state. The callback is in charge to resume the task once several TD have been released. The next time GMACD_Send() will be called, it shall be successful.
This function is usually invoked with NULL callback from the TX wakeup callback itself, to unregister. Once the callback has resumed the application task, there is no need to invoke the callback again.
pGmacd | Pointer to GMAC Driver instance. |
fWakeup | Wakeup callback. |
bThreshold | Number of free TD before wakeup callback invoked. |
uint32_t GMACD_TxLoad | ( | sGmacd * | pGmacd, |
gmacQueList_t | queIdx | ||
) |
Return current load of TX.
pGmacd | Pointer to GMAC Driver instance. |
const uint32_t isrMasks[] |