📄 sf_regstruct.h
字号:
/************************************************************************ * * * SF_regstruct * * * * Project Code: SD592DRIVER * * Create Date: 2005/01/03 * * Author: TANGBENBING * * Modify Date: * * Document: * * Function: * * Others: * *----------------------------------------------------------------------* * * * Copyright 2004-2005 SD592 Team Shenzhen HuaWei Tech, Inc. * * ALL RIGHTS RESERVED * * * ************************************************************************/#include "SF_TypeDef.h"#ifndef __DRIVERS_NET_HISILICON_SF_REGSTRUCT_H #define __DRIVERS_NET_HISILICON_SF_REGSTRUCT_H /***************************************************//* Frame head structure (Create as small endian)*//***************************************************/typedef struct { UINT32 DMACH32 :32; UINT32 SMACH16 :16; UINT32 DMACL16 :16; UINT32 SMACL32 :32; UINT32 VER_TOS :16; UINT32 TYPE :16; UINT32 FlagID :16; UINT32 PackageLength :16; UINT32 Protocol :16; UINT32 PortMac1 :2; UINT32 PortMac2 :3; UINT32 PortMac3 :4;}EthernetFrameHead_S;/***********************************************************//*soft deal with the tcp frame*/#ifdef SoftAvoidTCPError/*TCP From down port div frame form content structure(big endian)*//*64 depth of the form*/struct TCPDivDport_S{ UINT32 new_id; /*frame new id 16bits*/ UINT32 old_id; /*frame old id 16bits*/ UINT32 src_ip; /*frame source ip 32bits*/ UINT32 AgingTime; /*aging time 15bits*/ UINT32 vld; /*form enable*/ struct TCPDivDport_S *Next;};/*TCP From up port div frame form content structure(big endian)*//*64 depth of the form*/struct TCPDivUport_S{ UINT32 out_port; /*frame destination port number 16bits*/ UINT32 protocol; /*frame protocol 8bits*/ UINT32 id; /*frame id 16bits*/ UINT32 src_ip; /*frame source ip 32bits*/ UINT32 AgingTime; /*aging time 7bits*/ UINT32 vld; /*form enable*/ struct TCPDivUport_S *Next;};#endif/***********************//*NAT control register*//*the fdiv_ctrl,fpm_ctrl ,fim_ctrl 在default 控制为1的时候才有效*/typedef union{ struct { UINT32 down_fdiv_ctrl :1; /*下行口,查找分片表失败帧转发控制,1到cpu0丢;低位下行口*/ UINT32 up_fdiv_ctrl :1; /*上行口,查找分片表失败帧转发控制,1到cpu0丢;低位下行口*/ UINT32 down_fpm_ctrl :1; /*下行口,查找端口映射表失败帧转发控制,1到cpu0丢;低位下行口*/ UINT32 up_fpm_ctrl :1; /*上行口,查找端口映射表失败帧转发控制,1到cpu0丢;低位下行口*/ UINT32 fim_ctrl :1; /*查找IPMAC表失败帧转发控制,1到cpu0丢;低位下行口*/ UINT32 down_dis_frag :1; /*下行口,分片报文处理禁止使能,1禁止就发到cpu,0 SF处理分片报文低位下行口*/ UINT32 up_dis_frag :1; /*上行口,分片报文处理禁止使能,1禁止就发到cpu,0 SF处理分片报文低位下行口*/ UINT32 down_nmip_ctrl :1; /*下行口,普通IP报文(非tcp、udp)处理控制,1发cpu,0 丢,低位下行口*/ UINT32 up_nmip_ctrl :1; /*上行口,普通IP报文(非tcp、udp)处理控制,1发cpu,0 丢,低位下行口*/ UINT32 reserved :23; /* */ }bits ; UINT32 w32 ;}NATControl_U;/*ARP queue structure*/struct DARP_S{ UINT32 AgingTime; /*老化时间*/ UINT32 SProtocol; /*sourse protocol*/ UINT32 SPort; /*Sourse port No*/ UINT32 SIP ; /*sourse ip*/ UINT32 DIP ; /*数据包的目的IP地址*/ UINT32 FrameType; /*frame type of the 5 kinds*/ UINT32 ARPContent[(PKTLength+3)/4]; struct DARP_S *Next;};struct UPort_DivMes_S{ UINT32 DivFail0; UINT32 DivFail1; UINT32 DivFail2;};/*Div package queue structure*/struct S_DivPKT{ UINT32 AgingTime; /*老化时间*/ UINT32 IDAndProt; /*分片报文标志和协议类型*/ UINT32 SourceIP; /*分片报文源IP地址*/ UINT32 Outside_port; /*目的端口号ID*/ UINT32 DivPackageLength; /*分片包的长度*/ UINT32 DivContent[(PKTLength+3)/4]; struct S_DivPKT *Next;};/*#package(1)*//*来自上行口的端口映射表(port-mac form)结构体*/typedef struct { UINT32 PortMac0; UINT32 PortMac1; UINT32 PortMac2; UINT32 PortMac3;}UPort_PortMAC_S;/*Define the MAC_DIO Register for switch fabric registers*/ /*设置帧结构的寄存器*/typedef union{ struct { UINT32 para :16; /*输出流控帧间隔参数,缺省为16'h1fff*/ UINT32 ipg :7; /*帧间隙,缺省为96*/ UINT32 pre_cnt_limit :3; /*连续检测到帧前导码的个数,缺省为3*/ UINT32 reserved :6; /* */ }bits ; UINT32 w32 ;}Frame_Para_U;/*设置端口设定状态选择信息寄存器*/typedef union{ struct { UINT32 stat_ctrl :4; /*端口状态信息选择控制寄存器,bit3~2对应端口1,bit1~0对应端口0:*/ /*2'b10:使用CPU设定的状态信息*/ /*其他: 使用从MDIO接口获得的状态信息*/ /*缺省为00*/ UINT32 reserved :28; /* */ }bits ; UINT32 w32 ;}Port_Stat_Choice_U;/*端口软件复位寄存器*/typedef union{ struct { UINT32 reset_down_port :1; /*下行端口复位,缺省为1'b0,1有效*/ UINT32 reset_up_port :1; /*下行端口复位,缺省为1'b0,1有效*/ UINT32 reserved :30; /* */ }bits ; UINT32 w32 ;}Port_Reset_U;/*CPU设定端口速度、链接、双工寄存器*/typedef union{ struct { UINT32 down_duplex_stat_dio :1; /*CPU设定下行口双工模式,缺省为0*/ UINT32 up_duplex_stat_dio :1; /*CPU设定上行口双工模式,缺省为0*/ UINT32 down_link_stat_dio :1; /*CPU设定下行口链接状态,缺省为0*/ UINT32 up_link_stat_dio :1; /*CPU设定上行口链接状态,缺省为0*/ UINT32 down_speed_stat_dio :1; /*CPU设定下行口速度模式,缺省为0*/ UINT32 up_speed_stat_dio :1; /*CPU设定上行口速度模式,缺省为0*/ UINT32 reserved :26; /* */ }bits ; UINT32 w32 ;}Set_CPUSpeLinDup_U;/*端口的速度、链接、双工状态改变标志寄存器*/typedef union{ struct { UINT32 down_duplex_stat_ch :1; /*下行口双工模式改变标志位*/ UINT32 up_duplex_stat_ch :1; /*上行口双工模式改变标志位*/ UINT32 down_link_stat_ch :1; /*下行口链接状态改变标志位*/ UINT32 up_link_stat_ch :1; /*上行口链接状态改变标志位*/ UINT32 down_speed_stat_ch :1; /*下行口速度模式改变标志位*/ UINT32 up_speed_stat_ch :1; /*上行口速度模式改变标志位*/ UINT32 reserved :26; /* */ }bits ; UINT32 w32 ;}Changed_SpeLinDup_U;/*MAC0_DIO*//*端口0、1的端口配置寄存器*/typedef union{ struct { UINT32 len_max :11; /*端口允许接收的最大帧长,缺省为1518 */ UINT32 rx_min_thr :6; /*端口允许接收的最小帧长,缺省为42 */ UINT32 rx_shframe_en :1; /*端口短帧接收使能信号,缺省为1 */ UINT32 pause_en :1; /*端口流控帧发送使能信号,缺省为1 */ UINT32 ex_loop_en :1; /*端口外环回使能信号 */ UINT32 in_loop_en :1; /*端口内环回使能信号 */ UINT32 colthreshold :4; /*冲突次数统计,缺省为1,表示发送出现一次冲突的帧的个数*/ UINT32 cntr_roll_dis :1; /*端口统计计数环回使能信号,缺省为0 */ UINT32 cntr_clr_all :1; /*端口统计计数器清空信号,缺省为0 */ UINT32 cntr_rdclr_en :1; /*端口统计计数器读清空使能信号,缺省为0 */ UINT32 crcgen_dis :1; /*CRC生成禁止控制寄存器,1表示输出帧不计算CRC,缺省为0 */ UINT32 txcrc_bad :1; /*发送CRC错帧计数器 */ UINT32 crc_rx :1; /*接收帧CRC错指示,1有效 */ UINT32 reserved :1; /* */ }bits ; UINT32 w32 ;}Port_Conf_U;/*端口0、1计数器计数值保存寄存器*/typedef union{ struct { UINT32 txcrcbad_cnt :4; /*发送CRC校验错误计数 */ UINT32 txcrcok_cnt :4; /*发送CRC校验正确计数 */ UINT32 txeof_cnt :4; /*发送帧尾计数 */ UINT32 txsof_cnt :4; /*发送帧头计数 */ UINT32 rxcrcbad_cnt :4; /*接收到CRC校验错误计数*/ UINT32 rxcrcok_cnt :4; /*接收到CRC校验正确计数*/ UINT32 rxeof_cnt :4; /*接收到帧尾计数 */ UINT32 rxsof_cnt :4; /*接收到帧头计数 */ }bits ; UINT32 w32 ;}Port_Count_U; /*端口0、1接收帧计数寄存器*/typedef union { struct { UINT32 cntr_stat_rx :30; /*端口接收统计计数半满指示信号*/ UINT32 reserved :2; /* */ }bits ; UINT32 w32 ;}Port_Rec_Cnt_U;/*端口0、1发送帧计数寄存器*/typedef union { struct { UINT32 cntr_stat_tx :30; /*端口发送统计计数半满指示信号*/ UINT32 reserved :2; /* */ }bits ; UINT32 w32 ;}Port_Tra_Cnt_U;/*MDIO_DIO*//*PHY芯片配置寄存器*/typedef union { struct { UINT32 phy_inaddr :5; /*对外部操作的PHY的内部地址。PHY内部有32个寄存器。用5位二进制数来表示。缺省为0*/ UINT32 frq_dv :3; /*对外部PHY进行读写操作时,对MDC的分频系数。3位,*/ /*用来实现对MDIO的分频值从2分频至16分频。缺省为0*/ UINT32 phy_exaddr :5; /*对外部操作的PHY的对应的外部物理地址。*/ /*一个MDIO可以对外面的27个PHY进行读写访问。每个PHY有一个相应的地址。缺省为0*/ UINT32 rw :1; /*用来表示对PHY的访问为读操作还是写操作。高表示写操作,低为读操作。*/ UINT32 reserved :1; /* */ UINT32 finish :1; /*完成对PHY的读/写操作后,会置1。当要进行第二次读写操作时,*/ /*CPU会先对该位进行写清零。缺省为1 */ UINT32 cpu_data_in:16; /*用于MDIO模块对PHY进行对写操作的数据寄存器,进行写操作时,*/ /*CPU将要对MDIO写入的16数据先写入到该寄存器中。 */ }bits ; UINT32 w32 ;}PHY_Conf_U;/*PHY上供读取的数据保存寄存器,只读*/typedef union { struct { UINT32 cpu_data_out :16; /*用于MDIO模块对PHY进行对读操作的数据寄存器,*/ /*将从PHY读取的16位数据将写入到该寄存器中。*/ UINT32 reserved :16; /* */ }bits ; UINT32 w32 ;}Read_PHY_Data_U;/*设置PHY地址寄存器*/typedef union { struct { UINT32 phy_addr0 :5; /*PHY0的外部物理地址,缺省为5'd0*/ UINT32 phy_addr1 :5; /*PHY1的外部物理地址,缺省为5'd1*/ UINT32 reserved :22; /* */ }bits ; UINT32 w32 ;}Set_phy_addr_U;/*PHY中速度、链接、双工模式的保存寄存器*/typedef union { struct { UINT32 down_duplex_mdio2mac :1; /*从MDIO接口得到的端口双工工作状态,处于半双工或全双工方式。*/ UINT32 up_duplex_mdio2mac :1; /*1为全双工方式。以bitmap的形式,每一位对应一个端口。 */ UINT32 down_link_mdio2mac :1; /*从MDIO接口得到的链接状态指示。1为链接状态,0为未链接状态。*/ UINT32 up_link_mdio2mac :1; /*以bitmap的形式,每一位对应一个端口。 */ UINT32 down_speed_mdio2mac :1; /*从MDIO接口得到的端口速度工作状态,处于10M或100M方式。*/ UINT32 up_speed_mdio2mac :1; /*1为100M工作方式,0为10M方式。以bitmap的形式,每一位对应一个端口。*/ UINT32 reserved :26; /* */ }bits ; UINT32 w32 ;}PHY_Read_SpeLinDup_U;#if defined(CONFIG_HISILICON_SF_V001)/*PHY芯片状态寄存器所在地址的配置寄存器*/typedef union { struct { UINT32 duplex_index :4; /*PHY芯片状态寄存器中存储双工信息的偏移地址,缺省值按照Intel9785设置*/ UINT32 link_index :4; /*PHY芯片状态寄存器中存储链接信息的偏移地址,缺省值按照Intel9785设置*/ UINT32 speed_index :4; /*PHY芯片状态寄存器中存储速度信息的偏移地址,缺省值按照Intel9785设置*/ UINT32 internal_addr :5; /*PHY芯片存储状态信息(速度、链接和双工)的寄存器地址,*/ /*缺省值按照Intel 9785设置(待更新,应与SD592PHY芯片一致)*/ UINT32 reserved :15; /* */ }bits ; UINT32 w32 ;}PHY_Stat_Addr_U;#elif defined(CONFIG_HISILICON_SF_V002)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -