1*82527734SSukumar Swaminathan /*
2*82527734SSukumar Swaminathan  * CDDL HEADER START
3*82527734SSukumar Swaminathan  *
4*82527734SSukumar Swaminathan  * The contents of this file are subject to the terms of the
5*82527734SSukumar Swaminathan  * Common Development and Distribution License (the "License").
6*82527734SSukumar Swaminathan  * You may not use this file except in compliance with the License.
7*82527734SSukumar Swaminathan  *
8*82527734SSukumar Swaminathan  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*82527734SSukumar Swaminathan  * or http://www.opensolaris.org/os/licensing.
10*82527734SSukumar Swaminathan  * See the License for the specific language governing permissions
11*82527734SSukumar Swaminathan  * and limitations under the License.
12*82527734SSukumar Swaminathan  *
13*82527734SSukumar Swaminathan  * When distributing Covered Code, include this CDDL HEADER in each
14*82527734SSukumar Swaminathan  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*82527734SSukumar Swaminathan  * If applicable, add the following below this CDDL HEADER, with the
16*82527734SSukumar Swaminathan  * fields enclosed by brackets "[]" replaced with your own identifying
17*82527734SSukumar Swaminathan  * information: Portions Copyright [yyyy] [name of copyright owner]
18*82527734SSukumar Swaminathan  *
19*82527734SSukumar Swaminathan  * CDDL HEADER END
20*82527734SSukumar Swaminathan  */
21*82527734SSukumar Swaminathan 
22*82527734SSukumar Swaminathan /*
23*82527734SSukumar Swaminathan  * Copyright 2009 Emulex.  All rights reserved.
24*82527734SSukumar Swaminathan  * Use is subject to license terms.
25*82527734SSukumar Swaminathan  */
26*82527734SSukumar Swaminathan 
27*82527734SSukumar Swaminathan #ifndef _EMLXS_EVENTS_H
28*82527734SSukumar Swaminathan #define	_EMLXS_EVENTS_H
29*82527734SSukumar Swaminathan 
30*82527734SSukumar Swaminathan #ifdef	__cplusplus
31*82527734SSukumar Swaminathan extern "C" {
32*82527734SSukumar Swaminathan #endif
33*82527734SSukumar Swaminathan 
34*82527734SSukumar Swaminathan extern void emlxs_null_func();
35*82527734SSukumar Swaminathan 
36*82527734SSukumar Swaminathan #ifdef DEF_EVENT_STRUCT
37*82527734SSukumar Swaminathan 
38*82527734SSukumar Swaminathan #define	DEFINE_EVT(_name, _label, _mask, _timeout, _destroy) \
39*82527734SSukumar Swaminathan 	extern void _destroy(); \
40*82527734SSukumar Swaminathan 	emlxs_event_t _name = {_mask, _label, _timeout, _destroy};
41*82527734SSukumar Swaminathan 
42*82527734SSukumar Swaminathan #else
43*82527734SSukumar Swaminathan 
44*82527734SSukumar Swaminathan #define	DEFINE_EVT(_name, _label, _mask, _timeout, _destroy) \
45*82527734SSukumar Swaminathan 	extern void _destroy(); \
46*82527734SSukumar Swaminathan 	extern emlxs_event_t _name;
47*82527734SSukumar Swaminathan 
48*82527734SSukumar Swaminathan #endif	/* DEF_EVENT_STRUCT */
49*82527734SSukumar Swaminathan 
50*82527734SSukumar Swaminathan 
51*82527734SSukumar Swaminathan /* Event Mask Bits */
52*82527734SSukumar Swaminathan #define	EVT_LINK		0x00000001	/* FC_REG_LINK_EVENT */
53*82527734SSukumar Swaminathan #define	EVT_RSCN		0x00000002	/* FC_REG_RSCN_EVENT */
54*82527734SSukumar Swaminathan #define	EVT_CT			0x00000004	/* FC_REG_CT_EVENT   */
55*82527734SSukumar Swaminathan #define	EVT_MPULSE		0x00000008	/* FC_REG_MULTIPULSE_EVENT */
56*82527734SSukumar Swaminathan #define	EVT_DUMP		0x00000010	/* FC_REG_DUMP_EVENT */
57*82527734SSukumar Swaminathan #define	EVT_TEMP		0x00000020	/* FC_REG_TEMP_EVENT */
58*82527734SSukumar Swaminathan #define	EVT_VPORTRSCN		0x00000040	/* FC_REG_VPORTRSCN_EVENT */
59*82527734SSukumar Swaminathan #define	EVT_ASYNC		0x00000080	/* FC_REG_ASYNC_EVENT */
60*82527734SSukumar Swaminathan 
61*82527734SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
62*82527734SSukumar Swaminathan #define	EVT_SD_ELS		0x00001000	/* FC_REG_SD_ELS_EVENT */
63*82527734SSukumar Swaminathan #define	EVT_SD_FABRIC		0x00002000	/* FC_REG_SD_FABRIC_EVENT */
64*82527734SSukumar Swaminathan #define	EVT_SD_SCSI		0x00004000	/* FC_REG_SD_SCSI_EVENT */
65*82527734SSukumar Swaminathan #define	EVT_SD_BOARD		0x00008000	/* FC_REG_SD_BOARD_EVENT */
66*82527734SSukumar Swaminathan #endif /* SAN_DIAG_SUPPORT */
67*82527734SSukumar Swaminathan 
68*82527734SSukumar Swaminathan #define	EVT_FCOE		0x80000000	/* FC_REG_FCOE_EVENT */
69*82527734SSukumar Swaminathan 
70*82527734SSukumar Swaminathan 
71*82527734SSukumar Swaminathan typedef struct emlxs_event
72*82527734SSukumar Swaminathan {
73*82527734SSukumar Swaminathan 	uint32_t	mask;
74*82527734SSukumar Swaminathan 	char		label[64];
75*82527734SSukumar Swaminathan 	uint32_t 	timeout;
76*82527734SSukumar Swaminathan 	void		(*destroy)();
77*82527734SSukumar Swaminathan 
78*82527734SSukumar Swaminathan } emlxs_event_t;
79*82527734SSukumar Swaminathan 
80*82527734SSukumar Swaminathan 
81*82527734SSukumar Swaminathan #define	EMLXS_EVENT_PERIOD	5
82*82527734SSukumar Swaminathan #define	EVT_TIMEOUT_DEFAULT	60
83*82527734SSukumar Swaminathan #define	EVT_TIMEOUT_NEVER	0
84*82527734SSukumar Swaminathan #define	EVT_DESTROY_DEFAULT	emlxs_null_func
85*82527734SSukumar Swaminathan 
86*82527734SSukumar Swaminathan 
87*82527734SSukumar Swaminathan /* EVENT defines */
88*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_link_event, \
89*82527734SSukumar Swaminathan 	"LINK", \
90*82527734SSukumar Swaminathan 	EVT_LINK,
91*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
92*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
93*82527734SSukumar Swaminathan 
94*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_rscn_event, \
95*82527734SSukumar Swaminathan 	"RSCN", \
96*82527734SSukumar Swaminathan 	EVT_RSCN,
97*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
98*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
99*82527734SSukumar Swaminathan 
100*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_vportrscn_event, \
101*82527734SSukumar Swaminathan 	"VPORT RSCN", \
102*82527734SSukumar Swaminathan 	EVT_VPORTRSCN,
103*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
104*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
105*82527734SSukumar Swaminathan 
106*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_ct_event, \
107*82527734SSukumar Swaminathan 	"CT", \
108*82527734SSukumar Swaminathan 	EVT_CT,
109*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
110*82527734SSukumar Swaminathan 	emlxs_ct_event_destroy)
111*82527734SSukumar Swaminathan 
112*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_dump_event, \
113*82527734SSukumar Swaminathan 	"DUMP", \
114*82527734SSukumar Swaminathan 	EVT_DUMP,
115*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
116*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
117*82527734SSukumar Swaminathan 
118*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_temp_event, \
119*82527734SSukumar Swaminathan 	"TEMP", \
120*82527734SSukumar Swaminathan 	EVT_TEMP,
121*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
122*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
123*82527734SSukumar Swaminathan 
124*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_fcoe_event, \
125*82527734SSukumar Swaminathan 	"FCOE", \
126*82527734SSukumar Swaminathan 	EVT_FCOE,
127*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
128*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
129*82527734SSukumar Swaminathan 
130*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_async_event, \
131*82527734SSukumar Swaminathan 	"ASYNC", \
132*82527734SSukumar Swaminathan 	EVT_ASYNC,
133*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
134*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
135*82527734SSukumar Swaminathan 
136*82527734SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
137*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_sd_els_event, \
138*82527734SSukumar Swaminathan 	"SD_ELS", \
139*82527734SSukumar Swaminathan 	EVT_SD_ELS,
140*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
141*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
142*82527734SSukumar Swaminathan 
143*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_sd_fabric_event, \
144*82527734SSukumar Swaminathan 	"SD_FC", \
145*82527734SSukumar Swaminathan 	EVT_SD_FABRIC,
146*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
147*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
148*82527734SSukumar Swaminathan 
149*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_sd_scsi_event, \
150*82527734SSukumar Swaminathan 	"SD_SCSI", \
151*82527734SSukumar Swaminathan 	EVT_SD_SCSI,
152*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
153*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
154*82527734SSukumar Swaminathan 
155*82527734SSukumar Swaminathan DEFINE_EVT(emlxs_sd_board_event, \
156*82527734SSukumar Swaminathan 	"SD_BOARD", \
157*82527734SSukumar Swaminathan 	EVT_SD_BOARD,
158*82527734SSukumar Swaminathan 	EVT_TIMEOUT_DEFAULT,
159*82527734SSukumar Swaminathan 	EVT_DESTROY_DEFAULT)
160*82527734SSukumar Swaminathan #endif /* SAN_DIAG_SUPPORT */
161*82527734SSukumar Swaminathan 
162*82527734SSukumar Swaminathan #ifdef	__cplusplus
163*82527734SSukumar Swaminathan }
164*82527734SSukumar Swaminathan #endif
165*82527734SSukumar Swaminathan 
166*82527734SSukumar Swaminathan #endif	/* _EMLXS_EVENTS_H */
167