+ * ****************************************************************/
+void LwrMacEnqueueWlsBlock()
+{
+ void *memPtr;
+ void *wlsHdlr;
+
+ WLS_MEM_ALLOC(memPtr, LWR_MAC_WLS_BUF_SIZE);
+
+ if(memPtr)
+ {
+ wlsHdlr = mtGetWlsHdl();
+
+ /* allocate blocks for UL transmittion */
+ while(WLS_EnqueueBlock(wlsHdlr, WLS_VA2PA(wlsHdlr, memPtr)))
+ {
+ WLS_MEM_ALLOC(memPtr, LWR_MAC_WLS_BUF_SIZE);
+ if(!memPtr)
+ break;
+ }
+
+ // free not enqueued block
+ if(memPtr)
+ {
+ WLS_MEM_FREE(memPtr, LWR_MAC_WLS_BUF_SIZE);
+ }
+ }
+}/* LwrMacEnqueueWlsBlock */
+
+/*******************************************************************
+ *
+ * @brief Enqueue N number of blocks
+ *
+ * @details
+ *
+ * Function : enqueueNBlocks
+ *
+ * Functionality:
+ * Enqueue N number of memory blocks
+ *
+ * @params[in] Number of blocks
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint16_t enqueueNBlocks(uint32_t numBlocks)
+{
+ void *memPtr;
+ void *wlsHdlr; /* WLS handler */
+
+ wlsHdlr = mtGetWlsHdl();
+ while(numBlocks)
+ {
+ numBlocks--;
+
+ memPtr = (void *)NULL;
+ WLS_MEM_ALLOC(memPtr, LWR_MAC_WLS_BUF_SIZE);
+ if(memPtr)
+ {
+ WLS_EnqueueBlock(wlsHdlr, WLS_VA2PA(wlsHdlr, memPtr));
+ }
+ }
+ RETVALUE(ROK);
+}/* enqueueNBlocks */
+
+/*******************************************************************
+ *
+ * @brief Add memory block (to be freed later) to list
+ *
+ * @details
+ *
+ * Function : addWlsBlockToFree
+ *
+ * Functionality:
+ * Add memory block (to be freed later) to list
+ *
+ * @params[in]
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+void addWlsBlockToFree(void *msg, uint32_t msgLen, uint8_t idx)
+{
+ CmLList *node;
+ WlsBlockToFree *block;
+ MAC_ALLOC(block, sizeof(WlsBlockToFree));
+ if(block)
+ {
+ MAC_ALLOC(node, sizeof(CmLList));
+ if(node)
+ {
+ block->ptr = msg;
+ block->size = msgLen;