⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m8260fccend.h

📁 Embedded Planet公司的ep8260单板计算机的BSP包(VxWorks)
💻 H
📖 第 1 页 / 共 2 页
字号:
    UINT32		numrecoveryeasy;

    UINT32		numRXFInts;
    UINT32		numRXFHandlerEntries;
    UINT32		numRXFHandlerExits;
    UINT32		numRXFHandlerErrQuits;
    UINT32		numRXFHandlerEmptyLoopBreaks;
    UINT32		numRXFHandlerFramesProcessed;
    UINT32		numRXFHandlerFramesRejected;
    UINT32		numRXFramesLostToBufferReuse;

    UINT32		numLSCHandlerEntries;
    UINT32		numLSCHandlerExits;

    UINT32		numStallsEntered;
    UINT32		numStallsCleared;

    UINT32		motFccTxErr;
    UINT32		motFccHbFailErr;
    UINT32		motFccTxLcErr;
    UINT32		motFccTxUrErr;
    UINT32		motFccTxCslErr;
    UINT32		motFccTxRlErr;

    UINT32		motFccRxBsyErr;
    UINT32		motFccRxLgErr;
    UINT32		motFccRxNoErr;
    UINT32		motFccRxCrcErr;
    UINT32		motFccRxOvErr;
    UINT32		motFccRxShErr;
    UINT32		motFccRxLcErr;
    UINT32		motFccRxMemErr;
}FCC_DRIVER_STATS;


/*---------------------------------------------------------------------*/
/*       F C C   E T H E R N E T   P A R A M E T E R S                 */
/*---------------------------------------------------------------------*/
typedef volatile unsigned long VULONG;
typedef volatile unsigned short VUSHORT;
typedef volatile unsigned char VUCHAR;

#pragma pack(1)

typedef struct {
    VULONG    stat_bus;       /* Internal use buffer. */
    VULONG    cam_ptr;        /* CAM address. */
    VULONG    c_mask;         /* CRC constant mask*/
    VULONG    c_pres;	    /* CRC preset */
    VULONG    crcec;          /* CRC error counter */
    VULONG    alec;           /* alignment error counter */
    VULONG    disfc;          /* discarded frame counter */
    VUSHORT   ret_lim;        /* Retry limit threshold. */
    VUSHORT   ret_cnt;        /* Retry limit counter. */
    VUSHORT   p_per;          /* persistence */
    VUSHORT   boff_cnt;       /* back-off counter */
    VULONG    gaddr_h;        /* group address filter, high */
    VULONG    gaddr_l;        /* group address filter, low */
    VUSHORT   tfcstat;        /* out of sequece Tx BD staus. */
    VUSHORT   tfclen;         /* out of sequece Tx BD length. */
    VULONG    tfcptr;         /* out of sequece Tx BD data pointer. */
    VUSHORT   maxflr;         /* maximum frame length reg */
    VUSHORT   paddr_h;        /* physical address (MSB) */
    VUSHORT   paddr_m;        /* physical address */
    VUSHORT   paddr_l;        /* physical address (LSB) */
    VUSHORT   ibd_cnt;        /* internal BD counter. */
    VUSHORT   ibd_start;      /* internal BD start pointer. */
    VUSHORT   ibd_end;        /* internal BD end pointer. */
    VUSHORT   tx_len;         /* tx frame length counter */
    VUCHAR    ibd_base[0x20]; /* internal micro code usage. */
    VULONG    iaddr_h;        /* individual address filter, high */
    VULONG    iaddr_l;        /* individual address filter, low */
    VUSHORT   minflr;         /* minimum frame length reg */
    VUSHORT   taddr_h;        /* temp address (MSB) */
    VUSHORT   taddr_m;        /* temp address */
    VUSHORT   taddr_l;        /* temp address (LSB) */
    VUSHORT   pad_ptr;        /* pad_ptr. */
    VUSHORT   cf_type;        /* flow control frame type coding. */
    VUSHORT   cf_range;       /* flow control frame range. */
    VUSHORT   max_b;          /* max buffer descriptor byte count. */
    VUSHORT   maxd1;          /* max DMA1 length register. */
    VUSHORT   maxd2;          /* max DMA2 length register. */
    VUSHORT   maxd;           /* Rx max DMA. */
    VUSHORT   dma_cnt;        /* Rx DMA counter. */

    /* counter: */
    VULONG    octc;           /* received octets counter. */
    VULONG    colc;           /* estimated number of collisions */
    VULONG    broc;           /* received good packets of broadcast address */
    VULONG    mulc;           /* received good packets of multicast address */
    VULONG    uspc;           /* received packets shorter then 64 octets. */
    VULONG    frgc;           /* as uspc + bad packets */
    VULONG    ospc;           /* received packets longer then 1518 octets. */
    VULONG    jbrc;           /* as ospc + bad packets  */
    VULONG    p64c;           /* received packets of 64 octets.. */
    VULONG    p65c;           /* received packets of 65-128 octets.. */
    VULONG    p128c;          /* received packets of 128-255 octets.. */
    VULONG    p256c;          /* received packets of 256-511 octets.. */
    VULONG    p512c;          /* received packets of 512-1023 octets.. */
    VULONG    p1024c;          /* received packets of 1024-1518 octets.. */
    VULONG    cam_buf;        /* cam respond internal buffer. */
    VUSHORT   rfthr;          /* received frames threshold */
    VUSHORT   rfcnt;          /* received frames count */
} FCC_ETH_PARAM_T;
#pragma pack()

/*---------------------------------------------------------------------*/
/*               F C C     P A R A M E T E R S                         */
/*---------------------------------------------------------------------*/
#pragma pack(1)
typedef struct {

    VUSHORT   riptr;      /* Rx internal temporary data pointer. */
    VUSHORT   tiptr;      /* Tx internal temporary data pointer. */
    VUSHORT   RESERVED0;  /* Reserved */
    VUSHORT   mrblr;      /* Rx buffer length */
    VULONG    rstate;     /* Rx internal state */
    VULONG    rbase;      /* RX BD base address */
    VUSHORT   rbdstat;    /* Rx BD status and control */
    VUSHORT   rbdlen;     /* Rx BD data length */
    VULONG    rdptr;      /* rx BD data pointer */
    VULONG    tstate;     /* Tx internal state */
    VULONG    tbase;      /* TX BD base address */
    VUSHORT   tbdstat;    /* Tx BD status and control */
    VUSHORT   tbdlen;     /* Tx BD data length */
    VULONG    tdptr;      /* Tx  data pointer */
    VULONG    rbptr;      /* rx BD pointer */
    VULONG    tbptr;      /* Tx BD pointer */
    VULONG    rcrc;       /* Temp receive CRC */
    VULONG    tcrc;       /* Temp transmit CRC */
  VULONG foo;

    /*-----------------------------------------------------------------*/
    /*                   Protocol Specific Parameters                  */
    /*-----------------------------------------------------------------*/
    union {

	/* Force this union to be 256 bytes - 0x34 bytes big.
		The 0x34 is the size of the protocol independent part
		of the structure.
	*/
	    UCHAR		pads[0xc4];
	    FCC_ETH_PARAM_T     e;

    } prot;      

} FCC_PARAM_T;
#pragma pack()


/*-----------------------------------------------------------------*/
/*                   FCC registers                                 */
/*-----------------------------------------------------------------*/
#pragma pack(1)
typedef struct {
    VULONG	fcc_gmr;		/* General Mode Register */
    VULONG	fcc_psmr;		/* Protocol Specific Mode Reg */
    VUSHORT	fcc_todr;		/* Transmit On Demand Reg */
    VUCHAR	reserved22[0x2];
    VUSHORT	fcc_dsr;		/* Data Sync Register */
    VUCHAR	reserved23[0x2];
    VUSHORT	fcc_fcce;		/* Event Register */
    VUSHORT	unused1;		/* */
    VUSHORT	fcc_fccm;		/* Mask Register */
    VUSHORT	unused2;		/* */
    VUCHAR	fcc_fccs;		/* Status Register */
    VUCHAR	reserved24[0x3];
    VULONG	fcc_tirr;		/* Transmit Partial Rate Reg */
} FCC_REG_T;

#pragma pack()

typedef struct {
    VUSHORT	word1;
    VUSHORT	bdLen;
    VULONG	bdAddr;
}FCC_BD;

typedef struct _pool {
    FCC_BD		desc;
    void		*pBuf;
    struct _pool	*next;
}BPOOL;

typedef struct fcc_tbd_list {
    void		*pBuf;
    VULONG		info;

#define PKT_TYPE_MULTI		0x10	/* packet with a multicast address */
#define PKT_TYPE_UNI		0x20	/* packet with a unicast address */
#define PKT_TYPE_NONE		0x40	/* address type is not meaningful */
#define BUF_TYPE_CL		0x01	/* this's a cluster pointer */
#define BUF_TYPE_MBLK		0x02	/* this's a mblk pointer */

} FCC_TBD_LIST;

/* The definition of the driver control structure */
 
typedef struct drv_ctrl {
    END_OBJ             endObj;         /* base class */
    int                 unit;           /* unit number */

    FCC_DRIVER_STATS	*Stats;

    FCC_REG_T		*fccReg;
    FCC_ETH_PARAM_T     *fccEthPar;
    FCC_PARAM_T		*fccPar;

    BPOOL		*RxContainers, *RxEmpty, *RxFree, *RxHead, *RxTail;
    volatile int	RxBufCount;
    volatile int	rxHandling;
    volatile int	lscHandling;

    UINT8		fccNum;		/* FCC being used */
    UINT32              immrVal;  	/* internal RAM base address */
    UINT32              fifoTxBase;     /* address of Tx FIFO in internal RAM */
    UINT32              fifoRxBase;     /* address of Rx FIFO in internal RAM */
    char *              pBufBase;       /* FCC memory pool base */
    ULONG               bufSize;        /* FCC memory pool size */
    char *              pBdBase;        /* FCC BDs base */
    ULONG               bdSize;         /* FCC BDs size */

    UINT16              rbdNum;         /* number of RBDs */
    FCC_BD		*rbdBase;	/* RBD ring */
    volatile UINT16	rbdIndex;       /* RBD index */
    void		*rBufList[MOT_FCC_RBD_MAX];

    UINT32		mblkMult;
    UINT32		clMult;

    UINT16              tbdNum;         /* number of TBDs */
    FCC_BD		*tbdBase;	/* TBD ring */
    volatile UINT16	tbdIndex;       /* TBD index */
    volatile UINT16	usedTbdIndex;   /* used TBD index */
    volatile UINT16	cleanTbdNum;    /* number of clean TBDs */
    volatile BOOL	txStall;        /* tx handler stalled - no Tbd */
    UINT16		unStallThresh;	/* a threshold */

    FCC_TBD_LIST	pTbdList[MOT_FCC_TBD_MAX];	/* list of TBDs */

    ULONG               userFlags;      /* some user flags */
    BOOL		zeroBufFlag;
    INT8                flags;          /* driver state */
    BOOL                loaded;         /* interface has been loaded */
    BOOL                intrConnect;    /* interrupt has been connected */
    UINT32		intMask;	/* interrupt mask register */
    UINT32		fccIramAddr;	/* base addr of this fcc */
    UINT32		fccPramAddr;	/* parameter RAM addr of this fcc */
    UCHAR *		pTxPollBuf;	/* cluster pointer for poll mode */

    SEM_ID		graSem;		/* synch semaphore for graceful */
					/* transmit command */
    char *              pClBlkArea;     /* cluster block pointer */
    UINT32              clBlkSize;     	/* clusters block memory size */
    char *              pMBlkArea;     	/* mBlock area pointer */
    UINT32              mBlkSize;     	/* mBlocks area memory size */
    CACHE_FUNCS         bdCacheFuncs;   /* cache descriptor */
    CACHE_FUNCS         bufCacheFuncs;  /* cache descriptor */
    CL_POOL_ID          pClPoolId;      /* cluster pool identifier */
    PHY_INFO		*phyInfo;	/* info on a MII-compliant PHY */


} DRV_CTRL;

/* 
 * this cache functions descriptors is used to flush/invalidate
 * the FCC's data buffers. They are set to the system's cache
 * flush and invalidate routine. This will allow proper operation
 * of the driver if data cache are turned on.
 */

IMPORT STATUS   cacheArchInvalidate (CACHE_TYPE, void *, size_t);
 
IMPORT STATUS   cacheArchFlush (CACHE_TYPE, void *, size_t);
 
LOCAL   CACHE_FUNCS     motFccBufCacheFuncs;
#if FALSE
LOCAL	FUNCPTR motFccBufInvRtn = cacheArchInvalidate;
LOCAL	FUNCPTR motFccBufFlushRtn = cacheArchFlush;
#endif /* FALSE */

FUNCPTR _func_motFccIntDisc = NULL;	/* assign a proper disc routine */
IMPORT STATUS   sysFccEnetAddrGet (int unit,UCHAR *address);
IMPORT STATUS	sysFccEnetEnable (UINT32 immrVal, UINT8 fccNum);
IMPORT STATUS	sysFccEnetDisable (UINT32 immrVal, UINT8 fccNum);
IMPORT STATUS	sysFccMiiBitWr (UINT32 immrVal, UINT8 fccNum,
				INT32 bit);
IMPORT STATUS	sysFccMiiBitRd (UINT32 immrVal, UINT8 fccNum,
				INT8 * bit);
IMPORT STATUS	miiPhyInit (PHY_INFO * phyInfo);
IMPORT FUNCPTR  _func_motFccPhyInit;
IMPORT FUNCPTR  _func_motFccHbFail;

#ifdef __cplusplus
}
#endif

#endif /* __INCsbcMotFccEndh */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -