📄 tigon3.h
字号:
#else /* BIG_ENDIAN_HOST */ T3_16BIT_REGISTER Flags; T3_16BIT_REGISTER MaxLen;#endif } s; T3_32BIT_REGISTER MaxLen_Flags; } u; T3_32BIT_REGISTER NicRingAddr;} T3_RCB, *PT3_RCB;#define T3_RCB_FLAG_USE_EXT_RECV_BD BIT_0#define T3_RCB_FLAG_RING_DISABLED BIT_1/******************************************************************************//* Status block. *//******************************************************************************//* * Size of status block is actually 0x50 bytes. Use 0x80 bytes for * cache line alignment. */#define T3_STATUS_BLOCK_SIZE 0x80typedef struct { volatile LM_UINT32 Status; #define STATUS_BLOCK_UPDATED BIT_0 #define STATUS_BLOCK_LINK_CHANGED_STATUS BIT_1 #define STATUS_BLOCK_ERROR BIT_2 volatile LM_UINT32 StatusTag;#ifdef BIG_ENDIAN_HOST volatile LM_UINT16 RcvStdConIdx; volatile LM_UINT16 RcvJumboConIdx; volatile LM_UINT16 Reserved2; volatile LM_UINT16 RcvMiniConIdx; struct { volatile LM_UINT16 SendConIdx; /* Send consumer index. */ volatile LM_UINT16 RcvProdIdx; /* Receive producer index. */ } Idx[16];#else /* BIG_ENDIAN_HOST */ volatile LM_UINT16 RcvJumboConIdx; volatile LM_UINT16 RcvStdConIdx; volatile LM_UINT16 RcvMiniConIdx; volatile LM_UINT16 Reserved2; struct { volatile LM_UINT16 RcvProdIdx; /* Receive producer index. */ volatile LM_UINT16 SendConIdx; /* Send consumer index. */ } Idx[16];#endif} T3_STATUS_BLOCK, *PT3_STATUS_BLOCK;/******************************************************************************//* Receive buffer descriptors. *//******************************************************************************/typedef struct { T3_64BIT_HOST_ADDR HostAddr;#ifdef BIG_ENDIAN_HOST volatile LM_UINT16 Index; volatile LM_UINT16 Len; volatile LM_UINT16 Type; volatile LM_UINT16 Flags; volatile LM_UINT16 IpCksum; volatile LM_UINT16 TcpUdpCksum; volatile LM_UINT16 ErrorFlag; volatile LM_UINT16 VlanTag;#else /* BIG_ENDIAN_HOST */ volatile LM_UINT16 Len; volatile LM_UINT16 Index; volatile LM_UINT16 Flags; volatile LM_UINT16 Type; volatile LM_UINT16 TcpUdpCksum; volatile LM_UINT16 IpCksum; volatile LM_UINT16 VlanTag; volatile LM_UINT16 ErrorFlag;#endif volatile LM_UINT32 Reserved; volatile LM_UINT32 Opaque;} T3_RCV_BD, *PT3_RCV_BD;typedef struct { T3_64BIT_HOST_ADDR HostAddr[3];#ifdef BIG_ENDIAN_HOST LM_UINT16 Len1; LM_UINT16 Len2; LM_UINT16 Len3; LM_UINT16 Reserved1;#else /* BIG_ENDIAN_HOST */ LM_UINT16 Len2; LM_UINT16 Len1; LM_UINT16 Reserved1; LM_UINT16 Len3;#endif T3_RCV_BD StdRcvBd;} T3_EXT_RCV_BD, *PT3_EXT_RCV_BD;/* Error flags. */#define RCV_BD_ERR_BAD_CRC 0x0001#define RCV_BD_ERR_COLL_DETECT 0x0002#define RCV_BD_ERR_LINK_LOST_DURING_PKT 0x0004#define RCV_BD_ERR_PHY_DECODE_ERR 0x0008#define RCV_BD_ERR_ODD_NIBBLED_RCVD_MII 0x0010#define RCV_BD_ERR_MAC_ABORT 0x0020#define RCV_BD_ERR_LEN_LT_64 0x0040#define RCV_BD_ERR_TRUNC_NO_RESOURCES 0x0080#define RCV_BD_ERR_GIANT_FRAME_RCVD 0x0100/* Buffer descriptor flags. */#define RCV_BD_FLAG_END 0x0004#define RCV_BD_FLAG_JUMBO_RING 0x0020#define RCV_BD_FLAG_VLAN_TAG 0x0040#define RCV_BD_FLAG_FRAME_HAS_ERROR 0x0400#define RCV_BD_FLAG_MINI_RING 0x0800#define RCV_BD_FLAG_IP_CHKSUM_FIELD 0x1000#define RCV_BD_FLAG_TCP_UDP_CHKSUM_FIELD 0x2000#define RCV_BD_FLAG_TCP_PACKET 0x4000/******************************************************************************//* Send buffer descriptor. *//******************************************************************************/typedef struct { T3_64BIT_HOST_ADDR HostAddr; union { struct {#ifdef BIG_ENDIAN_HOST LM_UINT16 Len; LM_UINT16 Flags;#else /* BIG_ENDIAN_HOST */ LM_UINT16 Flags; LM_UINT16 Len;#endif } s1; LM_UINT32 Len_Flags; } u1; union { struct {#ifdef BIG_ENDIAN_HOST LM_UINT16 Reserved; LM_UINT16 VlanTag;#else /* BIG_ENDIAN_HOST */ LM_UINT16 VlanTag; LM_UINT16 Reserved;#endif } s2; LM_UINT32 VlanTag; } u2;} T3_SND_BD, *PT3_SND_BD;/* Send buffer descriptor flags. */#define SND_BD_FLAG_TCP_UDP_CKSUM 0x0001#define SND_BD_FLAG_IP_CKSUM 0x0002#define SND_BD_FLAG_END 0x0004#define SND_BD_FLAG_IP_FRAG 0x0008#define SND_BD_FLAG_IP_FRAG_END 0x0010#define SND_BD_FLAG_VLAN_TAG 0x0040#define SND_BD_FLAG_COAL_NOW 0x0080#define SND_BD_FLAG_CPU_PRE_DMA 0x0100#define SND_BD_FLAG_CPU_POST_DMA 0x0200#define SND_BD_FLAG_INSERT_SRC_ADDR 0x1000#define SND_BD_FLAG_CHOOSE_SRC_ADDR 0x6000#define SND_BD_FLAG_DONT_GEN_CRC 0x8000/* MBUFs */typedef struct T3_MBUF_FRAME_DESC {#ifdef BIG_ENDIAN_HOST LM_UINT32 status_control; union { struct { LM_UINT8 cqid; LM_UINT8 reserved1; LM_UINT16 length; }s1; LM_UINT32 word; }u1; union { struct { LM_UINT16 ip_hdr_start; LM_UINT16 tcp_udp_hdr_start; }s2; LM_UINT32 word; }u2; union { struct { LM_UINT16 data_start; LM_UINT16 vlan_id; }s3; LM_UINT32 word; }u3; union { struct { LM_UINT16 ip_checksum; LM_UINT16 tcp_udp_checksum; }s4; LM_UINT32 word; }u4; union { struct { LM_UINT16 pseudo_checksum; LM_UINT16 checksum_status; }s5; LM_UINT32 word; }u5; union { struct { LM_UINT16 rule_match; LM_UINT8 class; LM_UINT8 rupt; }s6; LM_UINT32 word; }u6; union { struct { LM_UINT16 reserved2; LM_UINT16 mbuf_num; }s7; LM_UINT32 word; }u7; LM_UINT32 reserved3; LM_UINT32 reserved4;#else LM_UINT32 status_control; union { struct { LM_UINT16 length; LM_UINT8 reserved1; LM_UINT8 cqid; }s1; LM_UINT32 word; }u1; union { struct { LM_UINT16 tcp_udp_hdr_start; LM_UINT16 ip_hdr_start; }s2; LM_UINT32 word; }u2; union { struct { LM_UINT16 vlan_id; LM_UINT16 data_start; }s3; LM_UINT32 word; }u3; union { struct { LM_UINT16 tcp_udp_checksum; LM_UINT16 ip_checksum; }s4; LM_UINT32 word; }u4; union { struct { LM_UINT16 checksum_status; LM_UINT16 pseudo_checksum; }s5; LM_UINT32 word; }u5; union { struct { LM_UINT8 rupt; LM_UINT8 class; LM_UINT16 rule_match; }s6; LM_UINT32 word; }u6; union { struct { LM_UINT16 mbuf_num; LM_UINT16 reserved2; }s7; LM_UINT32 word; }u7; LM_UINT32 reserved3; LM_UINT32 reserved4;#endif}T3_MBUF_FRAME_DESC,*PT3_MBUF_FRAME_DESC;typedef struct T3_MBUF_HDR { union { struct { unsigned int C:1; unsigned int F:1; unsigned int reserved1:7; unsigned int next_mbuf:16; unsigned int length:7; }s1; LM_UINT32 word; }u1; LM_UINT32 next_frame_ptr;}T3_MBUF_HDR, *PT3_MBUF_HDR;typedef struct T3_MBUF{ T3_MBUF_HDR hdr; union { struct { T3_MBUF_FRAME_DESC frame_hdr; LM_UINT32 data[20]; }s1; struct { LM_UINT32 data[30]; }s2; }body;}T3_MBUF, *PT3_MBUF;#define T3_MBUF_BASE (T3_NIC_MBUF_POOL_ADDR >> 7)#define T3_MBUF_END ((T3_NIC_MBUF_POOL_ADDR + T3_NIC_MBUF_POOL_SIZE) >> 7)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -