/* Use the API defined in xemacps_bd.h to modify individual BDs. Traversal of the BD set can be done using XEmacPs_BdRingNext() and XEmacPs_BdRingPrev(). */
LONG XEmacPs_BdRingAlloc(XEmacPs_BdRing *RingPtr, u32 NumBd, XEmacPs_Bd **BdSetPtr)
/* Use the API defined in xemacps_bd.h to modify individual BDs. Traversal of the BD set can be done using XEmacPs_BdRingNext() and XEmacPs_BdRingPrev(). */
LONG XEmacPs_BdRingAlloc(XEmacPs_BdRing *RingPtr, u32 NumBd, XEmacPs_Bd **BdSetPtr)
{
    LONG Status;
    if (RingPtr->FreeCnt < NumBd) {
        Status = (LONG)(XST_FAILURE);
    } else {
    *BdSetPtr = RingPtr->FreeHead;
    XEMACPS_RING_SEEKAHEAD(RingPtr, RingPtr->FreeHead, NumBd);
    RingPtr->FreeCnt -= NumBd;
    RingPtr->PreCnt += NumBd;
        Status = (LONG)(XST_SUCCESS);
    }
    return Status;
}