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

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

?? motfecend.c

?? motorola mpc系列 mpc852cpu bsp
?? C
?? 第 1 頁 / 共 5 頁
字號:

INTERNAL
This driver contains conditional compilation switch MOT_FEC_END_DEBUG.
If defined, adds debug output routines.  Output is further
selectable at run-time via the motFecEndDbg global variable.
*/

#include "vxWorks.h"
#include "wdLib.h"
#include "iv.h"
#include "vme.h"
#include "net/mbuf.h"
#include "net/unixLib.h"
#include "net/protosw.h"
#include "sys/socket.h"
#include "sys/ioctl.h"
#include "errno.h"
#include "memLib.h"
#include "intLib.h"
#include "net/route.h"
#include "iosLib.h"
#include "errnoLib.h"
#include "vxLib.h"

#include "cacheLib.h"
#include "logLib.h"
#include "netLib.h"
#include "stdio.h"
#include "stdlib.h"
#include "sysLib.h"
#include "taskLib.h"

#include "net/systm.h"
#include "sys/times.h"
#include "net/if_subr.h"

#undef ETHER_MAP_IP_MULTICAST
#include "etherMultiLib.h"
#include "end.h"
#include "semLib.h"

#define   END_MACROS
#include "endLib.h"
#include "lstLib.h"
#include "netinet/in_pcb.h"

#include "drv/intrCtl/ppc860Intr.h"
/*#include "drv/end/motFecEnd.h"*/
#include "motfec.h"  /*modify for reseverd system headfile by hy*/

/* defines */

/* initial divisor and final XOR value for reflected CRC */

#define INIT_REFLECTED  0xFFFFFFFF
#define XOROT           INIT_REFLECTED

/* Driver debug control */

#define MOT_FEC_DBG 

/* Driver debug control */

#ifdef MOT_FEC_DBG
#define MOT_FEC_DBG_OFF			0x0000
#define MOT_FEC_DBG_RX			0x0001
#define MOT_FEC_DBG_TX			0x0002
#define MOT_FEC_DBG_POLL		0x0004
#define MOT_FEC_DBG_MII			0x0008
#define MOT_FEC_DBG_LOAD		0x0010
#define MOT_FEC_DBG_IOCTL		0x0020
#define MOT_FEC_DBG_INT			0x0040
#define MOT_FEC_DBG_START    		0x0080
#define MOT_FEC_DBG_ANY    		0xffff

UINT32	motFecEndDbg = 0x0;
UINT32	motFecBabRxErr = 0x0;
UINT32	motFecBabTxErr = 0x0;
UINT32	motFecHbFailErr = 0x0;
UINT32	motFecTxLcErr = 0x0;
UINT32	motFecTxUrErr = 0x0;
UINT32	motFecTxCslErr = 0x0;
UINT32	motFecTxRlErr = 0x0;
UINT32	motFecRxLgErr = 0x0;
UINT32	motFecRxNoErr = 0x0;
UINT32	motFecRxCrcErr = 0x0;
UINT32	motFecRxOvErr = 0x0;
UINT32	motFecRxTrErr = 0x0;
UINT32  motFecRxLsErr = 0x0;
UINT32  motFecRxMemErr = 0x0;

DRV_CTRL *  pDrvCtrlDbg = NULL;

#define MOT_FEC_BAB_RX_ADD						\
    motFecBabRxErr++;

#define MOT_FEC_BAB_TX_ADD						\
    motFecBabTxErr++;

#define MOT_FEC_HB_FAIL_ADD						\
    motFecHbFailErr++;

#define MOT_FEC_TX_LC_ADD						\
    motFecTxLcErr++;

#define MOT_FEC_TX_UR_ADD						\
    motFecTxUrErr++;

#define MOT_FEC_TX_CSL_ADD						\
    motFecTxCslErr++;

#define MOT_FEC_TX_RL_ADD						\
    motFecTxRlErr++;

#define MOT_FEC_RX_LG_ADD						\
    motFecRxLgErr++;

#define MOT_FEC_RX_NO_ADD						\
    motFecRxNoErr++;

#define MOT_FEC_RX_CRC_ADD						\
    motFecRxCrcErr++;

#define MOT_FEC_RX_OV_ADD						\
    motFecRxOvErr++;

#define MOT_FEC_RX_TR_ADD						\
    motFecRxTrErr++;

#define MOT_FEC_RX_MEM_ADD						\
    motFecRxMemErr++;

#define MOT_FEC_RX_LS_ADD						\
    motFecRxLsErr++;

#define MOT_FEC_LOG(FLG, X0, X1, X2, X3, X4, X5, X6)                    \
    {                                                                   \
    if (motFecEndDbg & FLG)                                             \
       logMsg (X0, X1, X2, X3, X4, X5, X6);                            \
        }


#else /* MOT_FEC_DBG */

#define MOT_FEC_BAB_RX_ADD
#define MOT_FEC_BAB_TX_ADD
#define MOT_FEC_HB_FAIL_ADD
#define MOT_FEC_TX_LC_ADD
#define MOT_FEC_TX_UR_ADD
#define MOT_FEC_TX_CSL_ADD
#define MOT_FEC_TX_RL_ADD
#define MOT_FEC_RX_MEM_ADD
#define MOT_FEC_RX_LS_ADD
#define MOT_FEC_LOG(FLG, X0, X1, X2, X3, X4, X5, X6)

#endif /* MOT_FEC_DBG */

/* general macros for reading/writing from/to specified locations */

/* Cache and virtual/physical memory related macros */

#define MOT_FEC_PHYS_TO_VIRT(physAddr)					    \
	CACHE_DRV_PHYS_TO_VIRT (&pDrvCtrl->bdCacheFuncs, (char *)(physAddr))

#define MOT_FEC_VIRT_TO_PHYS(virtAddr)					    \
	CACHE_DRV_VIRT_TO_PHYS (&pDrvCtrl->bdCacheFuncs, (char *)(virtAddr))

#define MOT_FEC_BD_CACHE_INVAL(address, len)			    	    \
        CACHE_DRV_INVALIDATE (&pDrvCtrl->bdCacheFuncs, (address), (len))

#define MOT_FEC_CACHE_INVAL(address, len)                                   \
	CACHE_DRV_INVALIDATE (&pDrvCtrl->bufCacheFuncs, (address), (len))

#define MOT_FEC_CACHE_FLUSH(address, len)                                   \
	CACHE_DRV_FLUSH (&pDrvCtrl->bufCacheFuncs, (address), (len))

#define EIEIO_SYNC  __asm__("        eieio;  sync")

#if  (CPU_FAMILY==PPC)
#undef CACHE_PIPE_FLUSH
#define CACHE_PIPE_FLUSH() EIEIO_SYNC
#endif

/* driver flags */

#define MOT_FEC_OWN_MEM		0x01	/* internally provided memory */
#define MOT_FEC_INV_TBD_NUM	0x02	/* invalid tbdNum provided */
#define MOT_FEC_INV_RBD_NUM	0x04	/* invalid rbdNum provided */
#define MOT_FEC_POLLING		0x08	/* polling mode */
#define MOT_FEC_PROM		0x20    /* promiscuous mode */
#define MOT_FEC_MCAST		0x40    /* multicast addressing mode */
#define MOT_FEC_FD		0x80    /* full duplex mode */

/* shortcuts */

#define MOT_FEC_FLAG_CLEAR(clearBits)					\
    (pDrvCtrl->flags &= ~(clearBits))

#define MOT_FEC_FLAG_SET(setBits)					\
    (pDrvCtrl->flags |= (setBits))

#define MOT_FEC_FLAG_GET()						\
    (pDrvCtrl->flags)

#define MOT_FEC_FLAG_ISSET(setBits)					\
    (pDrvCtrl->flags & (setBits))

#define MOT_FEC_PHY_FLAGS_SET(setBits)					\
    (pDrvCtrl->phyInfo->phyFlags |= (setBits))

#define MOT_FEC_PHY_FLAGS_ISSET(setBits)				\
    (pDrvCtrl->phyInfo->phyFlags & (setBits))

#define MOT_FEC_PHY_FLAGS_GET(setBits)					\
    (pDrvCtrl->phyInfo->phyFlags)

#define MOT_FEC_PHY_FLAGS_CLEAR(clearBits)				\
    (pDrvCtrl->phyInfo->phyFlags &= ~(clearBits))

#define MOT_FEC_USR_FLAG_ISSET(setBits)					\
    (pDrvCtrl->userFlags & (setBits))

#define END_FLAGS_ISSET(setBits)					\
    ((&pDrvCtrl->endObj)->flags & (setBits))

#define MOT_FEC_ADDR_GET(pEnd)                                          \
    ((pEnd)->mib2Tbl.ifPhysAddress.phyAddress)

#define MOT_FEC_ADDR_LEN_GET(pEnd)                                      \
    ((pEnd)->mib2Tbl.ifPhysAddress.addrLength)

/* some BDs definitions */

/* 
 * the total is 0x600 and it accounts for the required alignment
 * of receive data buffers, and the cluster overhead.
 */

#define MOT_FEC_MAX_CL_LEN      ((MOT_FEC_MAX_PCK_SZ			\
				 + (MOT_FEC_BD_ALIGN - 1)		\
				 + (CL_OVERHEAD - 1))			\
				 & (~ (CL_OVERHEAD - 1)))

#define MOT_FEC_MAX_RX_BUF	((MOT_FEC_MAX_PCK_SZ + MOT_FEC_BD_ALIGN - 1) \
				& (~(MOT_FEC_BD_ALIGN - 1)))

#define MOT_FEC_BUF_V_LEN	(MOT_FEC_MAX_RX_BUF + 16)

#define MOT_FEC_RX_BUF_SZ       (MOT_FEC_MAX_CL_LEN)
#define MOT_FEC_TX_BUF_SZ       (MOT_FEC_MAX_CL_LEN)

#define MOT_FEC_MEM_SZ(pDrvCtrl)					\
    ((pDrvCtrl)->bufSize)

#define MOT_FEC_LOAN_SZ							\
    (MOT_FEC_RX_BUF_SZ * MOT_FEC_BD_LOAN_NUM)

#define MOT_FEC_RX_MEM(pDrvCtrl)					\
    (MOT_FEC_RX_BUF_SZ * ((pDrvCtrl)->rbdNum + MOT_FEC_BD_LOAN_NUM))

#define MOT_FEC_TX_MEM(pDrvCtrl)					\
    (MOT_FEC_TX_BUF_SZ * (MOT_FEC_TBD_POLL_NUM + MOT_FEC_TX_CL_NUM))

#define MOT_FEC_TBD_MEM(pDrvCtrl)					\
    (MOT_FEC_TBD_SZ * (pDrvCtrl)->tbdNum)

#define MOT_FEC_RBD_MEM(pDrvCtrl)					\
    (MOT_FEC_RBD_SZ * (pDrvCtrl)->rbdNum)

#define MOT_FEC_BD_MEM(pDrvCtrl)					\
    (MOT_FEC_TBD_MEM (pDrvCtrl) + MOT_FEC_RBD_MEM (pDrvCtrl))

/* Control/Status Registers (CSR) definitions */

#define MOT_FEC_CSR_WR(csrOff, csrVal)					\
    {									\
    UINT32 temp = 0;							\
									\
    temp = (UINT32) MOT_FEC_VIRT_TO_PHYS ((pDrvCtrl->motCpmAddr) 	\
					  + (csrOff));			\
									\
    MOT_FEC_LONG_WR ((UINT32 *) (temp), (csrVal));			\
    }									

#define MOT_FEC_CSR_RD(csrOff, csrVal)					\
    {									\
    UINT32 temp = 0;							\
									\
    temp = (UINT32) MOT_FEC_VIRT_TO_PHYS ((pDrvCtrl->motCpmAddr) 	\
					  + (csrOff));			\
									\
    MOT_FEC_LONG_RD ((UINT32 *) (temp), (csrVal));			\
    }									

/* macros to read/write tx/rx buffer descriptors */

#define MOT_FEC_BD_WORD_WR(bdAddr, bdOff, bdVal)			\
    {									\
    UINT32 temp = 0;							\
									\
    temp = (UINT32) MOT_FEC_VIRT_TO_PHYS ((bdAddr) + (bdOff));		\
									\
    MOT_FEC_WORD_WR ((UINT16 *) (temp), (bdVal));			\
    }									

/* here we're writing the data pointer, so it's a physical address */

#define MOT_FEC_BD_LONG_WR(bdAddr, bdOff, bdVal)			\
    {									\
    UINT32 temp1 = 0;							\
    UINT32 temp2 = 0;							\
									\
    temp1 = (UINT32) MOT_FEC_VIRT_TO_PHYS ((bdAddr) + (bdOff));		\
    temp2 = (UINT32) MOT_FEC_VIRT_TO_PHYS (bdVal);			\
									\
    MOT_FEC_LONG_WR ((UINT32 *) (temp1), (temp2));			\
    }									

#define MOT_FEC_BD_WORD_RD(bdAddr, bdOff, bdVal)			\
    {									\
    UINT32 temp = 0;							\
									\
    temp = (UINT32) MOT_FEC_VIRT_TO_PHYS ((bdAddr) + (bdOff));		\
									\
    MOT_FEC_WORD_RD ((UINT16 *) (temp), (bdVal));					\
    }									

#define MOT_FEC_BD_LONG_RD(bdAddr, bdOff, bdVal)			\
    {									\
    UINT32 temp1 = 0;							\
    UINT32 temp2 = 0;							\
									\
    temp1 = (UINT32) MOT_FEC_VIRT_TO_PHYS ((bdAddr) + (bdOff));		\
									\
    MOT_FEC_LONG_RD ((UINT32 *) (temp1), (temp2));			\
									\
    bdVal = (char *) MOT_FEC_PHYS_TO_VIRT (temp2);			\
    }									

#define MOT_FEC_NEXT_TBD(pDrvCtrl, pTbd)				\
    (pTbd) = (MOT_FEC_TBD_ID) ((pDrvCtrl)->tbdBase +   \
			       ((pDrvCtrl)->tbdIndex * MOT_FEC_TBD_SZ))

#define MOT_FEC_USED_TBD(pDrvCtrl, pTbd)				   \
    (pTbd) = (MOT_FEC_TBD_ID) ((pDrvCtrl)->tbdBase + 	   \
			       ((pDrvCtrl)->usedTbdIndex * MOT_FEC_TBD_SZ))

#define MOT_FEC_NEXT_RBD(pDrvCtrl, pRbd)				   \
    (pRbd) = (MOT_FEC_RBD_ID) ((pDrvCtrl)->rbdBase + 	   \
			       (((pDrvCtrl)->rbdIndex) * MOT_FEC_RBD_SZ))

#define MOT_FEC_ETH_SET                                                 \
    MOT_FEC_CSR_WR (MOT_FEC_CTRL_OFF, pinMux);

#define MOT_FEC_ETH_ENABLE						\
    MOT_FEC_CSR_WR (MOT_FEC_CTRL_OFF, (MOT_FEC_ETH_EN | pinMux));

#define MOT_FEC_ETH_DISABLE						\
    MOT_FEC_CSR_WR (MOT_FEC_CTRL_OFF, (MOT_FEC_ETH_DIS | pinMux));

#define MOT_FEC_RX_ACTIVATE						\
    MOT_FEC_CSR_WR (MOT_FEC_RX_ACT_OFF, MOT_FEC_RX_ACT);

#define MOT_FEC_TX_ACTIVATE						\
    MOT_FEC_CSR_WR (MOT_FEC_TX_ACT_OFF, MOT_FEC_TX_ACT);

#define MOT_FEC_INT_DISABLE						\
    MOT_FEC_CSR_WR (MOT_FEC_MASK_OFF, 0);

#define MOT_FEC_INT_ENABLE						\
    MOT_FEC_CSR_WR (MOT_FEC_MASK_OFF, (pDrvCtrl->intMask));

#define MOT_FEC_VECTOR(pDrvCtrl)					\
    ((pDrvCtrl)->ivec)

/* more shortcuts */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久99精品免视看婷婷 | 欧美一区二区三区免费观看视频| 国产精品中文字幕欧美| 美女脱光内衣内裤视频久久网站 | 亚洲影院免费观看| 国产精品乱码久久久久久| 日本一区二区三区在线不卡 | 国产激情91久久精品导航| 韩国女主播一区二区三区| 久久91精品久久久久久秒播| 蜜臀av一级做a爰片久久| 免费黄网站欧美| 国产一区 二区| 成人黄色软件下载| 91麻豆免费在线观看| 欧美性猛交xxxx黑人交| 欧美日韩国产综合草草| 91精品国产综合久久福利软件| 欧美一区二区三区四区在线观看 | 91高清视频在线| 欧美这里有精品| 这里只有精品免费| 精品久久久久久久久久久久久久久 | 99riav久久精品riav| 91蝌蚪porny| 91精品国产91久久久久久一区二区 | 久久亚区不卡日本| 国产精品色噜噜| 一区二区三区自拍| 免费成人在线播放| 成人午夜视频在线| 欧美中文字幕一区| 欧美xfplay| 中文字幕永久在线不卡| 日韩电影一区二区三区| 国产成人av一区二区| 欧美伊人久久久久久久久影院 | 中文字幕不卡在线观看| 亚洲国产另类av| 国产电影一区二区三区| 欧美亚洲尤物久久| 国产亚洲欧美激情| 亚洲v日本v欧美v久久精品| 国内精品不卡在线| 欧美午夜影院一区| 亚洲国产成人私人影院tom| 亚洲成人你懂的| 不卡视频一二三四| 日韩欧美另类在线| 夜夜精品视频一区二区| 国产一区三区三区| 欧美日韩一区中文字幕| 久久精品视频免费观看| 中文字幕在线一区免费| 日本在线不卡一区| 日韩电影在线免费观看| 成人午夜免费av| 欧美日韩国产一二三| 国产亚洲污的网站| 日韩和欧美一区二区三区| 国产麻豆91精品| 91在线国产观看| 26uuu色噜噜精品一区| 一区二区三区.www| 久久精品理论片| 91精品国产乱码久久蜜臀| 中文字幕一区在线| 免费人成在线不卡| 91福利国产成人精品照片| 欧美精品一区二区三区视频| 亚洲资源中文字幕| 岛国av在线一区| 精品少妇一区二区| 亚洲地区一二三色| 成人18精品视频| 欧美va日韩va| 久久黄色级2电影| 777午夜精品免费视频| 亚洲免费av高清| 国产aⅴ综合色| 精品捆绑美女sm三区| 日韩精品91亚洲二区在线观看| 久久99精品久久久久久| 精品国产乱码久久久久久夜甘婷婷| 亚洲国产你懂的| 91豆麻精品91久久久久久| 亚洲国产精品成人综合| 国产剧情在线观看一区二区| 日韩美女一区二区三区四区| 免费成人av资源网| 欧美一区二区日韩| 亚洲成人午夜影院| 欧美变态凌虐bdsm| 精品一区二区在线观看| 日韩一区二区三区在线| 日韩成人一级片| 欧美一区二区视频在线观看2020 | av午夜一区麻豆| 中文字幕精品在线不卡| 首页欧美精品中文字幕| 久久日韩粉嫩一区二区三区| 激情综合网激情| 久久亚区不卡日本| 成人视屏免费看| 国产精品福利av| 色妞www精品视频| 午夜成人免费电影| 日韩欧美二区三区| av一区二区三区在线| 亚洲天堂久久久久久久| 欧美影院一区二区三区| 日精品一区二区| 精品久久久久久久久久久久包黑料| 国产原创一区二区三区| 国产精品欧美一级免费| 一本大道久久a久久综合婷婷| 亚洲人成网站精品片在线观看| 成人av资源在线观看| 一区二区三区免费观看| 欧美猛男gaygay网站| 久久国产尿小便嘘嘘尿| 日本一区二区三区国色天香 | 欧美一区二区三区系列电影| 成人毛片视频在线观看| 亚洲午夜三级在线| 日韩免费高清电影| 91在线看国产| 久久99国产精品久久| 亚洲日本一区二区| 日韩视频在线观看一区二区| 日本高清视频一区二区| 高清beeg欧美| 五月天欧美精品| 国产精品美女视频| 欧美伦理电影网| 成人动漫精品一区二区| 香蕉成人伊视频在线观看| 国产欧美日本一区二区三区| 99精品视频在线免费观看| 国产剧情av麻豆香蕉精品| 亚洲一区二区三区视频在线| 久久久久久久久99精品| 欧美日韩三级在线| 成人av小说网| 美女网站色91| 五月天一区二区| 五月激情丁香一区二区三区| 国产精品天美传媒沈樵| 欧美电视剧在线观看完整版| 欧美中文字幕一区二区三区| 成人黄色电影在线| 国产精品影音先锋| 亚洲国产日韩精品| 国产精品天干天干在观线| 欧美成人伊人久久综合网| 欧美性xxxxxxxx| 在线亚洲精品福利网址导航| 成人激情黄色小说| 国产乱码精品一区二区三区五月婷| 亚洲欧美日韩国产成人精品影院 | 国产99久久精品| 蓝色福利精品导航| 日韩精品乱码免费| 天天综合色天天| 亚洲免费观看视频| 中文字幕在线播放不卡一区| 欧美一区二区精美| 欧美一级日韩不卡播放免费| 欧美性一区二区| 欧美色综合网站| 欧美日韩国产综合一区二区| 欧美性受极品xxxx喷水| 日韩欧美国产综合在线一区二区三区| 欧美一区二区三区播放老司机| 欧美老人xxxx18| 91精品一区二区三区在线观看| 欧美亚洲尤物久久| 欧美精品一级二级| 欧美综合在线视频| 欧美tickling挠脚心丨vk| 精品乱人伦一区二区三区| 久久亚洲综合av| 久久久亚洲精品石原莉奈| 亚洲欧美另类久久久精品2019| 亚洲视频在线观看三级| 尤物视频一区二区| 亚洲一区二区成人在线观看| 亚洲大型综合色站| 蜜桃视频在线观看一区二区| 久久国产免费看| 成人黄色免费短视频| 在线免费一区三区| 欧美男生操女生| 久久久午夜电影| 亚洲欧美综合在线精品| 综合中文字幕亚洲| 天天综合天天综合色| 国产一区二区影院| 欧美日韩精品三区| 欧美日韩一级大片网址|