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

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

?? sndsend_cjw.c

?? 4510b的vxworks的BSP
?? C
?? 第 1 頁 / 共 5 頁
字號:

	    	*(UINT32 *)SNDS_IOPDATA = 0x3f ; 
			}
		else ;


		gpReceiveFrameDescStart->rxFrameData.o_bit = 1;	/* Ownership back to BDMA */
		gStatusLengthPrevious = *(UINT32 *)(&gpReceiveFrameDescStart->rxStatusLength);	/* For MAC bug fix */
		*(UINT32 *)(&gpReceiveFrameDescStart->rxStatusLength) = 0;	/* Rx status length field */

		gpReceiveFrameDescStart = gpReceiveFrameDescStart->nextRxFrameDesc;
		} while (gpReceiveFrameDescStart != pReceiveFrameDesc);

		/*printf("ISR End bdmastatus %08x, BDMARXCON %08x\n BDMARXPTR %08x", 
			*(UINT32 *)SNDS_BDMASTAT, *(UINT32 *)SNDS_BDMARXCON, *(UINT32 *)SNDS_BDMARXPTR) ;*/

	if (bdmaStat.stat_reg.bdmaRxNotOwner) {
		/* printf("\r bdma Rx Not Owner \r" ) ; */
		*(UINT32 *)SNDS_BDMASTAT = BRxNO ;
	}
	if(!(gpReceiveFrameDescStart->rxFrameData.o_bit)) ; 
		/*	printf("  ..*** NO  BRXCON %08x\n BPTR %08x\r", *(UINT32 *)SNDS_BDMARXCON, *(UINT32 *)SNDS_BDMARXPTR)  ; */ 

	else if(! (*(UINT32 *)SNDS_BDMARXCON & BRxEn) ){


		/* printf("  ..Before  BRXCON %08x\n BPTR %08x", *(UINT32 *)SNDS_BDMARXCON, *(UINT32 *)SNDS_BDMARXPTR) ; */

		*(UINT32 *) (&bdmaRxCon) = *(UINT32 *)SNDS_BDMARXCON;
		/*bdmaRxCon.rxCon_reg.recvFrameIntrEnb = 1;
		bdmaRxCon.rxCon_reg.nullListIntrEnb = 1;
    	bdmaRxCon.rxCon_reg.notOwnerIntrEnb = 1;*/
		bdmaRxCon.rxCon_reg.enable = 1 ;
		*(UINT32 *)SNDS_BDMARXCON = bdmaRxCon.rxCon_resetval;
		/* printf("\r ## After  BRXCON %08x\n BPTR %08x",  
			 *(UINT32 *)SNDS_BDMARXCON, *(UINT32 *)SNDS_BDMARXPTR) ; */
		/**(UINT32 *)(&macRxCon) = *(UINT32 *)SNDS_MACRXCON;
		macRxCon.macRxCon_reg.receiveEnable = 1;
		*(UINT32 *)SNDS_MACRXCON = macRxCon.macRxCon_resetval;*/
	}

	    *(UINT32 *)SNDS_IOPDATA = 0x00 ; 
		 printf("\r ## BRXCON %08x\n BPTR %08x",  
			 *(UINT32 *)SNDS_BDMARXCON, *(UINT32 *)SNDS_BDMARXPTR) ; 

    }

/*
static int GoodCnt = 0;
LOCAL void sndsEndHandleRcvInt
    (
    END_DEVICE *pDrvCtrl,	
	UINT32 stat	
    )
    {
	BDMASTAT bdmaStat;
	BDMARXCON bdmaRxCon;
	RECEIVE_FRAME_DESC *pReceiveFrameDesc;
	UINT16 *	pFrameData;
	UINT32 frameLength;

	bdmaStat.stat_resetval = stat;
	*(UINT32 *)(&pReceiveFrameDesc) = *(UINT32 *)(SNDS_BDMARXPTR);
    *(UINT32 *)(&bdmaRxCon)=*(UINT32 *) (SNDS_BDMARXCON);

	if ((*(UINT32 *) (&gpReceiveFrameDescStart->rxStatusLength)) == 0)
		return;

	*(UINT32 *)SNDS_IOPDATA = 0xff ; 

	*(UINT32 *)SNDS_BDMASTAT = RxGood ;	

    do
        {
		
	


		if (bdmaStat.stat_reg.bdmaRxNullList)
			{
			sndsEndStop(pDrvCtrl);	
			sndsEndReset(pDrvCtrl);
			sndsEndFdFree(pDrvCtrl);
			sndsEndFdInitialize(pDrvCtrl);	
			sndsEndMacInitialize(pDrvCtrl);	
			sndsEndStart(pDrvCtrl);	
			break;
			}
		
		 * Received a good frame
	
		frameLength = gpReceiveFrameDescStart->rxStatusLength.frameLength;

	    


	if ((*(UINT32 *) (&gpReceiveFrameDescStart->rxStatusLength)) & 0xbfff0000 )
			{
			pDrvCtrl->statistics.rxBad++;
	    	*(UINT32 *)SNDS_IOPDATA = 0xf3 ; 
			if (gpReceiveFrameDescStart->rxStatusLength.ovMax)
				pDrvCtrl->statistics.rxOvMaxSize++;
			if (gpReceiveFrameDescStart->rxStatusLength.ctlRcv)
				pDrvCtrl->statistics.rxCtlRecd++;
			if (gpReceiveFrameDescStart->rxStatusLength.rx10Stat)
				pDrvCtrl->statistics.rx10Stat++;
			if (gpReceiveFrameDescStart->rxStatusLength.alignErr)
				pDrvCtrl->statistics.rxAlignErr++;
			if (gpReceiveFrameDescStart->rxStatusLength.crcErr)
				pDrvCtrl->statistics.rxCRCErr++;
			if (gpReceiveFrameDescStart->rxStatusLength.overFlow)
				pDrvCtrl->statistics.rxOverflowErr++;
			if (gpReceiveFrameDescStart->rxStatusLength.longErr)
				pDrvCtrl->statistics.rxLongErr++;
			if (gpReceiveFrameDescStart->rxStatusLength.rxPar)
				pDrvCtrl->statistics.rxParErr++;
			if (gpReceiveFrameDescStart->rxStatusLength.rxHalted)
				pDrvCtrl->statistics.rxHalted++;
			}
		else if((gpReceiveFrameDescStart->rxStatusLength.good))
			{
			pDrvCtrl->statistics.rxGood++;
			pFrameData = (UINT16 *)(gpReceiveFrameDescStart->rxFrameData.frameDataPtr);
			sndsEndBugFix (pFrameData);
			sndsEndRecv (pDrvCtrl, (char *)pFrameData, frameLength);
			GoodCnt++ ;

	    	*(UINT32 *)SNDS_IOPDATA = 0x3f ; 
			printf("\n GoodCount %d, RxStatus %x \n", GoodCnt, *(UINT32 *)(&gpReceiveFrameDescStart->rxStatusLength) );
			printf("G");
			}
		else ;
		gpReceiveFrameDescStart->rxFrameData.o_bit = 1;	
		gStatusLengthPrevious = *(UINT32 *)(&gpReceiveFrameDescStart->rxStatusLength);	
		*(UINT32 *)(&gpReceiveFrameDescStart->rxStatusLength) = 0;	

		gpReceiveFrameDescStart = gpReceiveFrameDescStart->nextRxFrameDesc;
		} while (gpReceiveFrameDescStart != pReceiveFrameDesc);

#if 0

	    if(!((*(UINT32 *)SNDS_BDMARXCON) & BRxEn)){ 
			*(UINT32 *)SNDS_IOPDATA = 0xf0 ; 
        	printf("\n\n\n\n  BDMA Rx Stopped !!!!!! %x @@@@@@@@@@@@@@@\n\n\n\n\n", *(UINT32 *)SNDS_BDMARXCON);
		}
		
	    if(!((*(UINT32 *)SNDS_BDMASTAT) & BRxNO)) {
			*(UINT32 *)SNDS_IOPDATA = 0x00 ; 
	    	*(UINT32 *)SNDS_BDMASTAT = BRxNO; 
		}
	*(UINT32 *)SNDS_IOPDATA = 0x0f ; 
#endif
    }

*/






/*******************************************************************************
*
* sndsEndRecv - process the next incoming packet
*
* Handle one incoming packet.  The packet is checked for errors.
*
* RETURNS: N/A.
*/

LOCAL STATUS sndsEndRecv
    (
    END_DEVICE *pDrvCtrl,	/* device structure */
    char* pData,			/* packet to process */
	UINT32 len
    )
    {
    M_BLK_ID 	pMblk;
    char*       pNewCluster;
    CL_BLK_ID	pClBlk;

	
    /* Add one to our unicast data. */
	END_ERR_ADD (&pDrvCtrl->end, MIB2_IN_UCAST, +1);

    /*
     * We implicitly are loaning here, if copying is necessary this
     * step may be skipped, but the data must be copied before being
     * passed up to the protocols.
     */
    
    pNewCluster = netClusterGet (pDrvCtrl->end.pNetPool, pDrvCtrl->end.pNetPool->clTbl[0]);

    if (pNewCluster == NULL)
        {
		END_ERR_ADD (&pDrvCtrl->end, MIB2_IN_ERRS, +1);
		goto cleanRXD;
        }

    /* Grab a cluster block to marry to the cluster we received. */

    if ((pClBlk = netClBlkGet (pDrvCtrl->end.pNetPool, M_DONTWAIT)) == NULL)
        {
        netClFree (pDrvCtrl->end.pNetPool, pNewCluster);
		END_ERR_ADD (&pDrvCtrl->end, MIB2_IN_ERRS, +1);
		goto cleanRXD;
        }

    
    /*
     * OK we've got a spare, let's get an M_BLK_ID and marry it to the
     * one in the ring.
     */

    if ((pMblk = mBlkGet (pDrvCtrl->end.pNetPool, M_DONTWAIT, MT_DATA)) == NULL)
        {
        netClBlkFree (pDrvCtrl->end.pNetPool, pClBlk); 
        netClFree (pDrvCtrl->end.pNetPool, pNewCluster);
		END_ERR_ADD (&pDrvCtrl->end, MIB2_IN_ERRS, +1);
		goto cleanRXD;
        }

    END_ERR_ADD (&pDrvCtrl->end, MIB2_IN_UCAST, +1);
	
	(UINT32)pData &= ~NON_CACHE_REGION;

    /* Join the cluster to the MBlock */
    netClBlkJoin (pClBlk, pData, SNDS_CL_SIZE, NULL, 0, 0, 0);
	
	
	netMblkClJoin (pMblk, pClBlk);

	pMblk->mBlkHdr.mData += SNDS_DATA_OFFSET;
	if (gBugFixDone == TRUE)
		pMblk->mBlkHdr.mData += 4;

    pMblk->mBlkHdr.mLen = len;
    pMblk->mBlkHdr.mFlags |= M_PKTHDR;
    pMblk->mBlkPktHdr.len = len;

    /* Call the upper layer's receive routine. */
    END_RCV_RTN_CALL(&pDrvCtrl->end, pMblk);

	gpReceiveFrameDescStart->rxFrameData.frameDataPtr = (UINT32)pNewCluster;
cleanRXD:
	gpReceiveFrameDescStart->rxFrameData.frameDataPtr |= NON_CACHE_REGION;

    return (OK);
    }

/*******************************************************************************
*
* sndsEndSend - the driver send routine
*
* This routine takes a M_BLK_ID sends off the data in the M_BLK_ID.
* The buffer must already have the addressing information properly installed
* in it.  This is done by a higher layer.  The last arguments are a free
* routine to be called when the device is done with the buffer and a pointer
* to the argument to pass to the free routine.  
*
* RETURNS: OK or ERROR.
*/

LOCAL STATUS sndsEndSend
    (
    END_DEVICE *pDrvCtrl,	/* device ptr */
    M_BLK_ID pNBuff		/* data to send */
    )
    {
    int         len;
    int         oldLevel;
    BOOL        freeNow = TRUE;
	TRANSMIT_FRAME_DESC *pTxFd;
	BDMATXCON bdmaTxCon;
	MACTXCON macTxCon;

	*(UINT32 *)(&bdmaTxCon) = 0;
	*(UINT32 *)(&macTxCon) = 0;
    
	if (gpTransmitFrameDescStart->txFrameData.o_bit)	/* Ownership with BDMA? */
		return ERROR;
	pTxFd = gpTransmitFrameDescStart;
	len = pNBuff->mBlkPktHdr.len;
    /*
     * Obtain exclusive access to transmitter.  This is necessary because
     * we might have more than one stack transmitting at once.
     */
	END_TX_SEM_TAKE (&pDrvCtrl->end, WAIT_FOREVER);

    /* Set pointers in local structures to point to data. */
	netMblkToBufCopy(pNBuff, (void *)pTxFd->txFrameData.frameDataPtr, NULL) ;

	*(UINT32 *)(&pTxFd->txControl) = 0;	/* Reset control word */
	pTxFd->txControl.t_bit = 1;
	pTxFd->txControl.a_bit = 1;
	pTxFd->txControl.l_bit = 1;

	pTxFd->txStatusLength.frameLength = len;
	pTxFd->txFrameData.o_bit = 1;

    /* place a transmit request */

     oldLevel = intLock ();   /* now sndsEndInt won't get confused */

    /* initiate device transmit */
	bdmaTxCon.txCon_resetval = *(UINT32 *)SNDS_BDMATXCON;
	bdmaTxCon.txCon_reg.enable = 1;
	*(UINT32 *)SNDS_BDMATXCON = bdmaTxCon.txCon_resetval;

	macTxCon.macTxCon_resetval = *(UINT32 *)SNDS_MACTXCON;
	macTxCon.macTxCon_reg.transmitEnable = 1;
	*(UINT32 *)SNDS_MACTXCON = macTxCon.macTxCon_resetval;

    intUnlock (oldLevel);   /* now sndsEndInt won't get confused */
    
    /* Advance our management index */
	gpTransmitFrameDescStart = gpTransmitFrameDescStart->nextTxFrameDesc;

	END_TX_SEM_GIVE (&pDrvCtrl->end);
    
    /* Bump the statistic counter. */

    END_ERR_ADD (&pDrvCtrl->end, MIB2_OUT_UCAST, +1);

    /*
     * Cleanup.  The driver must either free the packet now or
     * set up a structure so it can be freed later after a transmit
     * interrupt occurs.
     */

    if (freeNow)
        netMblkClChainFree (pNBuff);

    return (OK);
    }

/*******************************************************************************
*
* sndsEndIoctl - the driver I/O control routine
*
* Process an ioctl request.
*
* RETURNS: A command specific response, usually OK or ERROR.
*/

LOCAL int sndsEndIoctl
    (
    END_DEVICE *pDrvCtrl,	/* device receiving command */
    int cmd,			/* ioctl command code */
    caddr_t data		/* command argument */
    )
    {
    int error = 0;
    long value;

    switch (cmd)
        {
        case EIOCSADDR:
	    if (data == NULL)
		return (EINVAL);
            bcopy ((char *)data, (char *)END_HADDR(&pDrvCtrl->end),
		   END_HADDR_LEN(&pDrvCtrl->end));
            break;

        case EIOCGADDR:
	    if (data == NULL)
		return (EINVAL);
            bcopy ((char *)END_HADDR(&pDrvCtrl->end), (char *)data,
		    END_HADDR_LEN(&pDrvCtrl->end));
            break;

        case EIOCSFLAGS:
	    value = (long)data;
	    if (value < 0)
		{
		value = ~value;
		END_FLAGS_CLR (&pDrvCtrl->end, value);
		}
	    else
		{
		END_FLAGS_SET (&pDrvCtrl->end, value);
		}
	    sndsEndConfig (pDrvCtrl);
            break;

        case EIOCGFLAGS:
	    *(int *)data = END_FLAGS_GET(&pDrvCtrl->end);
            break;

	case EIOCPOLLSTART:
	    sndsEndPollStart (pDrvCtrl);
	    break;

	case EIOCPOLLSTOP:
	    sndsEndPollStop (pDrvCtrl);
	    break;

    case EIOCGMIB2:
         if (data == NULL)
            return (EINVAL);
            bcopy((char *)&pDrvCtrl->end.mib2Tbl, (char *)data,
            sizeof(pDrvCtrl->end.mib2Tbl));
            break;
    
    case EIOCGFBUF:
         if (data == NULL)
             return (EINVAL);
            *(int *)data = 0;	/**END_MIN_FBUF;**/
            break;

    default:
            error = EINVAL;
        }

    return (error);
    }

/******************************************************************************
*
* sndsEndConfig - reconfigure the interface under us.
*
* Reconfigure the interface setting promiscuous mode
*
* RETURNS: N/A.
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一个色资源| 日韩欧美高清在线| 一区二区免费在线播放| 日本韩国精品在线| 丝袜美腿亚洲一区二区图片| 日韩欧美另类在线| 国产精品99久久久久久有的能看| 久久久国际精品| 亚洲综合视频网| 欧美放荡的少妇| 另类欧美日韩国产在线| 久久久精品日韩欧美| 播五月开心婷婷综合| 一区二区高清在线| 91精品国产色综合久久不卡电影| 久久99精品久久久久久久久久久久| 国产福利精品一区| 欧美日韩国产色站一区二区三区| 日本午夜精品一区二区三区电影| 久久综合中文字幕| www.在线成人| 性做久久久久久免费观看欧美| 欧美成人乱码一区二区三区| 成人短视频下载| 五月天激情综合网| 久久精品欧美一区二区三区不卡| www.欧美日韩| 日韩电影在线观看电影| 欧美激情综合五月色丁香| 色婷婷亚洲一区二区三区| 欧美三级蜜桃2在线观看| 欧美激情综合网| 久久国产综合精品| 自拍偷拍欧美激情| 91精品国产黑色紧身裤美女| 国产成人夜色高潮福利影视| 玉米视频成人免费看| 日韩欧美激情在线| 99久久精品国产网站| 天天综合日日夜夜精品| 国产成人一级电影| 中文字幕在线观看不卡| 777亚洲妇女| 成人伦理片在线| 日本最新不卡在线| 国产精品久久久久久久久免费相片 | 成人美女视频在线观看| 亚洲一区电影777| 久久精品夜色噜噜亚洲aⅴ| 日本道精品一区二区三区| 精品无人码麻豆乱码1区2区| 亚洲精品乱码久久久久久黑人| 欧美sm极限捆绑bd| 乱一区二区av| 亚洲精品老司机| 久久久欧美精品sm网站| 欧美日韩在线播放一区| 成人性视频免费网站| 美脚の诱脚舐め脚责91| 亚洲精品高清在线观看| 久久精品人人爽人人爽| 欧美一区二区三区视频| 国产激情视频一区二区在线观看| 亚洲女性喷水在线观看一区| 26uuu精品一区二区| 欧美日韩高清一区二区| aaa国产一区| 国产一区二区三区四区五区美女| 亚洲国产aⅴ天堂久久| 国产精品久久久久久一区二区三区 | 国产午夜精品美女毛片视频| 欧美日韩国产乱码电影| 99精品偷自拍| 国产成人小视频| 蜜臂av日日欢夜夜爽一区| 日韩一卡二卡三卡国产欧美| 91久久精品网| www.欧美日韩国产在线| 国产麻豆成人传媒免费观看| 男人的天堂亚洲一区| 亚洲一区av在线| 亚洲欧美另类图片小说| 欧美韩日一区二区三区| 国产成人av电影在线播放| 中文字幕一区二| 久久九九全国免费| 精品日产卡一卡二卡麻豆| 91精品国产综合久久久久久| 欧美视频一二三区| 色综合久久天天| eeuss鲁片一区二区三区在线观看| 国产一区二区三区不卡在线观看| 免费观看在线综合色| 日日夜夜精品视频免费| 亚洲国产日韩一区二区| 一区二区三区欧美在线观看| 17c精品麻豆一区二区免费| 国产一区二区三区免费播放 | 亚洲免费观看高清完整| 制服丝袜亚洲网站| 欧美日韩免费观看一区二区三区 | 欧美精品一卡两卡| 欧美无砖砖区免费| 欧美网站大全在线观看| 欧美影视一区在线| 欧美性大战久久久久久久| 色婷婷综合五月| 亚洲人成网站在线| 久久伊人中文字幕| 久久久久99精品一区| 国产午夜久久久久| 欧美国产日本韩| 国产三区在线成人av| 欧美激情在线一区二区| 国产精品丝袜91| 国产精品久久二区二区| 亚洲人成7777| 亚洲资源中文字幕| 午夜视频一区在线观看| 日韩黄色一级片| 日韩高清不卡一区| 精品中文字幕一区二区| 国产毛片精品一区| 成人激情视频网站| 91亚洲资源网| 在线免费一区三区| 国产精品综合久久| 不卡高清视频专区| 色婷婷亚洲精品| 7777精品伊人久久久大香线蕉| 欧美一区二区三区的| www精品美女久久久tv| 国产丝袜欧美中文另类| gogo大胆日本视频一区| 日本视频中文字幕一区二区三区| 日韩欧美电影在线| 欧美日韩三级一区| 欧美一区二区黄色| 国产亚洲欧美日韩俺去了| 国产精品三级视频| 一二三区精品福利视频| 日韩精品视频网站| 国产黄色精品视频| 91麻豆精品视频| 欧美精品在欧美一区二区少妇| 精品国产青草久久久久福利| 亚洲国产高清aⅴ视频| 亚洲六月丁香色婷婷综合久久 | 丁香激情综合五月| 一本到三区不卡视频| 欧美一区二区三区爱爱| 久久久噜噜噜久噜久久综合| 91麻豆精品国产91久久久久久| 亚洲精品在线观| 亚洲免费在线看| 欧美a一区二区| 成人综合在线网站| 欧美精品自拍偷拍动漫精品| 精品国产一区a| 亚洲人成网站影音先锋播放| 热久久免费视频| 成人av在线电影| 手机精品视频在线观看| 亚洲国产精品一区二区久久恐怖片 | 精品一区二区在线观看| 丁香婷婷综合网| 欧美日韩国产小视频| 国产调教视频一区| 午夜精品成人在线视频| 国产馆精品极品| 精品污污网站免费看| 精品无人区卡一卡二卡三乱码免费卡 | 日韩亚洲欧美在线| 国产精品国产三级国产a| 精品精品欲导航| 亚洲免费在线播放| 男女男精品视频| 91丨九色porny丨蝌蚪| 日韩欧美一区二区免费| 日韩毛片精品高清免费| 久久不见久久见免费视频7| 91麻豆精品一区二区三区| 精品国产青草久久久久福利| 亚洲国产毛片aaaaa无费看| 亚洲三级在线播放| 亚洲欧美日韩人成在线播放| 久久国产福利国产秒拍| 欧美怡红院视频| 国产女同性恋一区二区| 石原莉奈在线亚洲三区| eeuss鲁片一区二区三区| 精品欧美久久久| 亚洲第一成人在线| www.激情成人| 久久久精品国产免费观看同学| 日日摸夜夜添夜夜添亚洲女人| 成人18视频日本| 久久综合九色综合欧美98| 婷婷成人综合网| 91同城在线观看|