Esempio n. 1
0
/****************************************************************************************
 *                        os_printf()
 ****************************************************************************************
DESCRIPTION:  	Print formatted output.

INPUT:          format -  Specifies the string, to be printed

RETURN:			None

NOTES:
*****************************************************************************************/
void os_printf(const char *format ,...)
{
	static int from_new_line = 1;		/* Used to save the last message EOL */
	va_list ap;
	static char msg[MAX_MESSAGE_SIZE];
	char *p_msg = msg;			/* Pointer to the message */
	TI_UINT16 message_len;
	TI_UINT32 sec = 0;
	TI_UINT32 uSec = 0;
	os_memoryZero(NULL,msg, MAX_MESSAGE_SIZE);

	/* Format the message and keep the message length */
	va_start(ap,format);
	message_len = vsnprintf(&msg[0], sizeof(msg) -1 , format, ap);

	if (message_len > 0) {
		if ( from_new_line ) {
			if (msg[1] == '$') {
				p_msg += 4;
			}

			sec = os_timeStampUs(NULL);
			uSec = sec % MICROSECOND_IN_SECONDS;
			sec /= MICROSECOND_IN_SECONDS;

			printk(KERN_INFO DRIVER_NAME ": %d.%06d: %s",sec,uSec,p_msg);
		} else {
			printk(&msg[0]);
		}

		from_new_line = ( msg[message_len - 1] == '\n' );
	}

	va_end(ap);
}
/* Add trace entry. not safe, but will do */
int tb_trace(int loc, unsigned long p1, unsigned long p2)
{
	int pos;

	if ((tb_control->options & TB_OPTION_STOP) || ((pos = tb_next()) < 0)) {
		return -1;
	}
	tb_control->entry[pos].ts = os_timeStampUs(NULL);
	tb_control->entry[pos].loc= loc;
	tb_control->entry[pos].p1 = p1;
	tb_control->entry[pos].p2 = p2;

	return pos;
}
Esempio n. 3
0
/***********************************************************************
 *                        txCtrlParams_setAdmissionCtrlParams
 ***********************************************************************
DESCRIPTION:    This function is called for add/delete a tspec in order
				to update parameters.

INPUT:			hTxCtrl - handale to the ts data object
				acId - the AC of the tspec
				mediumTime	- tha alocated medium time for this UP
				minimumPHYRate - the min phy rate to send a packet of this UP
				admFlag - indicate if the its addition or deletion of tspec

OUTPUT:     None

RETURN:     void
************************************************************************/
TI_STATUS txCtrlParams_setAdmissionCtrlParams(TI_HANDLE hTxCtrl, TI_UINT8 acId, TI_UINT16 mediumTime,
        TI_UINT32 minimumPHYRate, TI_BOOL admFlag)
{
    txCtrl_t *pTxCtrl = (txCtrl_t *)hTxCtrl;
    TI_UINT32	i;

    if(admFlag == TI_TRUE)
    {
        pTxCtrl->tokenCalcParams[acId].allocatedMediumTime = mediumTime;
        pTxCtrl->tokenCalcParams[acId].tokens = mediumTime;
        pTxCtrl->tokenCalcParams[acId].unusedTokensReminder = 0;
        pTxCtrl->tokenCalcParams[acId].usedTokensReminder = 0;
        pTxCtrl->tokenCalcParams[acId].lastCalcTimeStamp = os_timeStampUs(pTxCtrl->hOs);
        pTxCtrl->tokenCalcParams[acId].timeDiffMinThreshold = (1000000/mediumTime);
        /* tspec added */
        pTxCtrl->mediumTime[acId] = mediumTime;
        pTxCtrl->admissionState[acId] = AC_ADMITTED;
        pTxCtrl->useAdmissionAlgo[acId] = TI_TRUE;
        pTxCtrl->lastCreditCalcTimeStamp[acId] = os_timeStampMs(pTxCtrl->hOs);
        pTxCtrl->credit[acId] = mediumTime;
    }
    else
    {
        pTxCtrl->tokenCalcParams[acId].allocatedMediumTime = 0;
        pTxCtrl->tokenCalcParams[acId].tokens = 0;
        pTxCtrl->tokenCalcParams[acId].unusedTokensReminder = 0;
        pTxCtrl->tokenCalcParams[acId].usedTokensReminder = 0;
        pTxCtrl->tokenCalcParams[acId].timeDiffMinThreshold = 0;
        /* tspaec deleted */
        pTxCtrl->mediumTime[acId] = 0;
        pTxCtrl->admissionState[acId] = AC_NOT_ADMITTED;
        pTxCtrl->useAdmissionAlgo[acId] = TI_FALSE;
        pTxCtrl->lastCreditCalcTimeStamp[acId] = 0;
        pTxCtrl->credit[acId] = 0;
    }

    /* Update the Tx queues mapping after admission change. */
    txCtrl_UpdateQueuesMapping (hTxCtrl);

    /* If the timer was not enabled in registry than we will never set it */
    if (pTxCtrl->bCreditCalcTimerEnabled)
    {
        /* enable disable credit calculation timer */
        for (i = 0; i < MAX_NUM_OF_AC; i++)
        {
            if (pTxCtrl->useAdmissionAlgo[i])
            {
                if (!pTxCtrl->bCreditCalcTimerRunning)
                {
                    pTxCtrl->bCreditCalcTimerRunning = TI_TRUE;
                    tmr_StartTimer (pTxCtrl->hCreditTimer,
                                    calcCreditFromTimer,
                                    (TI_HANDLE)pTxCtrl,
                                    pTxCtrl->creditCalculationTimeout,
                                    TI_TRUE);
                }

                return TI_OK;
            }
        }

        /* in all queues useAdmissionAlgo is not TRUE, so stop timer if running */
        if (pTxCtrl->bCreditCalcTimerRunning)
        {
            tmr_StopTimer (pTxCtrl->hCreditTimer);
            pTxCtrl->bCreditCalcTimerRunning = TI_FALSE;
        }
    }

    return TI_OK;
}