/** * \fn txMgmtQ_ResumeTx * \brief Resume all Tx * * \param hTxMgmtQ - The module's object */ void txMgmtQ_ResumeTx (TI_HANDLE hTxMgmtQ) { TTxMgmtQ *pTxMgmtQ = (TTxMgmtQ *)hTxMgmtQ; txMgmtQ_WakeAll(hTxMgmtQ); txDataQ_WakeAll(pTxMgmtQ->hTxDataQ); }
/**************************************************************************** * updateQueuesStates() **************************************************************************** * DESCRIPTION: Switch the Data-Queue and Mgmt-Queue Tx on/off (stop/wake) * according to the current port conditions. ****************************************************************************/ static void updateQueuesStates (TTxPortObj *pTxPort) { EQueueAction mgmtQueueAction = QUEUE_ACTION_NONE; EQueueAction dataQueueAction = QUEUE_ACTION_NONE; #ifdef TI_DBG char *pMuxStateNameStr; char *pPortActionNameStr; #endif /* * If the Tx path is not suspended: */ if (!pTxPort->txSuspended) { /* If mgmt-queues should be enabled, set required actions (awake mgmt and stop data if needed). */ if (pTxPort->queuesMuxState == MUX_MGMT_QUEUES) { if ( !pTxPort->mgmtQueueEnabled ) mgmtQueueAction = QUEUE_ACTION_WAKE; if ( pTxPort->dataQueueEnabled ) dataQueueAction = QUEUE_ACTION_STOP; } /* If data-queues should be enabled, set required actions (stop mgmt and awake data if needed). */ else { if ( pTxPort->mgmtQueueEnabled ) mgmtQueueAction = QUEUE_ACTION_STOP; if ( !pTxPort->dataQueueEnabled ) dataQueueAction = QUEUE_ACTION_WAKE; } } /* * If the Tx path is not available (Xfer is busy or suspension is requested), * set required actions (stop mgmt and data if needed). */ else { if ( pTxPort->mgmtQueueEnabled ) mgmtQueueAction = QUEUE_ACTION_STOP; if ( pTxPort->dataQueueEnabled ) dataQueueAction = QUEUE_ACTION_STOP; } #ifdef TI_DBG pMuxStateNameStr = txPortMuxStateNameStr(pTxPort->queuesMuxState); pPortActionNameStr = txPortActionNameStr (mgmtQueueAction); #endif /* TI_DBG */ /* * Execute the required actions. * Note: This is done at the end of this function because it may start a sequence that will call it again!! * Always do WAKE action after STOP action, since WAKE may lead to more activities!! */ if (mgmtQueueAction == QUEUE_ACTION_STOP) { pTxPort->mgmtQueueEnabled = TI_FALSE; txMgmtQ_StopAll (pTxPort->hTxMgmtQ); } if (dataQueueAction == QUEUE_ACTION_STOP) { pTxPort->dataQueueEnabled = TI_FALSE; txDataQ_StopAll (pTxPort->hTxDataQ); } if (mgmtQueueAction == QUEUE_ACTION_WAKE) { pTxPort->mgmtQueueEnabled = TI_TRUE; txMgmtQ_WakeAll (pTxPort->hTxMgmtQ); } if (dataQueueAction == QUEUE_ACTION_WAKE) { pTxPort->dataQueueEnabled = TI_TRUE; txDataQ_WakeAll (pTxPort->hTxDataQ); } }