📄 if_eex.h
字号:
typedef struct ac_iasetup /* AC_IASETUP - Individual Address Setup */ { UINT8 ciAddress[EA_SIZE]; /* local ethernet address */ UINT16 ciFill; } AC_IASETUP;typedef struct ac_config /* AC_CONFIG - i82586 Configure */ { UINT8 byteCount; /* byte count */ UINT8 fifoLimit; /* FIFO limit */ UINT8 srdy_saveBad; /* SRD/~ARDY, save bad frames */ UINT8 addrLen_loopback; /* address length, loopback */ UINT8 backoff; /* backoff method */ UINT8 interframe; /* interframe spacing */ UINT8 slotTimeLow; /* slot time -low byte */ UINT8 slotTimeHi_retry; /* slot time -upper 3 bits, max retry */ UINT8 promiscuous; /* promiscuous mode, other stuff */ UINT8 carrier_collision; /* carrier sense, collision detect */ UINT8 minFrame; /* minimum frame length */ UINT8 notUsed; UINT16 ccFill; } AC_CONFIG;typedef struct ac_mcast /* AC_MCAST - Multicast Setup */ { UINT16 cmMcCount; /* the number of bytes in MC list */ UINT8 cmAddrList[6 * N_MCAST]; /* mulitcast address list */ } AC_MCAST;typedef struct ac_tdr /* AC_TDR - Time Domain Reflectometry */ { UINT16 ctInfo; /* time, link OK, tx err, line err */ UINT16 ctReserve1; /* reserved */ } AC_TDR;typedef struct ac_dump /* AC_DUMP - Dump */ { EEX_SHORTLINK bufAddr; /* address of dump buffer */ } AC_DUMP;/* Command Frame Description and defines */typedef struct cfd /* CFD - Command Frame Descriptor */ { volatile UINT16 cfdStatus; /* command status */ UINT16 cfdCommand; /* command */ EEX_SHORTLINK link; /* address of next CB */ union /* command dependent section */ { struct ac_iasetup cfd_iasetup; /* IA setup */ struct ac_config cfd_config; /* config */ struct ac_mcast cfd_mcast; /* multicast setup */ struct ac_tdr cfd_tdr; /* TDR */ struct ac_dump cfd_dump; /* dump */ } cfd_cmd; } CFD;#define cfdIASetup cfd_cmd.cfd_iasetup#define cfdConfig cfd_cmd.cfd_config#define cfdMcast cfd_cmd.cfd_mcast#define cfdTransmit cfd_cmd.cfd_transmit#define cfdTDR cfd_cmd.cfd_tdr#define cfdDump cfd_cmd.cfd_dump#define CFD_C_NOP 0x0000 /* No Operation */#define CFD_C_IASETUP 0x0001 /* Individual Address Setup */#define CFD_C_CONFIG 0x0002 /* Configure Chip */#define CFD_C_MASETUP 0x0003 /* Multicast Setup */#define CFD_C_XMIT 0x0004 /* Transmit (see below too ...) */#define CFD_C_TDR 0x0005 /* Time Domain Reflectometry */#define CFD_C_DUMP 0x0006 /* Dump Registers */#define CFD_C_DIAG 0x0007 /* Diagnose */#define CFD_C_INT 0x2000 /* 586 interrupts CPU after execution */#define CFD_C_SE 0x4000 /* CU should suspend after execution */#define CFD_C_EL 0x8000 /* End of command list */#define CFD_S_ABORTED 0x1000 /* Command was aborted via CU Abort */#define CFD_S_OK 0x2000 /* Command completed successfully */#define CFD_S_BUSY 0x4000 /* CU is executing this command */#define CFD_S_COMPLETE 0x8000 /* Command complete *//* 82586 Transmit/Receive Frames */typedef struct tfd /* TFD - Transmit Frame Descriptor */ { volatile UINT16 status; /* status field */ UINT16 command; /* command field */ EEX_SHORTLINK lNext; /* link to next desc. */ EEX_SHORTLINK lBufDesc; /* link to buf desc. */ } TFD;/* special TFD specific command block bit masks */#define CFD_S_COLL_MASK 0x000f /* to access number of collisions */#define CFD_S_RETRY 0x0020 /* reached the max number of retries */#define CFD_S_HBEAT 0x0040 /* Heartbeat Indicator */#define CFD_S_TRDEF 0x0080 /* Transmission Deferred */#define CFD_S_DMA_UNDR 0x0100 /* DMA Underrun (no data) */#define CFD_S_NO_CTS 0x0200 /* Lost Clear To Send signal */#define CFD_S_NO_CRS 0x0400 /* No Carrier Sense */typedef struct tbd /* TBD - Transmit Buffer Descriptor */ { volatile UINT16 actCount; /* Actual byte count */ EEX_SHORTLINK lNext; /* Address of next buffer descr. */ EEX_LINK lBufAddr; /* Address of this data buffer */ } TBD;/* TBD bits */#define ACT_COUNT_MASK ~0xc000 /* length fields are 14 bits */#define TBD_S_EOF 0x8000 /* End-of-frame bit */#ifdef EEX_AL_LOCtypedef struct tframe /* TFRAME - all-in-one transmit frame */ { TFD tfd; TBD tbd; char buffer [FRAME_SIZE]; } TFRAME;#elsetypedef struct tframe /* TFRAME - all-in-one transmit frame */ { TFD tfd; union { struct { char header [EH_SIZE]; char data [ETHERMTU]; } buff_struct; char buffer [FRAME_SIZE]; } buff_union; TBD tbd; } TFRAME;#endif /* EEX_AL_LOC */typedef struct rfd /* RFD - Receive Frame Descriptor */ { volatile UINT16 status; /* status field */ UINT16 command; /* command field */ EEX_SHORTLINK lNext; /* link to next desc. */ EEX_SHORTLINK lBufDesc; /* link to buf desc. */ } RFD;/* RFD bit masks */#define RFD_S_EOP 0x0040 /* no EOP flag */#define RFD_S_SHORT 0x0080 /* fewer bytes than configured min. */#define RFD_S_DMA 0x0100 /* DMA Overrun failure to get bus */#define RFD_S_RSRC 0x0200 /* received, but ran out of buffers */#define RFD_S_ALGN 0x0400 /* received misaligned with CRC error */#define RFD_S_CRC 0x0800 /* received with CRC error */#define RFD_S_OK 0x2000 /* frame received successfully */#define RFD_S_BUSY 0x4000 /* frame reception ready/in progress */#define RFD_S_COMPLETE 0x8000 /* frame reception complete */#define RFD_M_SUSPEND 0x4000 /* suspend RU after receiving frame */#define RFD_M_EL 0x8000 /* end of RFD list */typedef struct rbd /* RBD - Receive Buffer Descriptor */ { volatile UINT16 actCount; /* Actual byte count */ EEX_SHORTLINK lNext; /* Address of next buffer descr. */ EEX_LINK lBufAddr; /* Address of this data buffer */ UINT16 bufSize; /* Size of data buffer */ } RBD;#define RBD_S_CNT_MASK 0x3fff /* Mask for actual byte count */#define RBD_S_F_BIT 0x4000 /* actual count is valid */#define RBD_S_EOF 0x8000 /* end of frame */#define RBD_M_EL 0x8000 /* end of RBD list */#ifdef EEX_AL_LOCtypedef struct rframe /* RFRAME - all-in-one received frame */ { RFD rfd; RBD rbd; char buffer [FRAME_SIZE]; } RFRAME;#elsetypedef struct rframe /* RFRAME - all-in-one received frame */ { RFD rfd; union { struct { char header [EH_SIZE]; char data [ETHERMTU]; } buff_struct; char buffer [FRAME_SIZE]; } buff_union; RBD rbd; } RFRAME;#endif /* EEX_AL_LOC *//* Offsets into xFRAME structures to compute board emmory offsets */#define RF_COMMAND 2 /* command word */#define RF_LINK 4 /* link to next RFD */#define RB_OFFSET 6 /* dhe 10/24/94 offset of first RBD */#define RB_LINK 2 /* dhe 10/24/94 link to next RBD */#ifdef EEX_AL_LOC#define RF_ACT_COUNT 8 /* actual count in RBD */#define RF_BUFFER 18 /* frame data buffer */#else#define RF_BUFFER 8 /* frame data buffer */#define RF_ACT_COUNT (RF_BUFFER + FRAME_SIZE)#endif /* EEX_AL_LOC */#define TF_COMMAND 2 /* command word */#define TF_LINK 4 /* link to next TFD */#ifdef EEX_AL_LOC#define TF_ACT_COUNT 8 /* actual count in TBD */#define TF_BUFFER 16 /* frame data buffer */#else#define TF_BUFFER 8 /* frame header starts here */#define TF_OLDLENGTH 20 /* Take length from here */#define TF_NEWLENGTH 14 /* put it here to be part of TFD */#define TF_ACT_COUNT (RF_BUFFER + FRAME_SIZE)#endif /* EEX_AL_LOC */#if ((CPU_FAMILY==I960) && (defined __GNUC__))#pragma align 0 /* turn off alignment requirement */#endif /* CPU_FAMILY==I960 */#ifdef __cplusplus}#endif#endif /* __INCif_eexh */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -