亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ixethaccdataplane.c

?? 友善mini2440嵌入式
?? C
?? 第 1 頁 / 共 5 頁
字號:
    /* Check the user is not changing the callback type     * when the port is enabled.    */    if (ixEthAccMacState[portId].portDisableState == ACTIVE)    {	for (port = 0; port < IX_ETH_ACC_NUMBER_OF_PORTS; port++)	{	    if ((ixEthAccMacState[port].portDisableState == ACTIVE)		&& (ixEthAccPortData[port].ixEthAccRxData.rxMultiBufferCallbackInUse == TRUE))	    {		/* one of the active ports has a different rx callback type.		 * Changing the callback type when the port is enabled		 * is not safe		 */		return (IX_ETH_ACC_INVALID_ARG);	    }	}    }    /* update the callback pointer : this is done before     * registering the new qmgr callback     */    ixEthAccPortData[portId].ixEthAccRxData.rxCallbackFn = rxCallbackFn;    ixEthAccPortData[portId].ixEthAccRxData.rxCallbackTag = callbackTag;    /* update the qmgr callback for rx queues */    if (ixEthAccQMgrRxCallbacksRegister(ixEthRxFrameQMCallback)	!= IX_ETH_ACC_SUCCESS)    {	/* unexpected qmgr error */        IX_ETH_ACC_FATAL_LOG("ixEthAccPortRxCallbackRegister: unexpected QMgr error, " \            "could not register Rx single-buffer callback\n", 0, 0, 0, 0, 0, 0);	RX_INC(portId,rxUnexpectedError);	return (IX_ETH_ACC_INVALID_ARG);    }    ixEthAccPortData[portId].ixEthAccRxData.rxMultiBufferCallbackInUse = FALSE;    return (IX_ETH_ACC_SUCCESS);}IX_ETH_ACC_PUBLICIxEthAccStatus ixEthAccPortMultiBufferRxCallbackRegister(			 IxEthAccPortId portId,			 IxEthAccPortMultiBufferRxCallback			 rxCallbackFn,			 UINT32 callbackTag){    IxEthAccPortId port;    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())    {	return (IX_ETH_ACC_FAIL);    }    if (!IX_ETH_ACC_IS_PORT_VALID(portId))    {	return (IX_ETH_ACC_INVALID_PORT);    }    if (IX_ETH_ACC_SUCCESS != ixEthAccSingleEthNpeCheck(portId))    {        IX_ETH_ACC_WARNING_LOG("ixEthAccPortMultiBufferRxCallbackRegister: Unavailable Eth %d: Cannot register Rx Callback.\n",(INT32)portId,0,0,0,0,0);        return IX_ETH_ACC_SUCCESS ;    }    if (!IX_ETH_IS_PORT_INITIALIZED(portId))    {	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    /* Check for null function pointer here. */    if (rxCallbackFn == NULL)    {	return (IX_ETH_ACC_INVALID_ARG);    }    /* Check the user is not changing the callback type     * when the port is enabled.    */    if (ixEthAccMacState[portId].portDisableState == ACTIVE)    {	for (port = 0; port < IX_ETH_ACC_NUMBER_OF_PORTS; port++)	{	    if ((ixEthAccMacState[port].portDisableState == ACTIVE)		&& (ixEthAccPortData[port].ixEthAccRxData.rxMultiBufferCallbackInUse == FALSE))	    {		/* one of the active ports has a different rx callback type.		 * Changing the callback type when the port is enabled		 * is not safe		 */		return (IX_ETH_ACC_INVALID_ARG);	    }	}    }    /* update the callback pointer : this is done before     * registering the new qmgr callback     */    ixEthAccPortData[portId].ixEthAccRxData.rxMultiBufferCallbackFn = rxCallbackFn;    ixEthAccPortData[portId].ixEthAccRxData.rxMultiBufferCallbackTag = callbackTag;    /* update the qmgr callback for rx queues */    if (ixEthAccQMgrRxCallbacksRegister(ixEthRxMultiBufferQMCallback)	!= IX_ETH_ACC_SUCCESS)    {	/* unexpected qmgr error */	RX_INC(portId,rxUnexpectedError);        IX_ETH_ACC_FATAL_LOG("ixEthAccPortMultiBufferRxCallbackRegister: unexpected QMgr error, " \            "could not register Rx multi-buffer callback\n", 0, 0, 0, 0, 0, 0);	return (IX_ETH_ACC_INVALID_ARG);    }    ixEthAccPortData[portId].ixEthAccRxData.rxMultiBufferCallbackInUse = TRUE;    return (IX_ETH_ACC_SUCCESS);}IX_ETH_ACC_PUBLICIxEthAccStatus ixEthAccPortTxFrameSubmit(IxEthAccPortId portId,					 IX_OSAL_MBUF *buffer,					 IxEthAccTxPriority priority){    IX_STATUS	qStatus = IX_SUCCESS;    UINT32      qBuffer;    IxEthAccTxPriority highestPriority;    IxQMgrQStatus txQStatus;#ifndef NDEBUG    if (buffer == NULL)    {	return (IX_ETH_ACC_FAIL);    }    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())    {	return (IX_ETH_ACC_FAIL);    }    if (!IX_ETH_ACC_IS_PORT_VALID(portId))    {	return (IX_ETH_ACC_INVALID_PORT);    }    if (IX_ETH_ACC_SUCCESS != ixEthAccSingleEthNpeCheck(portId))    {        IX_ETH_ACC_FATAL_LOG("ixEthAccPortTxFrameSubmit: Unavailable Eth %d: Cannot submit Tx Frame.\n",			     (INT32)portId,0,0,0,0,0);        return IX_ETH_ACC_PORT_UNINITIALIZED ;    }    if (!IX_ETH_IS_PORT_INITIALIZED(portId))    {	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    if ((UINT32)priority > (UINT32)IX_ETH_ACC_TX_PRIORITY_7)    {	return (IX_ETH_ACC_INVALID_ARG);    }#endif    /*     * Need to Flush the MBUF and its contents (data) as it may be     * read from the NPE. Convert virtual addresses to physical addresses also.     */    qBuffer = ixEthAccMbufTxQPrepare(buffer);    /*     * If no fifo priority set on Xscale ...     */    if (ixEthAccPortData[portId].ixEthAccTxData.schDiscipline ==	FIFO_NO_PRIORITY)    {	/*	 * Add The Tx Buffer to the H/W Tx Q if possible	 * (the priority is passed to the NPE, because	 * the NPE is able to reorder the frames	 * before transmission to the underlying hardware)	 */	qStatus = ixEthAccQmgrTxWrite(portId,				      qBuffer,				      IX_ETH_ACC_TX_DEFAULT_PRIORITY);	if (qStatus == IX_SUCCESS)	{	    TX_STATS_INC(portId,txQOK);	    /*	     * "best case" scenario : Buffer added to h/w Q.	     */	    return (IX_SUCCESS);	}	else if (qStatus == IX_QMGR_Q_OVERFLOW)	{	    /*	     * We were unable to write the buffer to the	     * appropriate H/W Q,  Save it in the sw Q.	     * (use the default priority queue regardless of	     * input parameter)	     */	    priority = IX_ETH_ACC_TX_DEFAULT_PRIORITY;	}	else	{	    /* unexpected qmgr error */	    TX_INC(portId,txUnexpectedError);	    IX_ETH_ACC_FATAL_LOG(		"ixEthAccPortTxFrameSubmit:Error: qStatus = %u\n",		(UINT32)qStatus, 0, 0, 0, 0, 0);	    return (IX_ETH_ACC_FAIL);	}    }    else if (ixEthAccPortData[portId].ixEthAccTxData.schDiscipline ==	     FIFO_PRIORITY)    {	/*	 * For priority transmission, put the frame directly on the H/W queue	 * if the H/W queue is empty, otherwise, put it in a S/W Q	 */	ixQMgrQStatusGet(IX_ETH_ACC_PORT_TO_TX_Q_ID(portId), &txQStatus);	if((txQStatus & IX_QMGR_Q_STATUS_E_BIT_MASK) != 0)	{	    /*The tx queue is empty, check whether there are buffers on the s/w queues*/	    if(ixEthAccTxSwQHighestPriorityGet(portId,  &highestPriority)	       !=IX_ETH_ACC_FAIL)	    {		/*there are buffers on the s/w queues, submit them*/		ixEthAccTxFromSwQ(portId, highestPriority);		/* the queue was empty, 1 buffer is already supplied		 * but is likely to be immediately transmitted and the		 * hw queue is likely to be empty again, so submit		 * more from the sw queues		 */		if(ixEthAccTxSwQHighestPriorityGet(portId,  &highestPriority)		   !=IX_ETH_ACC_FAIL)		{		    ixEthAccTxFromSwQ(portId, highestPriority);		    /*		     * and force the buffer supplied to be placed		     * on a priority queue		     */		    qStatus = IX_QMGR_Q_OVERFLOW;		}		else		{		    /*there are no buffers in the s/w queues, submit directly*/		    qStatus = ixEthAccQmgrTxWrite(portId, qBuffer, priority);		}	    }	    else	    {		/*there are no buffers in the s/w queues, submit directly*/		qStatus = ixEthAccQmgrTxWrite(portId, qBuffer, priority);	    }	}	else	{	    qStatus = IX_QMGR_Q_OVERFLOW;	}    }    else    {	TX_INC(portId,txUnexpectedError);	IX_ETH_ACC_FATAL_LOG(	    "ixEthAccPortTxFrameSubmit:Error: wrong schedule discipline setup\n",	    0, 0, 0, 0, 0, 0);	return (IX_ETH_ACC_FAIL);    }    if(qStatus == IX_SUCCESS )    {	TX_STATS_INC(portId,txQOK);	return IX_ETH_ACC_SUCCESS;    }    else if(qStatus == IX_QMGR_Q_OVERFLOW)    {	TX_STATS_INC(portId,txQDelayed);	/*	 * We were unable to write the buffer to the	 * appropriate H/W Q,  Save it in a s/w Q.	 */	IX_ETH_ACC_DATAPLANE_ADD_MBUF_TO_Q_TAIL(		ixEthAccPortData[portId].		ixEthAccTxData.txQ[priority],		buffer);	qStatus = ixQMgrNotificationEnable(		IX_ETH_ACC_PORT_TO_TX_Q_ID(portId),		IX_ETH_ACC_PORT_TO_TX_Q_SOURCE(portId));        if (qStatus != IX_SUCCESS)	{	    if (qStatus == IX_QMGR_WARNING)	    {		/* notification is enabled for a queue		 * which is already empty (the condition is already met)		 * and there will be no more queue event to drain the sw queue		 */		TX_STATS_INC(portId,txLateNotificationEnabled);		/* pull a buffer from the sw queue */		if(ixEthAccTxSwQHighestPriorityGet(portId,  &highestPriority)		   !=IX_ETH_ACC_FAIL)		{		    /*there are buffers on the s/w queues, submit from them*/		    ixEthAccTxFromSwQ(portId, highestPriority);		}	    }	    else	    {		TX_INC(portId,txUnexpectedError);		IX_ETH_ACC_FATAL_LOG(		     "ixEthAccPortTxFrameSubmit: unexpected Error: %u\n",		     qStatus, 0, 0, 0, 0, 0);	    }        }    }    else    {	TX_INC(portId,txUnexpectedError);	IX_ETH_ACC_FATAL_LOG(	     "ixEthAccPortTxFrameSubmit: unexpected Error: %u\n",	     qStatus, 0, 0, 0, 0, 0);	return (IX_ETH_ACC_FAIL);    }    return (IX_ETH_ACC_SUCCESS);}/** * * @brief replenish: convert a chain of mbufs to the format *        expected by the NPE *  */IX_ETH_ACC_PUBLICIxEthAccStatus ixEthAccPortRxFreeReplenish(IxEthAccPortId portId,					   IX_OSAL_MBUF *buffer){    IX_STATUS	qStatus = IX_SUCCESS;    UINT32      qBuffer;    /*     * Check buffer is valid.     */#ifndef NDEBUG    /* check parameter value */    if (buffer == 0)    {	return (IX_ETH_ACC_FAIL);    }    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())    {	return (IX_ETH_ACC_FAIL);    }    if (!IX_ETH_ACC_IS_PORT_VALID(portId))    {	return (IX_ETH_ACC_INVALID_PORT);    }    /* check initialisation is done */    if (IX_ETH_ACC_SUCCESS != ixEthAccSingleEthNpeCheck(portId))    {        IX_ETH_ACC_FATAL_LOG(" ixEthAccPortRxFreeReplenish: Unavailable Eth %d: Cannot replenish Rx Free Q.\n",(INT32)portId,0,0,0,0,0);        return IX_ETH_ACC_PORT_UNINITIALIZED ;    }    if (!IX_ETH_IS_PORT_INITIALIZED(portId))    {	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    /* check boundaries and constraints */    if (IX_OSAL_MBUF_MLEN(buffer) < IX_ETHNPE_ACC_RXFREE_BUFFER_LENGTH_MIN)    {	return (IX_ETH_ACC_FAIL);    }#endif    qBuffer = ixEthAccMbufRxQPrepare(buffer);    /*     * Add The Rx Buffer to the H/W Free buffer Q if possible     */    qStatus = ixEthAccQmgrLockRxWrite(portId, qBuffer);    if (qStatus == IX_SUCCESS)    {	RX_STATS_INC(portId,rxFreeRepOK);	/*	 * Buffer added to h/w Q.	 */	return (IX_SUCCESS);    }    else if (qStatus == IX_QMGR_Q_OVERFLOW)    {	RX_STATS_INC(portId,rxFreeRepDelayed);	/*	 * We were unable to write the buffer to the approprate H/W Q,	 * Save it in a s/w Q.	 */	IX_ETH_ACC_DATAPLANE_ADD_MBUF_TO_Q_TAIL(	    ixEthAccPortData[portId].ixEthAccRxData.freeBufferList,	    buffer);	qStatus = ixQMgrNotificationEnable(	    IX_ETH_ACC_PORT_TO_RX_FREE_Q_ID(portId),	    IX_ETH_ACC_PORT_TO_RX_FREE_Q_SOURCE(portId));        if (qStatus != IX_SUCCESS)	{	    if (qStatus == IX_QMGR_WARNING)	    {		/* notification is enabled for a queue		 * which is already empty (the condition is already met)		 * and there will be no more queue event to drain the sw queue		 * move an entry from the sw queue to the hw queue */		RX_STATS_INC(portId,rxFreeLateNotificationEnabled);		ixEthAccRxFreeFromSwQ(portId);	    }	    else	    {		RX_INC(portId,rxUnexpectedError);		IX_ETH_ACC_FATAL_LOG(		     "ixEthAccRxPortFreeReplenish:Error: %u\n",		     qStatus, 0, 0, 0, 0, 0);	    }        }    }    else    {	RX_INC(portId,rxUnexpectedError);	IX_ETH_ACC_FATAL_LOG(	    "ixEthAccRxPortFreeReplenish:Error: qStatus = %u\n",	    (UINT32)qStatus, 0, 0, 0, 0, 0);        return(IX_ETH_ACC_FAIL);    }    return (IX_ETH_ACC_SUCCESS);}IX_ETH_ACC_PUBLICIxEthAccStatus ixEthAccTxSchedulingDisciplineSetPriv(IxEthAccPortId portId,						 IxEthAccSchedulerDiscipline						 sched){    if (!IX_ETH_ACC_IS_PORT_VALID(portId))    {	return (IX_ETH_ACC_INVALID_PORT);    }    if (IX_ETH_ACC_SUCCESS != ixEthAccSingleEthNpeCheck(portId))    {        IX_ETH_ACC_WARNING_LOG("ixEthAccTxSchedulingDisciplineSet: Unavailable Eth %d: Cannot set Tx Scheduling Discipline.\n",(INT32)portId,0,0,0,0,0);        return IX_ETH_ACC_SUCCESS ;    }    if (!IX_ETH_IS_PORT_INITIALIZED(portId))    {	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    if (sched != FIFO_PRIORITY && sched != FIFO_NO_PRIORITY)    {	return (IX_ETH_ACC_INVALID_ARG);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品成人少妇| 国产传媒久久文化传媒| 激情综合色丁香一区二区| 成人免费看片app下载| 欧美狂野另类xxxxoooo| 欧美韩日一区二区三区四区| 天堂蜜桃91精品| 91蝌蚪国产九色| 久久众筹精品私拍模特| 午夜久久久影院| 在线一区二区三区做爰视频网站| 亚洲精品一区二区三区在线观看| 亚洲一区二区欧美日韩 | 九色|91porny| 日本韩国一区二区三区| 国产精品麻豆欧美日韩ww| 麻豆精品在线播放| 欧美日本一道本| 亚洲精品自拍动漫在线| 91网站黄www| 国产精品久久久久永久免费观看| 久久99精品国产麻豆婷婷 | 在线观看一区不卡| 国产精品乱人伦| 国产福利视频一区二区三区| 精品sm捆绑视频| 美女一区二区视频| 欧美一卡在线观看| 日本麻豆一区二区三区视频| 欧美日韩激情一区二区| 亚洲成人中文在线| 制服丝袜激情欧洲亚洲| 亚洲成人精品在线观看| 欧美美女喷水视频| 天堂蜜桃91精品| 日韩欧美美女一区二区三区| 国产激情视频一区二区三区欧美| 精品不卡在线视频| 国产一区二区毛片| 亚洲国产精品二十页| 高清不卡在线观看av| 欧美国产日本视频| 91蝌蚪porny成人天涯| 亚洲成人av在线电影| 在线综合+亚洲+欧美中文字幕| 三级不卡在线观看| 欧美va在线播放| 国产精品2024| 亚洲男人天堂一区| 欧美亚日韩国产aⅴ精品中极品| 亚洲一二三级电影| 欧美不卡一区二区三区| 国产高清不卡二三区| 国产精品理伦片| 欧美狂野另类xxxxoooo| 国产中文字幕一区| 亚洲色图一区二区| 91精品国产黑色紧身裤美女| 精品一区二区三区日韩| 国产精品每日更新| 欧美日韩一区成人| 国产一区在线视频| 亚洲免费观看高清在线观看| 欧美日韩一级大片网址| 国产一区在线不卡| 一区二区三区欧美久久| 日韩女优制服丝袜电影| 成人午夜视频网站| 无码av免费一区二区三区试看| 亚洲精品在线网站| 色久优优欧美色久优优| 裸体一区二区三区| 亚洲女人小视频在线观看| 日韩欧美一卡二卡| 在线视频观看一区| 国产成人综合在线| 日韩 欧美一区二区三区| 欧美国产丝袜视频| 日韩欧美专区在线| 一本色道久久综合亚洲精品按摩| 激情综合五月天| 一区二区三区四区国产精品| 久久久亚洲午夜电影| 欧美日韩成人激情| 99久久夜色精品国产网站| 久久91精品久久久久久秒播| 一区二区三区在线播放| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩你懂的| 99国产精品久| 国产91精品露脸国语对白| 日韩va欧美va亚洲va久久| 亚洲欧美色图小说| 国产区在线观看成人精品| 欧美一区二区三区四区高清| 欧美中文字幕一二三区视频| 成人福利视频在线| 国产伦精一区二区三区| 久久99国产精品久久| 蜜桃视频在线一区| 亚洲aaa精品| 亚洲综合一区在线| 综合中文字幕亚洲| 国产精品视频在线看| 26uuu亚洲| 日韩精品一区二区三区视频在线观看| 欧美日韩在线一区二区| 日本韩国欧美一区二区三区| jiyouzz国产精品久久| 高清视频一区二区| 成人午夜av影视| 91色九色蝌蚪| 色婷婷精品大在线视频| 99精品视频在线免费观看| 99久久精品国产一区二区三区| 成人亚洲一区二区一| 国产+成+人+亚洲欧洲自线| 国产suv精品一区二区三区| 国产精品18久久久久久久久| 国产一区二区三区国产| 国产福利电影一区二区三区| 国产福利视频一区二区三区| 成人激情校园春色| 91影院在线观看| 91久久精品国产91性色tv| 欧美视频一区二| 欧美一级夜夜爽| 久久尤物电影视频在线观看| 国产欧美日韩视频一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 久久不见久久见中文字幕免费| 男男视频亚洲欧美| 久久精品999| 成人性生交大合| 91国偷自产一区二区三区观看| 欧美专区在线观看一区| 欧美一区二区女人| 久久久不卡网国产精品一区| 亚洲欧洲无码一区二区三区| 亚洲一区日韩精品中文字幕| 日韩 欧美一区二区三区| 国产成人av资源| 91国产成人在线| 欧美电影免费观看完整版| 国产欧美一区二区三区鸳鸯浴| 一色屋精品亚洲香蕉网站| 天堂影院一区二区| 成熟亚洲日本毛茸茸凸凹| 欧美色精品天天在线观看视频| 精品国产区一区| 依依成人精品视频| 久久精品国产久精国产爱| 99久久精品免费观看| 欧美一卡二卡在线| 成人免费视频在线观看| 日韩福利电影在线观看| 大白屁股一区二区视频| 91精品国产色综合久久| 国产精品久久久久久久久果冻传媒 | 中文字幕亚洲一区二区va在线| 亚洲va欧美va人人爽| 国产aⅴ综合色| 欧美精品免费视频| 中文成人av在线| 久久国产综合精品| 91国产免费观看| 欧美极品美女视频| 免费看日韩精品| 在线免费一区三区| 日本一区二区不卡视频| 麻豆成人在线观看| 欧美综合久久久| 国产精品久久久久aaaa| 久久99久久精品| 欧美日本在线一区| 亚洲一区二区三区四区五区黄 | 精品国产污网站| 午夜精品久久久久久| 99九九99九九九视频精品| 日韩精品一区二区三区swag | 26uuu精品一区二区在线观看| 一区2区3区在线看| www.亚洲在线| 中文字幕欧美日本乱码一线二线| 蜜桃视频一区二区| 91精品国产免费| 午夜精品久久久久久久| 欧美色图一区二区三区| 亚洲色图在线播放| 91色乱码一区二区三区| 中文字幕制服丝袜成人av| 国产91丝袜在线播放0| 久久久精品黄色| 国产精品亚洲一区二区三区妖精 | 国产v综合v亚洲欧| 久久色在线视频| 国产精品亚洲一区二区三区妖精| 精品欧美乱码久久久久久1区2区| 日韩在线一区二区| 91精品国产欧美日韩|