xref: /onnv-gate/usr/src/uts/common/io/hxge/hxge_fm.h (revision 7584:07b5a7770d5b)
16349Sqs148142 /*
26349Sqs148142  * CDDL HEADER START
36349Sqs148142  *
46349Sqs148142  * The contents of this file are subject to the terms of the
56349Sqs148142  * Common Development and Distribution License (the "License").
66349Sqs148142  * You may not use this file except in compliance with the License.
76349Sqs148142  *
86349Sqs148142  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96349Sqs148142  * or http://www.opensolaris.org/os/licensing.
106349Sqs148142  * See the License for the specific language governing permissions
116349Sqs148142  * and limitations under the License.
126349Sqs148142  *
136349Sqs148142  * When distributing Covered Code, include this CDDL HEADER in each
146349Sqs148142  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
156349Sqs148142  * If applicable, add the following below this CDDL HEADER, with the
166349Sqs148142  * fields enclosed by brackets "[]" replaced with your own identifying
176349Sqs148142  * information: Portions Copyright [yyyy] [name of copyright owner]
186349Sqs148142  *
196349Sqs148142  * CDDL HEADER END
206349Sqs148142  */
216349Sqs148142 /*
226349Sqs148142  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
236349Sqs148142  * Use is subject to license terms.
246349Sqs148142  */
256349Sqs148142 
266349Sqs148142 #ifndef	_SYS_HXGE_HXGE_FM_H
276349Sqs148142 #define	_SYS_HXGE_HXGE_FM_H
286349Sqs148142 
296349Sqs148142 #ifdef	__cplusplus
306349Sqs148142 extern "C" {
316349Sqs148142 #endif
326349Sqs148142 
336349Sqs148142 #include <sys/ddi.h>
346349Sqs148142 
356349Sqs148142 #define	ERNAME_DETAILED_ERR_TYPE	"detailed error type"
366349Sqs148142 #define	ERNAME_ERR_DCHAN		"dma channel number"
376349Sqs148142 #define	ERNAME_PFC_TCAM_ERR		"pfc tcam error"
386349Sqs148142 #define	ERNAME_PFC_VLAN_ERR		"pfc vlan table error"
396349Sqs148142 #define	ERNAME_PFC_PKT_DROP		"pfc pkt drop error"
406349Sqs148142 #define	ERNAME_RDMC_PAR_ERR_LOG		"rdmc parity error log"
416349Sqs148142 #define	ERNAME_RDC_ERR_TYPE		"completion error type"
426349Sqs148142 #define	ERNAME_TDC_PREF_PAR_LOG		"tdc pref par log"
436349Sqs148142 
446349Sqs148142 #define	EREPORT_FM_ID_SHIFT		16
456349Sqs148142 #define	EREPORT_FM_ID_MASK		0xFF
466349Sqs148142 #define	EREPORT_INDEX_MASK		0xFF
476349Sqs148142 #define	HXGE_FM_EREPORT_UNKNOWN		0
486349Sqs148142 
496349Sqs148142 #define	FM_SW_ID			0xFF
506349Sqs148142 #define	FM_VMAC_ID			VMAC_BLK_ID
516349Sqs148142 #define	FM_TXDMA_ID			TXDMA_BLK_ID
526349Sqs148142 #define	FM_RXDMA_ID			RXDMA_BLK_ID
536349Sqs148142 #define	FM_PFC_ID			PFC_BLK_ID
546349Sqs148142 #define	FM_PEU_ID			PEU_BLK_ID
556349Sqs148142 
566349Sqs148142 typedef	uint32_t hxge_fm_ereport_id_t;
576349Sqs148142 
586349Sqs148142 typedef	struct _hxge_fm_ereport_attr {
596349Sqs148142 	uint32_t		index;
606349Sqs148142 	char			*str;
616349Sqs148142 	char			*eclass;
626349Sqs148142 	ddi_fault_impact_t	impact;
636349Sqs148142 } hxge_fm_ereport_attr_t;
646349Sqs148142 
656349Sqs148142 /* VMAC ereports */
666349Sqs148142 typedef	enum {
67*7584SQiyan.Sun@Sun.COM 	HXGE_FM_EREPORT_VMAC_LINK_DOWN = (FM_VMAC_ID << EREPORT_FM_ID_SHIFT)
686349Sqs148142 } hxge_fm_ereport_vmac_t;
696349Sqs148142 
706349Sqs148142 /* PFC ereports */
716349Sqs148142 typedef	enum {
726349Sqs148142 	HXGE_FM_EREPORT_PFC_TCAM_PAR_ERR = (FM_PFC_ID << EREPORT_FM_ID_SHIFT),
736349Sqs148142 	HXGE_FM_EREPORT_PFC_VLAN_PAR_ERR,
746349Sqs148142 	HXGE_FM_EREPORT_PFC_PKT_DROP
756349Sqs148142 } hxge_fm_ereport_pfc_t;
766349Sqs148142 
776349Sqs148142 /* RDMC ereports */
786349Sqs148142 typedef	enum {
796349Sqs148142 	HXGE_FM_EREPORT_RDMC_RBR_CPL_TO = (FM_RXDMA_ID << EREPORT_FM_ID_SHIFT),
806349Sqs148142 	HXGE_FM_EREPORT_RDMC_PEU_RESP_ERR,
816349Sqs148142 	HXGE_FM_EREPORT_RDMC_RCR_SHA_PAR,
826349Sqs148142 	HXGE_FM_EREPORT_RDMC_RBR_PRE_PAR,
836349Sqs148142 	HXGE_FM_EREPORT_RDMC_RBR_PRE_EMPTY,
846349Sqs148142 	HXGE_FM_EREPORT_RDMC_RCR_SHA_FULL,
856349Sqs148142 	HXGE_FM_EREPORT_RDMC_RCRFULL,
866349Sqs148142 	HXGE_FM_EREPORT_RDMC_RBR_EMPTY,
876349Sqs148142 	HXGE_FM_EREPORT_RDMC_RBRFULL,
886349Sqs148142 	HXGE_FM_EREPORT_RDMC_RCR_ERR,
896349Sqs148142 	HXGE_FM_EREPORT_RDMC_CTRL_FIFO_DED,
906349Sqs148142 	HXGE_FM_EREPORT_RDMC_DATA_FIFO_DED,
916349Sqs148142 	HXGE_FM_EREPORT_RDMC_CTRL_FIFO_SEC,
926349Sqs148142 	HXGE_FM_EREPORT_RDMC_DATA_FIFO_SEC
936349Sqs148142 } hxge_fm_ereport_rdmc_t;
946349Sqs148142 
956349Sqs148142 typedef	enum {
966349Sqs148142 	HXGE_FM_EREPORT_TDMC_PEU_RESP_ERR =
976349Sqs148142 		(FM_TXDMA_ID << EREPORT_FM_ID_SHIFT),
986349Sqs148142 	HXGE_FM_EREPORT_TDMC_PKT_SIZE_HDR_ERR,
996349Sqs148142 	HXGE_FM_EREPORT_TDMC_RUNT_PKT_DROP_ERR,
1006349Sqs148142 	HXGE_FM_EREPORT_TDMC_PKT_SIZE_ERR,
1016349Sqs148142 	HXGE_FM_EREPORT_TDMC_TX_RNG_OFLOW,
1026349Sqs148142 	HXGE_FM_EREPORT_TDMC_PREF_PAR_ERR,
1036349Sqs148142 	HXGE_FM_EREPORT_TDMC_TDR_PREF_CPL_TO,
1046349Sqs148142 	HXGE_FM_EREPORT_TDMC_PKT_CPL_TO,
1056349Sqs148142 	HXGE_FM_EREPORT_TDMC_INVALID_SOP,
1066349Sqs148142 	HXGE_FM_EREPORT_TDMC_UNEXPECTED_SOP,
1076349Sqs148142 	HXGE_FM_EREPORT_TDMC_REORD_TBL_PAR,
1086349Sqs148142 	HXGE_FM_EREPORT_TDMC_REORD_BUF_DED
1096349Sqs148142 } hxge_fm_ereport_attr_tdmc_t;
1106349Sqs148142 
1116349Sqs148142 /* PEU ereports */
1126349Sqs148142 typedef	enum {
1136349Sqs148142 	HXGE_FM_EREPORT_PEU_ERR = (FM_PEU_ID << EREPORT_FM_ID_SHIFT),
1146349Sqs148142 	HXGE_FM_EREPORT_PEU_VNM_PIO_ERR
1156349Sqs148142 } hxge_fm_ereport_peu_t;
1166349Sqs148142 
1176349Sqs148142 typedef	enum {
1186349Sqs148142 	HXGE_FM_EREPORT_SW_INVALID_CHAN_NUM = (FM_SW_ID << EREPORT_FM_ID_SHIFT),
1196349Sqs148142 	HXGE_FM_EREPORT_SW_INVALID_PARAM
1206349Sqs148142 } hxge_fm_ereport_sw_t;
1216349Sqs148142 
1226349Sqs148142 
1236349Sqs148142 #ifdef	__cplusplus
1246349Sqs148142 }
1256349Sqs148142 #endif
1266349Sqs148142 
1276349Sqs148142 #endif	/* _SYS_HXGE_HXGE_FM_H */
128