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

📄 dot3ah.h

📁 在freescale 的ne64上开发的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
		UINT16 tpCfgResvd     :2;	    /*reserved, should be set to 0*/
		UINT16 tpStatLink     :1;     /*1-TP port link up, 0-Link down*/
		UINT16 tpStatDuplex   :1;     /*1-TP port link at full duplex, 0-half duplex*/
		UINT16 tpStatSpeed    :2;     /*00-TP port link at 10M
		                              01-TP port link at 100M
		                              10-TP port link at 1000M
		                              11-invalid*/
		UINT16 tpStatLoop     :1;     /*1-TP port check looped, 0-normal*/
 		UINT16 tpStatResvd    :3;     /*reserved, should be set to 0*/
	}Bits;
} UNION_RMT_TP_STAT;

typedef union
{
	UINT16 rmtFxStatVal;
	struct
	{
		UINT16 fxCfgAuto      :1;     /*1-FX port auto enable, 0-disable*/
		UINT16 fxCfgFEF       :1;     /*1-FX port FEF enable, 0-disable*/ 
		UINT16 fxCfgFlowCtrl  :1;     /*1-FX port flow control enable, 0-disable*/
		UINT16 fxCfgLoopChk   :1;     /*1-FX port loopback check enable, 0-disable*/
		UINT16 fxCfgResvd     :4;	    /*reserved, should be set to 0*/
		UINT16 fxStatLink     :1;     /*1-FX port link up, 0-Link down*/		
		UINT16 fxStatLoop     :1;     /*1-FX port check looped, 0-normal*/
		UINT16 fxStatResvd    :6;     /*reserved, should be set to 0*/
	}Bits;
} UNION_RMT_FX_STAT;

typedef union
{
	UINT16 rmtGlbStatVal;
	struct
	{
		UINT16 rmtCfgClose    :1;     /*1-remote close enable, 0-normal*/
		UINT16 rmtCfgCOS      :1;     /*1-remote COS enable, 0-disable*/
		UINT16 rmtCfgLFP      :1;     /*1-remote LFP enable, 0-disable*/
		UINT16 rmtCfgResvd    :5;     /*reserved, should be set to 0*/
		UINT16 rmtFirstPwrUp  :1;     /*1-remote is first power up, need to config,0-normal*/
		UINT16 rmtLoopStat    :1;     /*1-remote looped, 0-unlooped*/
		UINT16 rmtStatResvd   :6;     /*reserved, should be set to 0*/
	}Bits;
} UNION_RMT_GLB_STAT;
typedef union
{
	UINT16 rmtTpFxSpdLmtVal;
	struct
	{
		UINT16 rmtTpFxSpdLmtEn  :1;   /*1-rate limit enable, 0-ignore*/
		UINT16 rmtTpFxSpdLmtCnt :15;  /*rate limit value, 32K step, 0 to disable*/		
	}Bits;
} UNION_RMT_TP_FX_SPDLMT;

typedef union
{
	UINT16 rmtFxTpSpdLmtVal;
	struct
	{
		UINT16 rmtFxTpSpdLmtEn  :1;   /*1-rate limit enable, 0-ignore*/
		UINT16 rmtFxTpSpdLmtCnt :15;  /*rate limit value, 32K step, 0 to disable*/		
	}Bits;
} UNION_RMT_FX_TP_SPDLMT;

typedef union
{
	UINT16 rmtSpdLmtVal;
	struct
	{
		UINT16 rmtSpdLmtEn  :1;       /*1-rate limit enable, 0-ignore*/
		UINT16 rmtSpdLmt    :15;      /*rate limit value, 32K step, 0 to disable*/		
	}Bits;
} UNION_RMT_SPDLMT;

typedef union
{
	UINT8 rmtPktLmtCtrlVal;
	struct
	{
		UINT8 rmtTpFxBcastLmtEn  :1; /*1-BroadCast limit enable, 0-ignore*/
		UINT8 rmtTpFxBcastLmtdis :1; /*1-BroadCast limit disable, 0-ignore*/
		UINT8 rmtFxTpBcastLmtEn  :1; /*1-BroadCast limit enable, 0-ignore*/
		UINT8 rmtFxTpBcastLmtdis :1; /*1-BroadCast limit disable, 0-ignore*/
		UINT8 rmtTpFxMcastLmtEn  :1; /*1-MultiCast limit enable, 0-ignore*/
		UINT8 rmtTpFxMcastLmtdis :1; /*1-MultiCast limit disable, 0-ignore*/
		UINT8 rmtFxTpMcastLmtEn  :1; /*1-MultiCast limit enable, 0-ignore*/
		UINT8 rmtFxTpMcastLmtdis :1; /*1-MultiCast limit v, 0-ignore*/		
	}Bits;
} UNION_RMT_PKTLMT_CTRL;

typedef struct
{	
	UNION_RMT_PKTLMT_CTRL rmtPktLmtCtrl;	
	UINT8   rmtTpFxBcastLmt;        /*limit value, 512K step, 0 to disable*/
	UINT8   rmtFxTpBcastLmt;
	UINT8   rmtTpFxMcastLmt;
	UINT8   rmtFxTpMcastLmt;
}tRMT_PKTLMT_SET;

/*Specific orgnization TLVs definitions*/

/*remote config set request TLV*/
typedef struct 
{	
	UINT8   specTlvType;	        /*0x01*/
	UINT8   specTlvDataLen;         /*6*/
	UNION_RMT_GLB_CFG rmtGlbCfg;    /*remote global config, 2 bytes*/
	UNION_RMT_TP_CFG  rmtTpCfg;     /*remote TP port config, 2 bytes*/
	UNION_RMT_FX_CFG  rmtFxCfg;     /*remote Fiber port config, 2 bytes*/
}tSPEC_CFG_SET_REQ_TLV;

/*remote status get request TLV*/
typedef struct 
{	
	UINT8   specTlvType;	        /*0x02*/
	UINT8   specTlvDataLen;         /*0*/
}tSPEC_STAT_GET_REQ_TLV;

/*remote status get response TLV*/
typedef struct 
{	
	UINT8   specTlvType;            /*0x03*/
	UINT8   specTlvDataLen;         /*14*/
	UNION_RMT_GLB_STAT rmtGlbStat;  /*remote gloabl status, 2 bytes*/
	UNION_RMT_TP_STAT  rmtTpStat;   /*remote TP port config and status, 2 bytes*/
	UNION_RMT_FX_STAT  rmtFxStat;   /*remote Fiber port config and status, 2 bytes*/
	UINT16  rmtTpFxSpdLmt;          /*TP to FX port direction rate limit value, 0 means no limit*/
	UINT16  rmtFxTpSpdLmt;          /*FX to TP port direction rate limit value, 0 means no limit*/
	UINT8   rmtTpFxBcastLmt;        /*TP to FX port direction BCAST limit value, 0 means no limit*/
	UINT8   rmtFxTpBcastLmt;        /*FX to TP port direction BCAST limit value, 0 means no limit*/
	UINT8   rmtTpFxMcastLmt;        /*TP to FX port direction MCAST limit value, 0 means no limit*/
	UINT8   rmtFxTpMcastLmt;        /*FX to TP port direction MCAST limit value, 0 means no limit*/
}tSPEC_STAT_GET_RES_TLV;

/*remote rate limit get request TLV*/
typedef struct
{	
	UINT8   specTlvType;	        /*0x04*/
	UINT8   specTlvDataLen;         /*9*/
	UNION_RMT_SPDLMT rmtTpFxSpdLmt; /*remote TP to fiber port speed limit value, 2 bytes*/
	UNION_RMT_SPDLMT rmtFxTpSpdLmt; /*remote Fiber to TP port speed limit value, 2 bytes*/
	tRMT_PKTLMT_SET  rmtPktLmt;	    /*remote Broadcast and multicast limit value, 5 bytes*/
}tSPEC_RATELMT_SET_REQ_TLV;

/*remote rate limit get response TLV*/
typedef struct
{	
	UINT8   specTlvType;	        /*0x06*/
	UINT8   specTlvDataLen;         /*8*/
	UINT16  rmtTpFxSpdLmt;          /*TP to FX port direction rate limit value, 0 means no limit*/
	UINT16  rmtFxTpSpdLmt;          /*FX to TP port direction rate limit value, 0 means no limit*/
	UINT8   rmtTpFxBcastLmt;        /*TP to FX port direction BCAST limit value, 0 means no limit*/
	UINT8   rmtFxTpBcastLmt;        /*FX to TP port direction BCAST limit value, 0 means no limit*/
	UINT8   rmtTpFxMcastLmt;        /*TP to FX port direction MCAST limit value, 0 means no limit*/
	UINT8   rmtFxTpMcastLmt;        /*FX to TP port direction MCAST limit value, 0 means no limit*/
}tSPEC_RATELMT_GET_RES_TLV;

typedef union
{
	UINT8 rmtStatisticSubTypeVal;
	struct
	{
		#define RMT_STATISTIC_GET_TP  1
		#define RMT_STATISTIC_GET_FX  0
		
		UINT8 rmtStatisticGetPort  :1;               /*1-TP port, 0-Fiber port*/
		#define LOCAL_RXBYTES                    0x01 /*RxBytes(64bits)*/
		#define LOCAL_RXSPD_RXPKTS               0x02 /*RxSpeed & RxPkts*/
		#define LOCAL_RXUNI_RXMCSATPKTS          0x03 /*RxUniPkts & RxMultiCastPkts*/
		#define LOCAL_RXBCAST_RXDROPPKTS         0x04 /*RxBroadCastPkts & RxDropPkts*/
		#define LOCAL_RXERR_RXCRCPKTS            0x05 /*RxErrPkts & RxCRCAlignErrPkts*/
		#define LOCAL_RXFRAG_RXOVERSIZEPKTS      0x06 /*RxFragmentErrPkts & RxOverSizeErrPkts*/
		#define LOCAL_RXUNDERSIZE_RXJABBERPKTS   0x07 /*RxUnderSizeErrPkts & RxJabberErrPkts*/
		#define LOCAL_RXPAUSE_RX64BPKTS          0x08 /*RxPausePkts & Rx64BytesPkts*/
		#define LOCAL_RX65B127B_RX128B255BPKTS   0x09 /*Rx65-127Pkts & Rx128-255Pkts*/
		#define LOCAL_RX256B511B_RX512B1023BPKTS 0x0A /*Rx256-511Pkts & Rx512-1023Pkts*/
		#define LOCAL_RX1024B1522BPKTS           0x0B /*Rx1024-1522BytesPkts(32bits)*/
		#define LOCAL_TXBYTES                    0x0C /*TxBytes(64bits)*/
		#define LOCAL_TX_TXUNIPKTS               0x0D /*TxPkts & TxUniPkts*/
		#define LOCAL_TXMCAST_TXBCASTPKTS        0x0E /*TxMultiCastPkts & TxBroadCastPkts*/
		#define LOCAL_TXPAUSE_TXCOLPKTS          0x0F /*TxPausePkts & TxCollisionPkts*/
		#define LOCAL_TXLCOL_TXECOLPKTS          0x10 /*TxLateColPkts & TxExcessiveColPkts*/
		#define LOCAL_TXSCOL_TXMCOLPKTS          0x11 /*TxSigleColPkts & TxMultiColPkts*/
		#define LOCAL_TXDROPPKTS_TXSPD           0x12 /*TxDropPkts(32bits) & TxSpeed*/
		
		#define RMT_RXBYTES                    0x01 /*RxBytes(64bits)*/
		#define RMT_RXSPD_RXPKTS               0x02 /*RxSpeed & RxPkts*/
		#define RMT_RXUNI_RXMCSATPKTS          0x03 /*RxUniPkts & RxMultiCastPkts*/
		#define RMT_RXBCAST_RXDROPPKTS         0x04 /*RxBroadCastPkts & RxDropPkts*/
		#define RMT_RXERR_RXCRCPKTS            0x05 /*RxErrPkts & RxCRCAlignErrPkts*/
		#define RMT_RXFRAG_RXOVERSIZEPKTS      0x06 /*RxFragmentErrPkts & RxOverSizeErrPkts*/
		#define RMT_RXUNDERSIZE_RXJABBERPKTS   0x07 /*RxUnderSizeErrPkts & RxJabberErrPkts*/
		#define RMT_RXPAUSE_RX64BPKTS          0x08 /*RxPausePkts & Rx64BytesPkts*/
		#define RMT_RX65B127B_RX128B255BPKTS   0x09 /*Rx65-127Pkts & Rx128-255Pkts*/
		#define RMT_RX256B511B_RX512B1023BPKTS 0x0A /*Rx256-511Pkts & Rx512-1023Pkts*/
		#define RMT_RX1024B1522BPKTS           0x0B /*Rx1024-1522BytesPkts(32bits)*/
		#define RMT_TXBYTES                    0x0C /*TxBytes(64bits)*/
		#define RMT_TX_TXUNIPKTS               0x0D /*TxPkts & TxUniPkts*/
		#define RMT_TXMCAST_TXBCASTPKTS        0x0E /*TxMultiCastPkts & TxBroadCastPkts*/
		#define RMT_TXPAUSE_TXCOLPKTS          0x0F /*TxPausePkts & TxCollisionPkts*/
		#define RMT_TXLCOL_TXECOLPKTS          0x10 /*TxLateColPkts & TxExcessiveColPkts*/
		#define RMT_TXSCOL_TXMCOLPKTS          0x11 /*TxSigleColPkts & TxMultiColPkts*/
		#define RMT_TXDROPPKTS_TXSPD           0x12 /*TxDropPkts(32bits) & TxSpeed*/
		
		UINT8 rmtStatisticGetType  :7;               /*get statistics type*/		
	}Bits;
} UNION_RMT_STATISTIC_SUBTYPE;

/*remote statistic get request TLV*/
typedef struct
{	
	UINT8   specTlvType;           /*0x07*/
	UINT8   specTlvDataLen;        /*1*/
	UNION_RMT_STATISTIC_SUBTYPE  rmtStatisticSubType;
}tSPEC_STATISTIC_GET_REQ_TLV;

/*remote Rx&Tx_TP&FB statistic get request TLV*/
typedef struct
{	
	tSPEC_STATISTIC_GET_REQ_TLV rmtStatisticTPRx;
	tSPEC_STATISTIC_GET_REQ_TLV rmtStatisticTPTx;
	tSPEC_STATISTIC_GET_REQ_TLV rmtStatisticFBRx;
	tSPEC_STATISTIC_GET_REQ_TLV rmtStatisticFBTx;

}tSPEC_STATISTIC_GET_MULTI_TLV;

/*remote statistic get response TLV*/
typedef struct
{	
	UINT8   specTlvType;           /*0x08*/
	UINT8   specTlvDataLen;        /*9*/
	UNION_RMT_STATISTIC_SUBTYPE  rmtStatisticSubType;
	UINT32  rmtStatHigh_First;     /*the first 32 bits value or high 32 bits of 64 bits value*/
	UINT32  rmtStatLow_Second;     /*the second 32 bits value or low 32 bits of 64 bits value*/	
}tSPEC_STATISTIC_GET_RES_TLV;

typedef union
{
	UINT8 rmtRegRwCtrlVal;
	struct
	{
		UINT8 rmtRegRW        :1;   /*1-write remote register, 0-read*/

		#define RMT_REG_SW   0x01  /*rmtRegType, read switch reg*/
		#define RMT_REG_PHY  0x02  /*PHY register*/
		#define RMT_REG_CPU  0x03  /*CPU register*/
		
		UINT8 rmtRegType      :7;   /*remote reg type*/		
	}Bits;
} UNION_RMT_REG_RW_CTRL;

/*remote register read&write request and response TLV*/
typedef struct
{	
	UINT8   specTlvType;          /*0x09 for REQ, 0x0A for RES*/
	UINT8   specTlvDataLen;	      /*7*/
	UNION_RMT_REG_RW_CTRL rmtRegSubType;
	UINT16  rmtRegAddr;
	UINT32  rmtRegVal;
}tSPEC_REG_RW_TLV;



/*remote fx info get request TLV*/
typedef struct 
{	
	UINT8   specTlvType;	        /*0x0B*/
	UINT8   specTlvDataLen;         /*0*/
}tSPEC_FX_INFO_GET_REQ_TLV;

/*remote fx info get response TLV*/
typedef struct 
{	
	UINT8   specTlvType;	        /*0x0C*/
	UINT8   specTlvDataLen;         /*18*/
	UINT8   rmtPort1Type;           /*0-TP port, 1-two fiber, 2-single fiber*/
	UINT8   rmtPort1Mode;           /*0-unknown, 1-multi mode, 2-single mode, 3-CWDM wave*/
	UINT8   rmtPort1Cnctr;          /*0-unknown, 1-sc, 2-fc, 3-st, 4-lc*/
	UINT16  rmtPort1Distance;       /*0-unknown, when distance>150, unit is m, else unit is km*/
	UINT16  rmtPort1TxWaveLen;      /*0-unknown*/
	UINT16  rmtPort1RxWaveLen;      /*0-unknown*/
	UINT8   rmtPort2Type;           /*0-TP port, 1-two fiber, 2-single fiber*/
	UINT8   rmtPort2Mode;           /*0-unknown, 1-multi mode, 2-single mode, 3-CWDM wave*/
	UINT8   rmtPort2Cnctr;          /*0-unknown, 1-sc, 2-fc, 3-st, 4-lc*/
	UINT16  rmtPort2Distance;       /*0-unknown, when distance>150, unit is m, else unit is km*/
	UINT16  rmtPort2TxWaveLen;      /*0-unknown*/
	UINT16  rmtPort2RxWaveLen;      /*0-unknown*/
}tSPEC_FX_INFO_GET_RES_TLV;

extern void dot3ah_init(void);
extern void dot3ah_discovery(void);
extern void dot3ah_send_info(void);
extern STATUS dot3ah_send_spec(void *buf, UINT16 len);
extern void process_dot3ah_oam(struct ethernet_frame* frame);
extern void dot3ahOAMMacAddrSet(UINT16 pbm);
extern void process_oam_spec_tlv(UINT8* working_ptr, UINT16 dataLen);
extern UINT8 dot3ah_port_set(UINT8 port);
extern UINT8 dot3ah_port_get(UINT8 *port);
extern UINT8 dot3ah_enable_set(UINT8 enable);
extern UINT8 dot3ah_enable_get(UINT8 *enable);
#endif

⌨️ 快捷键说明

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