📄 sf_regstruct.h
字号:
typedef union { struct { UINT32 Fcnt_2P :10; /*端口发往邻端口mem使用深度 缺省10'h0 */ UINT32 Fcnt_2CB :11; /*端口发往CPU的和广播帧mem使用深度 缺省11'h0*/ UINT32 reserved :11; /* */ }bits ; UINT32 w32 ;}MemDepth_2_U;/*Memory存储的帧个数寄存器*/typedef union { struct { UINT32 fmcnt_u2d :6; /*上行口发往下行口MEM存储帧个数 缺省6'h0*/ UINT32 fmcnt_u2c :7; /*上行口发往CPU的MEM存储帧个数 缺省7'h0 */ UINT32 fmcnt_d2u :7; /*下行口发往上行口MEM存储帧个数 缺省7'h0*/ UINT32 fmcnt_d2c :6; /*下口发往CPU的MEM存储帧个数 缺省6'h0 */ UINT32 reserved :6; /* */ }bits ; UINT32 w32 ;}Mem_StoFraCnt_U;/*上下端口发送的帧描述子的深度寄存器*/typedef union { struct { UINT32 Cnt_u2c :5; /*上行口发往CPU的单播帧描述子队列使用深度 缺省5'h0 */ UINT32 cnt_u2bc :4; /*上行口发往CPU的广播帧描述子队列使用深度 缺省4'h0 */ UINT32 Cnt_u2bd :4; /*上行口发往下行口的广播帧描述子队列使用深度 缺省4'h0*/ UINT32 Cnt_d2c :5; /*下行口发往CPU的单播帧描述子队列使用深度 缺省5'h0 */ UINT32 Cnt_d2bc :4; /*下行口发往CPU的广播帧描述子队列使用深度 缺省4'h0 */ UINT32 Cnt_d2bu :4; /*下行口发往下行口的广播帧描述子队列使用深度 缺省4'h0*/ UINT32 reserved :6; /* */ }bits ; UINT32 w32 ;}FraDes_Port2Depth_U;/*CPU发送的帧描述子的深度寄存器*/typedef union { struct { UINT32 Cnt_c2u :4; /*CPU发给上行口单播帧描述子队列使用深度 缺省4'h0 */ UINT32 cnt_c2bu :4; /*CPU发给上行口的广播帧描述子队列使用深度 缺省4'h0*/ UINT32 Cnt_c2d :4; /*CPU发给下行口单播帧描述子队列使用深度 缺省4'h0 */ UINT32 cnt_c2bd :4; /*CPU发给下行口的广播帧描述子队列使用深度 缺省4'h0*/ UINT32 reserved :16; /* */ }bits ; UINT32 w32 ;}FraDes_CPU2Depth_U;/*SF写到片外数据大小端转换使能寄存器*/typedef union { struct { UINT32 swap_en :1; /*SF写到片外数据大小端转换使能,缺省为0(big edian)*/ UINT32 reserved :31; /* */ }bits ; UINT32 w32 ;}SF2ExtRam_Endian_U;/*ANYPORT帧配置表结构*/typedef union { struct { UINT32 port :16; /*CPU配置待识别协议端口号*/ UINT32 protocol :8; /*CPU配置待识别协议类型 */ UINT32 ctrl0 :2; /*端口0ANYPORT帧转发控制 */ UINT32 port_en0 :1; /*端口0协议端口识别使能 */ UINT32 protocol_en0 :1; /*端口0协议识别使能 */ UINT32 ctrl1 :2; /*端口1ANYPORT帧转发控制 */ UINT32 port_en1 :1; /*端口1协议端口识别使能 */ UINT32 protocol_en1 :1; /*端口1协议识别使能 */ }bits ; UINT32 w32 ;}ANYPORT_Form_U;/*ANYTYPE帧配置表结构*/typedef union { struct { UINT32 aim_mac_addr0 :32; /*CPU配置待识别目的MAC(低32位)*/ }bits0; UINT32 w32_0; }ANYTYPE_FormCon0; typedef union { struct { UINT32 aim_mac_addr1 :16; /*CPU配置待识别目的MAC(高16位)*/ UINT32 reserved :16; }bits1; UINT32 w32_1; }ANYTYPE_FormCon1; typedef union { struct { UINT32 ether_type :16; /*CPU配置待识别以太网类型*/ UINT32 vlan_id :12; /*CPU配置待识别VLAN ID */ UINT32 reserved :4; /* */ }bits2; UINT32 w32_2; }ANYTYPE_FormCon2;typedef union { struct { UINT32 ctrl0 :2; /*端口1ANYTYPE帧转发控制 */ UINT32 type_en0 :1; /*端口1帧Ether type识别使能*/ UINT32 vid_en0 :1; /*端口1帧VLAN ID识别使能 */ UINT32 da_en0 :1; /*端口1目的MAC识别使能 */ UINT32 ctrl1 :2; /*端口1ANYTYPE帧转发控制 */ UINT32 type_en1 :1; /*端口1帧Ether type识别使能*/ UINT32 vid_en1 :1; /*端口1帧VLAN ID识别使能 */ UINT32 da_en1 :1; /*端口1目的MAC识别使能 */ UINT32 reserved :22; /* */ }bits3 ; UINT32 w32_3 ; }ANYTYPE_FormCon3; /*VLAN配置表结构*/typedef union { struct { UINT32 vtag :3; /*VLAN对应表项是否带tag输出,基于端口*/ UINT32 vmem :3; /*VLAN对应表项对应的成员,基于端口*/ UINT32 fix_vid :1; /*VLAN对应表项是否是 固定的VID,高电平有效*/ UINT32 ipm_vid :1; /*VLAN对应表项是否是IP多播报文或特殊帧对应的VID,高电平有效*/ UINT32 vpri :3; /*VLAN对应表项的优先级 */ UINT32 reserved :5; /* */ UINT32 vid :12; /*待创建VLAN的VLAN ID */ UINT32 reserved1 :4; /* */ }bits ; UINT32 w32 ;}VLAN_Form_U;/*SF配置的帧描述子结构*/typedef union { struct { UINT32 fra_buf_addr :11; /*帧保存地址*/ UINT32 fra_type :2; /*帧类型*/ UINT32 ipm :1; /*ipm特殊帧*/ UINT32 spn :5; /*sc,dd,du,00*/ UINT32 fra_len :11; /*帧长度Byte */ UINT32 f_vd :1; /*frame 有没有效--1*/ UINT32 m_u :1; /*给我的时候表示是不是特殊帧,CPU发出的时候判断是不是多播、单播*/ }bits ; UINT32 w32 ;}SF_Frame_Describe_U;/*CPU配置的帧描述子结构*/typedef union { struct { UINT32 fra_buf_addr :11; /*帧保存地址*/ UINT32 prior :1; /*帧优先级*/ UINT32 tag_in :1; /*输入帧是否带tag*/ UINT32 reserved :1; /* */ UINT32 spn :5; /*sc,dd,du,00*/ UINT32 fra_len :11; /*帧长度Byte */ UINT32 tag_out :1; /*帧输出是否带tag*/ UINT32 special :1; /*给我的时候表示是不是特殊帧,CPU发出的时候判断是不是多播、单播*/ }bits ; UINT32 w32 ;}CPU_Frame_Describe_U;/*端口统计计数器结构体*/typedef struct { UINT32 drop_event; /*帧接收的过程中,RXFIFO溢出事件的累计次数(0x0000/0x0100)*/ UINT32 crcerr; /*接收帧的帧长有效,但其CRC或Alignment检查出错的帧的个数(0x0004/0x0104)*/ UINT32 undersizepkts; /*帧长小于设定的最小有效帧长(缺省为64字节),又没有其它错误的接收帧的个数(0x0008/0x0108)*/ UINT32 oversizepkts; /*帧长大于设定的最大有效帧长,又没有其它错误的接收帧的个数(0x000c/0x010c)*/ UINT32 fragments; /*接收帧的帧长小于设定的最小有效值(缺省值为4字节),并且其CRC或Alignment检查出错的帧的个数(0x0010/0x0110)*/ UINT32 jabber; /*接收帧的帧长大于设定的最大有效值,并且其CRC或Alignment检查出错的帧的个数(0x0014/0x0114)*/ UINT32 broadcastpkts; /*仅为正确的广播帧的计数(0x0018/0x0118)*/ UINT32 multicastpkts; /*仅为正确的多播帧的计数(0x001c/0x011c)*/ UINT32 pkts64; /*接收帧长为64字节的帧的计数,正确帧和错误帧都包括(0x0020/0x0120)*/ UINT32 pkts65_127; /*接收帧长为从65到127字节的帧的计数,正确帧和错误帧都包括(0x0024/0x0124)*/ UINT32 pkts128_255; /*接收帧长为从128到255字节的帧的计数,正确帧和错误帧都包括(0x0028/0x0128)*/ UINT32 pkts256_511; /*接收帧长为从256到511字节的帧的计数,正确帧和错误帧都包括(0x002c/0x012c)*/ UINT32 pkts512_1023; /*接收帧长为从512到1023字节的帧的计数,正确帧和错误帧都包括(0x0030/0x0130)*/ UINT32 pkts1024_1518; /*接收帧长为从1024到1518字节的帧的计数,正确帧和错误帧都包括(0x0034/0x0134)*/ UINT32 pkts_1518; /*接收帧长大于1518字节的帧的计数,正确帧和错误帧都包括(0x0038/0x0138)*/ UINT32 ifinucastpkts; /*接收的正确的单播帧的计数(0x003c/0x013c)*/ UINT32 ifinnucastpkts; /*接收的非单播好帧(0x0040/0x0140)*/ UINT32 ifindiscards; /*接收的错帧数(包括CRC错、超短帧、超长帧、Overflow和传输错)(0x0044/0x0144)*/ UINT32 ifinerrors; /*接收的错帧数(包括CRC错、超短帧、超长帧和传输错)(0x0048/0x0148)*/ UINT32 ifinmulticast; /*接收的多播帧数(包括错帧)(0x004c/0x014c)*/ UINT32 ifinbroadcast; /*接收的广播帧数(包括错帧)(0x0050/0x0150)*/ UINT32 dot3alignmenterr; /*接收到的奇数个nibble的CRC错帧(0x0054/0x0154)*/ UINT32 dot3fcserr; /*接收到的偶数个nibble的CRC错帧(0x0058/0x0158)*/ UINT32 dot3internalrecerr; /*接收的错帧数(不包括CRC和Overflow错)(0x005c/0x015c)*/ UINT32 dot3inpause; /*接收的已知操作码的流控帧数(0x0060/0x0160)*/ UINT32 dot3unkpause; /*接收的未知操作码的流控帧数(0x0064/0x0164)*/ UINT32 dot3dribble; /*接收的奇数个nibble的CRC正确的帧(0x0068/0x0168)*/ UINT32 octets; /*接收字节计数(含正确帧和错误帧,但Preamble字节以及未检测到有效SFD的帧中的字节不计在内)(0x006c/0x016c)*/ UINT32 pkts; /*所有帧的计数,正确帧和错误帧都包括(0x0070/0x0170)*/ UINT32 ifinoctets; /*所有接收字节的计数,包括正确帧、错误帧以及Preamble中的字节(0x0074/0x0174)*/ UINT32 broadcastpkts_tx; /*发送的正确的广播帧的计数,不含重发的广播帧(0x0080/0x0180)*/ UINT32 multicastpkts_tx; /*发送的正确的多播帧的计数,不含重发的多播帧(0x0084/0x0184)*/ UINT32 ifoutdiscards; /*帧发送的过程中,TXFIFO溢出事件的累计次数(0x0088/0x0188)*/ UINT32 ifouterrors; /*发送过程中,所有错帧的计数,重传的除外(0x008c/0x018c)*/ UINT32 ifoutucastpkts; /*发送的正确或错误的单播帧的计数,不含重传的单播帧(0x0090/0x0190)*/ UINT32 ifoutnucastpkts; /*发送的非单播好帧(0x0094/0x0194)*/ UINT32 ifoutmulticast; /*发送的多播帧(0x0098/0x0198)*/ UINT32 ifoutbroadcast; /*发送的广播帧(0x009c/0x019c)*/ UINT32 pkts64_tx; /*发送帧长为64字节的帧的计数,正确帧和错误帧都包括(0x00a0/0x01a0)*/ UINT32 pkts65_127_tx; /*发送帧长为65到127字节的帧的计数,正确帧和错误帧都包括(0x00a4/0x01a4)*/ UINT32 pkts128_255_tx; /*发送帧长为128到255字节的帧的计数,正确帧和错误帧都包括(0x00a8/0x01a8)*/ UINT32 pkts256_511_tx; /*发送帧长为256到511字节的帧的计数,正确帧和错误帧都包括(0x00ac/0x01ac)*/ UINT32 pkts512_1023_tx; /*发送帧长为512到1023字节的帧的计数,正确帧和错误帧都包括(0x00b0/0x01b0)*/ UINT32 pkts1024_1518_tx; /*发送帧长为1024到1518字节的帧的计数,正确帧和错误帧都包括(0x00b4/0x01b4)*/ UINT32 pkts_1518_tx; /*发送帧长大于1518字节的帧的计数,正确帧和错误帧都包括(0x00b8/0x01b8)*/ UINT32 dot3singlecol; /*发生一次冲突后发送成功的帧数目(0x00bc/0x01bc)*/ UINT32 dot3multiplecol; /*发生多次冲突后发送成功的帧数目(0x00c0/0x01c0)*/ UINT32 dot3latecol; /*发生Late collission的帧数目(0x00c4/0x01c4)*/ UINT32 dot3excessivecol; /*由于重传次数大于15而丢弃的帧数目(0x00c8/0x01c8)*/ UINT32 dot3colcnt; /*冲突次数等于冲突阈值的帧数(0x00cc/0x01cc)*/ UINT32 dot3defer; /*由于网络忙而被延迟转发的帧数(0x00d0/0x01d0)*/ UINT32 pkts_tx; /*全部发帧的计数,含正确帧和错误帧,但不含重发帧(0x00d4/0x01d4)*/ UINT32 octets_tx; /*发送字节计数(含重发帧以及正确帧和错误帧,但Preamble字节不计在内)(0x00d8/0x01d8)*/ UINT32 collisions; /*Collision发生的次数,不含SQE(0x00dc/0x01dc)*/ UINT32 ifoutoctets; /*发送的全部字节,包含所有Preamble的字节以及正确帧、错误帧和重传帧的全部字节数(0x00e0/0x01e0)*/ UINT32 dot3outpause; /*发送的流控帧数目(0x00e4/0x01e4)*/}Port_Cnt_S;/*帧的MAC头结构体定义*/typedef struct{ UINT32 DMACH32 :32; /*目的MAC地址的高32位*/ UINT32 SMACH16 :16; /*源MAC地址的高16位*/ UINT32 DMACL16 :16; /*目的MAC地址的低16位*/ UINT32 SMACL32 :32; /*源MAC地址的低32位*/}FrameMACHead_S;/****5种帧结构的结构体定义****/#if 0/////*以太网帧头格式*///typedef struct// {// UINT32 DMACH32 :32; /*目的MAC地址的高32位*/// UINT32 SMACH16 :16; /*源MAC地址的高16位*/// UINT32 DMACL16 :16; /*目的MAC地址的低16位*/// UINT32 SMACL32 :32; /*源MAC地址的低32位*/// UINT32 TAGHeader :32; /*TAG Header*/// UINT32 TOS :8; /* */// UINT32 VER :8; /*版本号*/// UINT32 TYPE :16; /*帧格式TYPE*/// UINT32 FrameID :16; /*帧标志(计算第几个帧)*/// UINT32 FrameLength :16; /*数据包长度*/// UINT32 Protocol :8; /*协议*/// UINT32 SliceOffset :13; /*片偏移*/// UINT32 SliceFlag :3; /*分片标志*/// UINT32 SIPH16 :16; /*源IP地址高16位*/// UINT32 HeadChecksum :16; /*首部校验和*/// UINT32 DIPH16 :16; /*目的IP地址低16位*/// UINT32 SIPL16 :16; /*源IP地址低16位*/// UINT32 SPortNo :16; /*源端口号*/// UINT32 DIPL16 :16; /*目的IP地址低16位*/// UINT32 DataLength :16; /*数据包长度*/// UINT32 DPortNo :16; /*目的端口号*/// UINT32 HAddrType :16; /*硬件地址类型*/// UINT32 Checksum :16; /*校验和*/// UINT32 reserved :16; /* */// UINT32 HAddrLen :16; /*硬件地址长度*///}EthernetFrame_S;/////*SNAP帧的报文头格式*///typedef struct// {// UINT32 DMACH32 :32; /*目的MAC地址的高32位*/// UINT32 SMACH16 :16; /*源MAC地址的高16位*/// UINT32 DMACL16 :16; /*目的MAC地址的低16位*/// UINT32 SMACL32 :32; /*源MAC地址的低32位*/// UINT32 TAGHeader :32; /*TAG Header*///// UINT32 SSAP :8; /* */// UINT32 DSAP :8; /* */// UINT32 Length :16; /* */// UINT32 Reserved0 :24; /* */// UINT32 Contr :8; /* */// // UINT32 TOS :8; /* */// UINT32 VER :8; /*版本号*/// UINT32 TYPE :16; /*帧格式TYPE*/// UINT32 FrameID :16; /*帧标志(计算第几个帧)*/// UINT32 FrameLength :16; /*数据包长度*/// UINT32 Protocol :8; /*协议*/// UINT32 SliceOffset :13; /*片偏移*/// UINT32 SliceFlag :3; /*分片标志*/// UINT32 SIPH16 :16; /*源IP地址高16位*/// UINT32 HeadChecksum :16; /*首部校验和*/// UINT32 DIPH16 :16; /*目的IP地址低16位*/// UINT32 SIPL16 :16; /*源IP地址低16位*/// UINT32 SPortNo :16; /*源端口号*/// UINT32 DIPL16 :16; /*目的IP地址低16位*/// UINT32 DataLength :16; /*数据包长度*/// UINT32 DPortNo :16; /*目的端口号*/// UINT32 HAddrType :16; /*硬件地址类型*/// UINT32 Checksum :16; /*校验和*/// UINT32 Reserved1 :16; /* */// UINT32 HAddrLen :16; /*硬件地址长度*///}SNAPFrame_S;/////*802.3 LL2帧头格式*///typedef struct// {// UINT32 DMACH32 :32; /*目的MAC地址的高32位*/// UINT32 SMACH16 :16; /*源MAC地址的高16位*/// UINT32 DMACL16 :16; /*目的MAC地址的低16位*/// UINT32 SMACL32 :32; /*源MAC地址的低32位*/// UINT32 TAGHeader :32; /*TAG Header*///// UINT32 SSAP :8; /* */// UINT32 DSAP :8; /* */// UINT32 Length :16; /* */// UINT32 TOS :8; /* */// UINT32 VER :8; /*版本号*/// UINT32 Contr :8; /* */// // UINT32 FrameID :16; /*帧标志(计算第几个帧)*/// UINT32 FrameLength :16; /*数据包长度*/// UINT32 Protocol :8; /*协议*/// UINT32 SliceOffset :13; /*片偏移*/// UINT32 SliceFlag :3; /*分片标志*/// UINT32 SIPH16 :16; /*源IP地址高16位*/// UINT32 HeadChecksum :16; /*首部校验和*/// UINT32 DIPH16 :16; /*目的IP地址低16位*/// UINT32 SIPL16 :16; /*源IP地址低16位*/// UINT32 SPortNo :16; /*源端口号*/// UINT32 DIPL16 :16; /*目的IP地址低16位*/// UINT32 DataLength :16; /*数据包长度*/// UINT32 DPortNo :16; /*目的端口号*/// UINT32 HAddrType :16; /*硬件地址类型*/// UINT32 Checksum :16; /*校验和*/// UINT32 Reserved :16; /* */// UINT32 HAddrLen :16; /*硬件地址长度*///}802_3_LL2_S;#endif#endif /* __DRIVERS_NET_HISILICON_SF_REGSTRUCT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -