emlxs_fcf.h (a9800beb) emlxs_fcf.h (8f23e9fa)
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
8 * You can obtain a copy of the license at
9 * http://www.opensource.org/licenses/cddl1.txt.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Copyright 2010 Emulex. All rights reserved.
23 * Copyright (c) 2004-2012 Emulex. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _EMLXS_FCF_H
28#define _EMLXS_FCF_H
29
30#ifdef __cplusplus
31extern "C" {

--- 11 unchanged lines hidden (view full) ---

43#define FCF_EVENT_LINKDOWN 3
44#define FCF_EVENT_CVL 4
45#define FCF_EVENT_FCFTAB_FULL 5
46#define FCF_EVENT_FCF_FOUND 6
47#define FCF_EVENT_FCF_LOST 7
48#define FCF_EVENT_FCF_CHANGED 8
49
50/* Internal async events */
24 * Use is subject to license terms.
25 */
26
27#ifndef _EMLXS_FCF_H
28#define _EMLXS_FCF_H
29
30#ifdef __cplusplus
31extern "C" {

--- 11 unchanged lines hidden (view full) ---

43#define FCF_EVENT_LINKDOWN 3
44#define FCF_EVENT_CVL 4
45#define FCF_EVENT_FCFTAB_FULL 5
46#define FCF_EVENT_FCF_FOUND 6
47#define FCF_EVENT_FCF_LOST 7
48#define FCF_EVENT_FCF_CHANGED 8
49
50/* Internal async events */
51#define FCF_EVENT_FCFI_ONLINE 9
52#define FCF_EVENT_FCFI_OFFLINE 10
53#define FCF_EVENT_FCFI_PAUSE 11
51#define FCF_EVENT_FCFTAB_ONLINE 9
52#define FCF_EVENT_FCFTAB_OFFLINE 10
54
53
55#define FCF_EVENT_VFI_ONLINE 12
56#define FCF_EVENT_VFI_OFFLINE 13
57#define FCF_EVENT_VFI_PAUSE 14
54#define FCF_EVENT_FCFI_ONLINE 11
55#define FCF_EVENT_FCFI_OFFLINE 12
56#define FCF_EVENT_FCFI_PAUSE 13
58
57
59#define FCF_EVENT_VPI_ONLINE 15
60#define FCF_EVENT_VPI_OFFLINE 16
61#define FCF_EVENT_VPI_PAUSE 17
58#define FCF_EVENT_VFI_ONLINE 14
59#define FCF_EVENT_VFI_OFFLINE 15
60#define FCF_EVENT_VFI_PAUSE 16
62
61
63#define FCF_EVENT_RPI_ONLINE 18
64#define FCF_EVENT_RPI_OFFLINE 19
65#define FCF_EVENT_RPI_PAUSE 20
66#define FCF_EVENT_RPI_RESUME 21
62#define FCF_EVENT_VPI_ONLINE 17
63#define FCF_EVENT_VPI_OFFLINE 18
64#define FCF_EVENT_VPI_PAUSE 19
67
65
66#define FCF_EVENT_RPI_ONLINE 20
67#define FCF_EVENT_RPI_OFFLINE 21
68#define FCF_EVENT_RPI_PAUSE 22
69#define FCF_EVENT_RPI_RESUME 23
70
68/* State change reason codes */ /* explan */
69#define FCF_REASON_NONE 0
70#define FCF_REASON_REENTER 1
71#define FCF_REASON_EVENT 2 /* evt */
72#define FCF_REASON_REQUESTED 3
73#define FCF_REASON_NO_MBOX 4
74#define FCF_REASON_NO_BUFFER 5
75#define FCF_REASON_SEND_FAILED 6 /* status */
76#define FCF_REASON_MBOX_FAILED 7 /* status */
71/* State change reason codes */ /* explan */
72#define FCF_REASON_NONE 0
73#define FCF_REASON_REENTER 1
74#define FCF_REASON_EVENT 2 /* evt */
75#define FCF_REASON_REQUESTED 3
76#define FCF_REASON_NO_MBOX 4
77#define FCF_REASON_NO_BUFFER 5
78#define FCF_REASON_SEND_FAILED 6 /* status */
79#define FCF_REASON_MBOX_FAILED 7 /* status */
77#define FCF_REASON_NO_FCFI 8
78#define FCF_REASON_NO_VFI 9
79#define FCF_REASON_ONLINE_FAILED 10
80#define FCF_REASON_OFFLINE_FAILED 11
81#define FCF_REASON_OP_FAILED 12 /* attempts */
82#define FCF_REASON_NO_PKT 13
83#define FCF_REASON_NO_NODE 14
84#define FCF_REASON_NOT_ALLOWED 15
80#define FCF_REASON_MBOX_BUSY 8 /* status */
81#define FCF_REASON_NO_FCFI 9
82#define FCF_REASON_NO_VFI 10
83#define FCF_REASON_ONLINE_FAILED 11
84#define FCF_REASON_OFFLINE_FAILED 12
85#define FCF_REASON_OP_FAILED 13 /* attempts */
86#define FCF_REASON_NO_PKT 14
87#define FCF_REASON_NO_NODE 15
88#define FCF_REASON_NOT_ALLOWED 16
89#define FCF_REASON_UNUSED 17
90#define FCF_REASON_INVALID 18
85
86typedef struct XRIobj
87{
88 struct XRIobj *_f;
89 struct XRIobj *_b;
90 uint16_t XRI;
91 uint16_t state;
92#define XRI_STATE_FREE 0
93#define XRI_STATE_ALLOCATED 1
94
95 uint16_t sge_count;
96 uint16_t iotag;
97 MBUF_INFO SGList;
98 struct RPIobj *rpip;
91
92typedef struct XRIobj
93{
94 struct XRIobj *_f;
95 struct XRIobj *_b;
96 uint16_t XRI;
97 uint16_t state;
98#define XRI_STATE_FREE 0
99#define XRI_STATE_ALLOCATED 1
100
101 uint16_t sge_count;
102 uint16_t iotag;
103 MBUF_INFO SGList;
104 struct RPIobj *rpip;
105 struct RPIobj *reserved_rpip;
99 emlxs_buf_t *sbp;
100 uint32_t rx_id; /* Used for unsol exchanges */
101 uint32_t flag;
102#define EMLXS_XRI_RESERVED 0x00000001
103#define EMLXS_XRI_PENDING_IO 0x00000002
106 emlxs_buf_t *sbp;
107 uint32_t rx_id; /* Used for unsol exchanges */
108 uint32_t flag;
109#define EMLXS_XRI_RESERVED 0x00000001
110#define EMLXS_XRI_PENDING_IO 0x00000002
104#define EMLXS_XRI_ABORT_INP 0x00000004
111#define EMLXS_XRI_BUSY 0x00000004
105
112
113 uint32_t type;
114#define EMLXS_XRI_SOL_FCP_TYPE 1
115#define EMLXS_XRI_UNSOL_FCP_TYPE 2
116#define EMLXS_XRI_SOL_CT_TYPE 3
117#define EMLXS_XRI_UNSOL_CT_TYPE 4
118#define EMLXS_XRI_SOL_ELS_TYPE 5
119#define EMLXS_XRI_UNSOL_ELS_TYPE 6
120#define EMLXS_XRI_SOL_BLS_TYPE 7
121
106} XRIobj_t;
107
108
109typedef struct emlxs_deferred_cmpl
110{
111 struct emlxs_port *port;
112 struct emlxs_node *node;
113
114 void *arg1;
115 void *arg2;
116 void *arg3;
117
118} emlxs_deferred_cmpl_t;
119
120
122} XRIobj_t;
123
124
125typedef struct emlxs_deferred_cmpl
126{
127 struct emlxs_port *port;
128 struct emlxs_node *node;
129
130 void *arg1;
131 void *arg2;
132 void *arg3;
133
134} emlxs_deferred_cmpl_t;
135
136
137#define FABRIC_RPI 0xffff
138
121typedef struct RPIobj
122{
123 uint16_t index;
124 uint16_t RPI;
125
126 uint16_t prev_reason;
127 uint16_t prev_state;
128
129 uint16_t reason;
130 uint16_t state;
131#define RPI_STATE_FREE 0
139typedef struct RPIobj
140{
141 uint16_t index;
142 uint16_t RPI;
143
144 uint16_t prev_reason;
145 uint16_t prev_state;
146
147 uint16_t reason;
148 uint16_t state;
149#define RPI_STATE_FREE 0
132#define RPI_STATE_OFFLINE 1
133
150
134#define RPI_STATE_UNREG_CMPL 2
135#define RPI_STATE_UNREG_FAILED 3
136#define RPI_STATE_UNREG 4
151#define RPI_STATE_RESERVED 1
152#define RPI_STATE_OFFLINE 2
137
153
138#define RPI_STATE_REG 5
139#define RPI_STATE_REG_FAILED 6
140#define RPI_STATE_REG_CMPL 7
154#define RPI_STATE_UNREG_CMPL 3
155#define RPI_STATE_UNREG_FAILED 4
156#define RPI_STATE_UNREG 5
141
157
142#define RPI_STATE_PAUSED 8
158#define RPI_STATE_REG 6
159#define RPI_STATE_REG_FAILED 7
160#define RPI_STATE_REG_CMPL 8
143
161
144#define RPI_STATE_RESUME 9
145#define RPI_STATE_RESUME_FAILED 10
146#define RPI_STATE_RESUME_CMPL 11
162#define RPI_STATE_PAUSED 9
147
163
148#define RPI_STATE_ONLINE 12
164#define RPI_STATE_RESUME 10
165#define RPI_STATE_RESUME_FAILED 11
166#define RPI_STATE_RESUME_CMPL 12
149
167
168#define RPI_STATE_ONLINE 13
150
169
170
151 uint32_t flag;
152#define EMLXS_RPI_VPI 0x00000010 /* rpi_online set */
153#define EMLXS_RPI_PAUSED 0x00000020 /* rpi_paused set */
154#define EMLXS_RPI_REG 0x00000040
155
156#define EMLXS_RPI_FIRST 0x80000000
157
158 uint32_t attempts;
159 uint32_t xri_count; /* Managed by XRIobj_t */
160
171 uint32_t flag;
172#define EMLXS_RPI_VPI 0x00000010 /* rpi_online set */
173#define EMLXS_RPI_PAUSED 0x00000020 /* rpi_paused set */
174#define EMLXS_RPI_REG 0x00000040
175
176#define EMLXS_RPI_FIRST 0x80000000
177
178 uint32_t attempts;
179 uint32_t xri_count; /* Managed by XRIobj_t */
180
181 uint32_t idle_timer;
182
161 struct VPIobj *vpip;
162
163 /* Node info */
164 struct emlxs_node *node;
165 uint32_t did;
166 SERV_PARM sparam;
167
168 emlxs_deferred_cmpl_t *cmpl;

--- 47 unchanged lines hidden (view full) ---

216#define EMLXS_VPI_REQ_MASK 0x0000000F
217
218#define EMLXS_VPI_VFI 0x00000010 /* vpi_online set */
219#define EMLXS_VPI_VFI_LOGI 0x00000020 /* logi_count set */
220#define EMLXS_VPI_INIT 0x00000040
221#define EMLXS_VPI_REG 0x00000080
222#define EMLXS_VPI_PORT_ONLINE 0x00000100
223#define EMLXS_VPI_LOGI 0x00000200
183 struct VPIobj *vpip;
184
185 /* Node info */
186 struct emlxs_node *node;
187 uint32_t did;
188 SERV_PARM sparam;
189
190 emlxs_deferred_cmpl_t *cmpl;

--- 47 unchanged lines hidden (view full) ---

238#define EMLXS_VPI_REQ_MASK 0x0000000F
239
240#define EMLXS_VPI_VFI 0x00000010 /* vpi_online set */
241#define EMLXS_VPI_VFI_LOGI 0x00000020 /* logi_count set */
242#define EMLXS_VPI_INIT 0x00000040
243#define EMLXS_VPI_REG 0x00000080
244#define EMLXS_VPI_PORT_ONLINE 0x00000100
245#define EMLXS_VPI_LOGI 0x00000200
246#define EMLXS_VPI_PORT_UNBIND 0x40000000
224#define EMLXS_VPI_PORT_ENABLED 0x80000000
225
226 uint32_t attempts;
227
247#define EMLXS_VPI_PORT_ENABLED 0x80000000
248
249 uint32_t attempts;
250
228 RPIobj_t fcf_rpi; /* Reserved Fabric RPI object */
229 RPIobj_t *rpip; /* Fabric RPI pointer (&fcf_rpi) */
251 RPIobj_t fabric_rpi; /* Reserved Fabric RPI object */
252 RPIobj_t *fabric_rpip; /* Fabric RPI pointer (&fabric_rpi) */
253 RPIobj_t *p2p_rpip;
230
254
231 emlxs_buf_t *flogi_sbp;
232
233 struct emlxs_port *port;
234
235 struct VFIobj *vfip; /* Managed by VFIobj_t */
236 uint32_t rpi_online; /* Managed by RPIobj_t */
237 uint32_t rpi_paused; /* Managed by RPIobj_t */
238
239} VPIobj_t;
240

--- 36 unchanged lines hidden (view full) ---

277#define EMLXS_VFI_OFFLINE_REQ 0x00000002
278#define EMLXS_VFI_PAUSE_REQ 0x00000004
279#define EMLXS_VFI_REQ_MASK 0x0000000F
280
281#define EMLXS_VFI_FCFI 0x00000010 /* vfi_online set */
282#define EMLXS_VFI_INIT 0x00000020
283#define EMLXS_VFI_REG 0x00000040
284
255 struct emlxs_port *port;
256
257 struct VFIobj *vfip; /* Managed by VFIobj_t */
258 uint32_t rpi_online; /* Managed by RPIobj_t */
259 uint32_t rpi_paused; /* Managed by RPIobj_t */
260
261} VPIobj_t;
262

--- 36 unchanged lines hidden (view full) ---

299#define EMLXS_VFI_OFFLINE_REQ 0x00000002
300#define EMLXS_VFI_PAUSE_REQ 0x00000004
301#define EMLXS_VFI_REQ_MASK 0x0000000F
302
303#define EMLXS_VFI_FCFI 0x00000010 /* vfi_online set */
304#define EMLXS_VFI_INIT 0x00000020
305#define EMLXS_VFI_REG 0x00000040
306
307 SERV_PARM sparam; /* Last registered sparams */
308
285 uint32_t attempts;
286
309 uint32_t attempts;
310
287 SERV_PARM fcf_sparam;
311 struct FCFIobj *fcfp; /* Managed by FCFIobj_t */
288
312
289 struct FCFIobj *fcfp; /* Managed by FCFIobj_t */
290 uint32_t vpi_online; /* Managed by VPIobj_t */
291 uint32_t logi_count; /* Managed by VPIobj_t */
313 uint32_t vpi_online; /* Managed by VPIobj_t */
314 uint32_t logi_count; /* Managed by VPIobj_t */
315 struct VPIobj *flogi_vpip; /* Managed by VPIobj_t */
292
293} VFIobj_t;
294
295
296typedef struct FCFIobj
297{
298 uint16_t index;
299 uint16_t FCFI;

--- 22 unchanged lines hidden (view full) ---

322#define FCFI_STATE_VFI_OFFLINE 9
323
324#define FCFI_STATE_VFI_ONLINE 10
325#define FCFI_STATE_VFI_ONLINE_CMPL 11
326
327#define FCFI_STATE_PAUSED 12
328#define FCFI_STATE_ONLINE 13
329
316
317} VFIobj_t;
318
319
320typedef struct FCFIobj
321{
322 uint16_t index;
323 uint16_t FCFI;

--- 22 unchanged lines hidden (view full) ---

346#define FCFI_STATE_VFI_OFFLINE 9
347
348#define FCFI_STATE_VFI_ONLINE 10
349#define FCFI_STATE_VFI_ONLINE_CMPL 11
350
351#define FCFI_STATE_PAUSED 12
352#define FCFI_STATE_ONLINE 13
353
354
355 uint16_t pad;
356 uint16_t generation;
357
330 uint32_t offline_timer;
331 uint32_t attempts;
358 uint32_t offline_timer;
359 uint32_t attempts;
332 uint32_t generation;
360
333 uint32_t event_tag;
334 uint32_t flag;
335#define EMLXS_FCFI_ONLINE_REQ 0x00000001
336#define EMLXS_FCFI_OFFLINE_REQ 0x00000002
337#define EMLXS_FCFI_PAUSE_REQ 0x00000004
338#define EMLXS_FCFI_REQ_MASK 0x0000000F
339
340#define EMLXS_FCFI_FCFTAB 0x00000010 /* fcfi_online set */

--- 40 unchanged lines hidden (view full) ---

381typedef struct FCFTable
382{
383
384 uint16_t prev_reason;
385 uint16_t prev_state;
386
387 uint16_t reason;
388 uint16_t state;
361 uint32_t event_tag;
362 uint32_t flag;
363#define EMLXS_FCFI_ONLINE_REQ 0x00000001
364#define EMLXS_FCFI_OFFLINE_REQ 0x00000002
365#define EMLXS_FCFI_PAUSE_REQ 0x00000004
366#define EMLXS_FCFI_REQ_MASK 0x0000000F
367
368#define EMLXS_FCFI_FCFTAB 0x00000010 /* fcfi_online set */

--- 40 unchanged lines hidden (view full) ---

409typedef struct FCFTable
410{
411
412 uint16_t prev_reason;
413 uint16_t prev_state;
414
415 uint16_t reason;
416 uint16_t state;
389#define FCFTAB_STATE_SHUTDOWN 0
390#define FCFTAB_STATE_OFFLINE 1
417/* Common states */
418#define FCFTAB_STATE_SHUTDOWN 0
419#define FCFTAB_STATE_OFFLINE 1
391
420
392#define FCFTAB_STATE_SOLICIT 2
393#define FCFTAB_STATE_SOLICIT_FAILED 3
394#define FCFTAB_STATE_SOLICIT_CMPL 4
421/* FCOE states */
422#define FCOE_FCFTAB_STATE_SHUTDOWN FCFTAB_STATE_SHUTDOWN
423#define FCOE_FCFTAB_STATE_OFFLINE FCFTAB_STATE_OFFLINE
395
424
396#define FCFTAB_STATE_READ 5
397#define FCFTAB_STATE_READ_FAILED 6
398#define FCFTAB_STATE_READ_CMPL 7
425#define FCOE_FCFTAB_STATE_SOLICIT 2
426#define FCOE_FCFTAB_STATE_SOLICIT_FAILED 3
427#define FCOE_FCFTAB_STATE_SOLICIT_CMPL 4
399
428
400#define FCFTAB_STATE_FCFI_OFFLINE_CMPL 8
401#define FCFTAB_STATE_FCFI_OFFLINE 9
429#define FCOE_FCFTAB_STATE_READ 5
430#define FCOE_FCFTAB_STATE_READ_FAILED 6
431#define FCOE_FCFTAB_STATE_READ_CMPL 7
402
432
403#define FCFTAB_STATE_FCFI_ONLINE 10
404#define FCFTAB_STATE_FCFI_ONLINE_CMPL 11
433#define FCOE_FCFTAB_STATE_FCFI_OFFLINE_CMPL 8
434#define FCOE_FCFTAB_STATE_FCFI_OFFLINE 9
405
435
406#define FCFTAB_STATE_ONLINE 12
436#define FCOE_FCFTAB_STATE_FCFI_ONLINE 10
437#define FCOE_FCFTAB_STATE_FCFI_ONLINE_CMPL 11
407
438
408 uint32_t generation;
439#define FCOE_FCFTAB_STATE_ONLINE 12
409
440
410 uint32_t read_timer;
411 uint32_t index; /* Used for read operations */
441
442/* FC states */
443#define FC_FCFTAB_STATE_SHUTDOWN FCFTAB_STATE_SHUTDOWN
444#define FC_FCFTAB_STATE_OFFLINE FCFTAB_STATE_OFFLINE
445
446#define FC_FCFTAB_STATE_TOPO 2
447#define FC_FCFTAB_STATE_TOPO_FAILED 3
448#define FC_FCFTAB_STATE_TOPO_CMPL 4
449
450#define FC_FCFTAB_STATE_CFGLINK 5
451#define FC_FCFTAB_STATE_CFGLINK_FAILED 6
452#define FC_FCFTAB_STATE_CFGLINK_CMPL 7
453
454#define FC_FCFTAB_STATE_SPARM 8
455#define FC_FCFTAB_STATE_SPARM_FAILED 9
456#define FC_FCFTAB_STATE_SPARM_CMPL 10
457
458#define FC_FCFTAB_STATE_FCFI_OFFLINE_CMPL 11
459#define FC_FCFTAB_STATE_FCFI_OFFLINE 12
460
461#define FC_FCFTAB_STATE_FCFI_ONLINE 13
462#define FC_FCFTAB_STATE_FCFI_ONLINE_CMPL 14
463
464#define FC_FCFTAB_STATE_ONLINE 15
465
466
467 uint16_t TID;
468 uint16_t generation;
469
412 uint32_t flag;
470 uint32_t flag;
413#define EMLXS_FCFTAB_SOL_REQ 0x00000001
414#define EMLXS_FCFTAB_READ_REQ 0x00000002
415#define EMLXS_FCFTAB_OFFLINE_REQ 0x00000004
416#define EMLXS_FCFTAB_REQ_MASK 0x0000000F
417#define EMLXS_FCFTAB_SHUTDOWN 0x80000000
471/* Common flags */
472#define EMLXS_FCFTAB_REQ_MASK 0x0000000F
473#define EMLXS_FCFTAB_SHUTDOWN 0x80000000
418
474
475/* FCOE flags */
476#define EMLXS_FCOE_FCFTAB_SOL_REQ 0x00000001
477#define EMLXS_FCOE_FCFTAB_READ_REQ 0x00000002
478#define EMLXS_FCOE_FCFTAB_OFFLINE_REQ 0x00000004
479
480/* FC flags */
481#define EMLXS_FC_FCFTAB_TOPO_REQ 0x00000001
482#define EMLXS_FC_FCFTAB_CFGLINK_REQ 0x00000002
483#define EMLXS_FC_FCFTAB_SPARM_REQ 0x00000004
484#define EMLXS_FC_FCFTAB_OFFLINE_REQ 0x00000008
485
419 uint32_t attempts;
420
421 uint32_t fcfi_online; /* Managed by FCFIobj_t */
422
423 FCFIobj_t *fcfi[FCFTAB_MAX_FCFI_COUNT];
424 uint32_t fcfi_count;
425
426 FCFIobj_t *table;
427 uint16_t table_count;
428
486 uint32_t attempts;
487
488 uint32_t fcfi_online; /* Managed by FCFIobj_t */
489
490 FCFIobj_t *fcfi[FCFTAB_MAX_FCFI_COUNT];
491 uint32_t fcfi_count;
492
493 FCFIobj_t *table;
494 uint16_t table_count;
495
429 uint32_t sol_timer;
496 uint32_t online_timer; /* FC */
430
497
498 uint32_t sol_timer; /* FCOE */
499 uint32_t read_timer; /* FCOE */
500
431} FCFTable_t;
432#define FCFTAB_READ_ALL (void*)0xffff
433
434#ifdef __cplusplus
435}
436#endif
437
438#endif /* _EMLXS_FCF_H */
501} FCFTable_t;
502#define FCFTAB_READ_ALL (void*)0xffff
503
504#ifdef __cplusplus
505}
506#endif
507
508#endif /* _EMLXS_FCF_H */