/* Remove a RtkBuffer from specified rtkqueue at list tail.  */
RTK_BUFFER* RtbDequeueTail(IN OUT RTB_QUEUE_HEAD *RtkQueueHead)
/* Remove a RtkBuffer from specified rtkqueue at list tail.  */
RTK_BUFFER* RtbDequeueTail(IN OUT RTB_QUEUE_HEAD *RtkQueueHead)
{
    RTK_BUFFER* Rtb = NULL;
    aos_mutex_lock(&RtkQueueHead->Lock, AOS_WAIT_FOREVER);
    if (RtbQueueIsEmpty(RtkQueueHead))
    {
         aos_mutex_unlock(&RtkQueueHead->Lock);
         return NULL;
    }
    Rtb = (RTK_BUFFER*)RtkQueueHead->List.Prev;
    RtbRemoveNode(RtkQueueHead, Rtb);
    aos_mutex_unlock(&RtkQueueHead->Lock);
    return Rtb;
}