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
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/*
23 * Copyright (c) 2004-2012 Emulex. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _EMLXS_CONFIG_H
28#define	_EMLXS_CONFIG_H
29
30#ifdef	__cplusplus
31extern "C" {
32#endif
33
34#define	EMLXS_CFG_STR_SIZE	32
35#define	EMLXS_CFG_HELP_SIZE	80
36
37typedef struct emlxs_config
38{
39	char		string[EMLXS_CFG_STR_SIZE];
40	uint32_t	low;
41	uint32_t	hi;
42	uint32_t	def;
43	uint32_t	current;
44	uint32_t	flags;
45	char		help[EMLXS_CFG_HELP_SIZE];
46} emlxs_config_t;
47
48
49typedef enum emlxs_cfg_parm
50{
51	CFG_CONSOLE_NOTICES,	/* console-notices */
52	CFG_CONSOLE_WARNINGS,	/* console-warnings */
53	CFG_CONSOLE_ERRORS,	/* console-errors */
54	CFG_CONSOLE_DEBUGS,	/* console-debugs (hidden) */
55	CFG_LOG_NOTICES,	/* log-notices */
56	CFG_LOG_WARNINGS,	/* log-warnings */
57	CFG_LOG_ERRORS,		/* log-errors */
58	CFG_LOG_DEBUGS,		/* log-debugs (hidden) */
59	CFG_NUM_IOCBS,		/* num-iocbs */
60	CFG_MAX_XFER_SIZE,	/* max-xfer-size */
61	CFG_UB_BUFS,		/* ub-bufs */
62	CFG_NETWORK_ON,		/* network-on */
63	CFG_ACK0,		/* ack0 */
64	CFG_TOPOLOGY,		/* topology */
65	CFG_LINK_SPEED,		/* link-speed */
66	CFG_NUM_NODES,		/* num-nodes */
67	CFG_CR_DELAY,		/* cr-delay */
68	CFG_CR_COUNT,		/* cr-count */
69	CFG_ASSIGN_ALPA,	/* assign-alpa */
70	CFG_ADISC_SUPPORT,	/* adisc-support */
71	CFG_PM_SUPPORT,		/* pm-support */
72	CFG_PM_IDLE,		/* pm-idle */
73	CFG_FW_CHECK,		/* fw-check (hidden) */
74	CFG_TRI_REQUIRED,	/* tri-required (hidden) */
75	CFG_DISC_TIMEOUT,	/* discovery-timeout (hidden) */
76	CFG_LINKUP_TIMEOUT,	/* linkup-timeout (hidden) */
77	CFG_LINKUP_DELAY,	/* linkup-delay */
78	CFG_OFFLINE_TIMEOUT,	/* offline-timeout (hidden) */
79	CFG_LILP_ENABLE,	/* enable-lilp (hidden) */
80	CFG_PCI_MAX_READ,	/* pci-max-read */
81	CFG_HEARTBEAT_ENABLE,	/* heartbeat-enable (hidden) */
82	CFG_RESET_ENABLE,	/* reset-enable (hidden) */
83	CFG_TIMEOUT_ENABLE,	/* timeout-enable (hidden) */
84	CFG_NUM_IOTAGS,		/* num-iotags (hidden) */
85#ifdef NODE_THROTTLE_SUPPORT
86	CFG_TGT_DEPTH,		/* target-depth */
87#endif /* NODE_THROTTLE_SUPPORT */
88
89	CFG_MEM_DYNAMIC,	/* mem-dynamic (hidden) */
90
91#ifdef FMA_SUPPORT
92	CFG_FM_CAPS,		/* fm-capable (hidden) */
93#endif	/* FMA_SUPPORT */
94
95
96#ifdef MAX_RRDY_SUPPORT
97	CFG_MAX_RRDY,		/* max-rrdy (hidden) */
98#endif	/* MAX_RRDY_SUPPORT */
99
100#ifdef MSI_SUPPORT
101	CFG_MSI_MODE,		/* msi-mode (hidden) */
102#endif	/* MSI_SUPPORT */
103
104	CFG_SLI_MODE,		/* sli-mode (hidden) */
105	CFG_NPIV_ENABLE,	/* enable-npiv */
106	CFG_VPORT_RESTRICTED,	/* vport-restrict-login */
107	CFG_NPIV_DELAY,		/* enable-npiv-delay (hidden) */
108
109#ifdef DHCHAP_SUPPORT
110	CFG_AUTH_ENABLE, 	/* enable-auth */
111	CFG_AUTH_E2E,		/* auth-e2e */
112	CFG_AUTH_NPIV,		/* auth-npiv (hidden) */
113	CFG_AUTH_TMO,    	/* auth-tmo (hidden) */
114	CFG_AUTH_MODE,   	/* auth-mode (hidden) */
115	CFG_AUTH_BIDIR, 	/* auth-bidir (hidden) */
116	CFG_AUTH_TYPE,   	/* auth-type (hidden) */
117	CFG_AUTH_HASH,   	/* auth-hash (hidden) */
118	CFG_AUTH_GROUP,  	/* auth-group (hidden) */
119	CFG_AUTH_INTERVAL,  	/* auth-interval (hidden) */
120#endif	/* DHCHAP_SUPPORT */
121
122#ifdef SFCT_SUPPORT
123	CFG_DTM_ENABLE,		/* enable-dtm (hidden) */
124	CFG_TARGET_MODE,	/* target-mode */
125	CFG_VPORT_MODE_MASK,	/* vport-mode-mask (hidden) */
126	CFG_FCT_QDEPTH,		/* fct-queue-depth */
127#endif /* SFCT_SUPPORT */
128	CFG_NUM_WQ,		/* num-wq (hidden) */
129	CFG_PERSIST_LINKDOWN,	/* persist-linkdown */
130	CFG_ENABLE_PATCH,	/* enable-patch (hidden) */
131	CFG_FAST_TGT_RESET,	/* fast-tgt-reset (hidden) */
132	CFG_FAST_TGT_RESET_TMR,	/* fast-tgt-reset-timer (hidden) */
133
134	CFG_FCF_SOLICIT_DELAY,	/* fcf-solicit-delay (hidden) */
135	CFG_FCF_FAILOVER_DELAY,	/* fcf-failover-delay (hidden) */
136	CFG_FCF_RESOLICIT_DELAY, /* fcf-resolicit-delay (hidden) */
137	CFG_FCF_RPI_IDLE_TIMEOUT, /* fcf-rpi-idle-timeout (hidden) */
138
139	CFG_DELAY_DISCOVERY,	/* delay-discovery (hidden) */
140	CFG_RQD_MODE,		/* rqd (hidden) */
141	CFG_PERF_HINT,		/* perf-hint (hidden) */
142
143	NUM_CFG_PARAM
144
145} emlxs_cfg_parm_t;
146
147#define	PARM_HIDDEN	0x80000000
148
149
150
151#ifdef DEF_ICFG
152
153/*
154 * The entries in this array must be in the exact order
155 * defined in emlxs_cfg_parm_t
156 */
157emlxs_config_t  emlxs_cfg[] = {
158	/* CFG_CONSOLE_NOTICES */
159	{"console-notices",
160		0, 0xffffffff, 0, 0,
161		PARM_DYNAMIC | PARM_HEX,
162	"Verbose mask for notice messages to the console."},
163
164	/* CFG_CONSOLE_WARNINGS */
165	{"console-warnings",
166		0, 0xffffffff, 0, 0,
167		PARM_DYNAMIC | PARM_HEX,
168	"Verbose mask for warning messages to the console."},
169
170	/* CFG_CONSOLE_ERRORS */
171	{"console-errors",
172		0, 0xffffffff, 0, 0,
173		PARM_DYNAMIC | PARM_HEX,
174	"Verbose mask for error messages to the console."},
175
176	/* CFG_CONSOLE_DEBUGS */
177	{"console-debugs",
178		0, 0xffffffff, 0, 0,
179		PARM_DYNAMIC | PARM_HEX | PARM_HIDDEN,
180	"Verbose mask for debugging messages to the console."},
181
182	/* CFG_LOG_NOTICES */
183	{"log-notices",
184		0, 0xffffffff, 0xffffffff, 0,
185		PARM_DYNAMIC | PARM_HEX,
186	"Verbose mask for notice messages to the messages file."},
187
188	/* CFG_LOG_WARNINGS */
189	{"log-warnings",
190		0, 0xffffffff, 0xffffffff, 0,
191		PARM_DYNAMIC | PARM_HEX,
192	"Verbose mask for warning messages to the messages file."},
193
194	/* CFG_LOG_ERRORS */
195	{"log-errors",
196		0, 0xffffffff, 0xffffffff, 0,
197		PARM_DYNAMIC | PARM_HEX,
198	"Verbose mask for error messages to the messages file."},
199
200	/* CFG_LOG_DEBUGS */
201	{"log-debugs",
202		0, 0xffffffff, 0, 0,
203		PARM_DYNAMIC | PARM_HEX | PARM_HIDDEN,
204	"Verbose mask for debugging messages to the messages file."},
205
206
207	/* CFG_NUM_IOCBS */
208	{"num-iocbs",
209		128, 10240, 1024, 0,
210		PARM_DYNAMIC_RESET,
211	"Number of IOCB buffers the driver should allocate."},
212
213	/* CFG_MAX_XFER_SIZE */
214	{"max-xfer-size",
215		131072, 1388544, 339968, 0,
216		0,
217	"Sets maximum bytes per IO the driver can transfer."},
218
219	/* CFG_UB_BUFS */
220	{"ub-bufs",
221		40, 16320, 1000, 0,
222		0,
223	"Number of unsolicited buffers the driver should allocate."},
224
225	/* IP specific parameters */
226
227	/* CFG_NETWORK_ON */
228	{"network-on",
229		0, 1, 1, 0,
230		PARM_BOOLEAN,
231	"Enable IP processing. "
232		"[0=Disabled, 1=Enabled]"},
233
234	/* Fibre Channel specific parameters */
235
236	/* CFG_ACK0 */
237	{"ack0",
238		0, 1, 0, 0,
239		PARM_DYNAMIC_LINK | PARM_BOOLEAN,
240	"Enables ACK0 support. "
241		"[0=Disabled, 1=Enabled]"},
242
243	/* CFG_TOPOLOGY */
244	{"topology",
245		0, 6, 0, 0,
246		PARM_DYNAMIC_LINK,
247	"Select Fibre Channel topology. "
248		"[0=Loop->PTP, 2=PTP, 4=Loop, 6=PTP->Loop]"},
249
250	/* CFG_LINK_SPEED */
251	{"link-speed",
252		0, 16, 0, 0,
253		PARM_DYNAMIC_LINK,
254	"Select link speed. "
255		"[0=Auto, 1=1Gb, 2=2Gb, 4=4Gb, 8=8Gb, 16Gb]"},
256
257	/* CFG_NUM_NODES */
258	{"num-nodes",
259		0, 4096, 0, 0,
260		PARM_DYNAMIC_RESET,
261	"Number of remote FC nodes the driver will support. "
262		"[0=no_limit, else must be >2]"},
263
264	/* CFG_CR_DELAY */
265	{"cr-delay",
266		0, 63, 0, 0,
267		PARM_DYNAMIC_LINK,
268	"A count of milliseconds after which "
269		"an interrupt response is generated"},
270
271	/* CFG_CR_COUNT */
272	{"cr-count",
273		1, 255, 1, 0,
274		PARM_DYNAMIC_LINK,
275	"A count of I/O completions after "
276		"which an interrupt response is generated"},
277
278	/* CFG_ASSIGN_ALPA */
279	{"assign-alpa",
280		0, 0xef, 0, 0,
281		PARM_DYNAMIC_LINK | PARM_HEX,
282	"Assigns a preferred ALPA to the port. Only used in Loop topology."},
283
284	/* CFG_ADISC_SUPPORT */
285	{"adisc-support",
286		0, 2, 1, 0,
287		PARM_DYNAMIC,
288	"Sets the Fibre Channel ADISC login support level. "
289		"[0=None, 1=Partial, 2=Full]"},
290
291	/* CFG_PM_SUPPORT */
292	{"pm-support",
293		0, 1, 0, 0,
294		PARM_BOOLEAN,
295	"Enables power management support. "
296		"[0=Disabled, 1=Enabled]"},
297
298	/* CFG_PM_IDLE */
299	{"pm-idle",
300		0, 3600, 300, 0,
301		PARM_DYNAMIC | PARM_HIDDEN,
302	"Sets power management idle timeout value (seconds)."},
303
304	/* CFG_FW_CHECK */
305	{"fw-check",
306		0, 7, 1, 0,
307		PARM_DYNAMIC_RESET | PARM_HEX | PARM_HIDDEN,
308	"Enables firmware revision checking. "
309		"[0=Off 1=Sun-only 2=All 4=kern-update]"},
310
311	/* CFG_TRI_REQUIRED */
312	{"tri-required",
313		0, 1, 0, 0,
314		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
315	"Requires Task Retry Id support by a remote device "
316		"for FCP-2 error recovery."},
317
318	/* CFG_DISC_TIMEOUT */
319	{"discovery-timeout",
320		0, 600, 25, 0,
321		PARM_DYNAMIC | PARM_HIDDEN,
322	"Sets the discovery timeout period (seconds) "
323		"for managing FCP-2 devices."},
324
325	/* CFG_LINKUP_TIMEOUT */
326	{"linkup-timeout",
327		0, 10, 2, 0,
328		PARM_DYNAMIC | PARM_HIDDEN,
329	"Sets the linkup timeout period (seconds)."},
330
331	/* CFG_LINKUP_DELAY */
332	{"linkup-delay",
333		0, 60, 10, 0,
334		PARM_DYNAMIC_RESET,
335	"Sets the driver wait period (seconds) "
336		"for a linkup after initialization."},
337
338	/* CFG_OFFLINE_TIMEOUT */
339	{"offline-timeout",
340		0, 600, 45, 0,
341		PARM_DYNAMIC | PARM_HIDDEN,
342	"Sets the offline timeout period (seconds)."},
343
344	/* CFG_LILP_ENABLE */
345	{"enable-lilp",
346		0, 1, 1, 0,
347		PARM_DYNAMIC_RESET | PARM_BOOLEAN | PARM_HIDDEN,
348	"Enables LIRP/LILP support in the driver. "
349		"[0=Disabled, 1=Enabled]"},
350
351	/* CFG_PCI_MAX_READ */
352	{"pci-max-read",
353		512, 4096, 2048, 0,
354		PARM_DYNAMIC_RESET,
355	"Sets the PCI-X max memory read byte count. "
356		"[512,1024,2048 or 4096]"},
357
358	/* CFG_HEARTBEAT_ENABLE */
359	{"heartbeat-enable",
360		0, 1, 1, 0,
361		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
362	"Enables driver's mailbox heartbeat to the adapter. "
363		"[0=Disabled, 1=Enabled]"},
364
365	/* CFG_RESET_ENABLE */
366	{"reset-enable",
367		0, 1, 1, 0,
368		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
369	"Enables driver's ability to reset the adapter. "
370		"[0=Disabled, 1=Enabled]"},
371
372	/* CFG_TIMEOUT_ENABLE */
373	{"timeout-enable",
374		0, 1, 1, 0,
375		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
376	"Enables driver's ability to timeout commands. "
377		"[0=Disabled, 1=Enabled]"},
378
379	/* CFG_NUM_IOTAGS */
380	{"num-iotags",
381		0, 4096, 0, 0,
382		PARM_DYNAMIC_RESET | PARM_HIDDEN,
383	"Sets number of outstanding IO's. "
384		"[0=max determined by type of HBA]"},
385
386#ifdef NODE_THROTTLE_SUPPORT
387	/* CFG_TGT_DEPTH */
388	{"target-depth",
389		0, MAX_NODE_THROTTLE, 512, 0,
390		PARM_DYNAMIC_LINK,
391	"Sets remote FCP target queue depth. "
392		"[0=no_limit, N=Maximum active IO's]"},
393#endif /* NODE_THROTTLE_SUPPORT */
394
395	/* CFG_MEM_DYNAMIC */
396	{"mem-dynamic",
397		0, 86400, 180, 0,
398		PARM_DYNAMIC_RESET | PARM_HIDDEN,
399	"Enables dynamic memory pools "
400		"[0=Disabled, 1-N=Enabled w/cleaning every N secs]"},
401
402#ifdef FMA_SUPPORT
403	/* CFG_FM_CAPS */
404	{"fm-capable",
405		0, 0xF, 0xB, 0,
406		PARM_HEX | PARM_HIDDEN,
407	"Sets FMA capabilities. "
408		"[bit 3:errcb, 2:dmachk, 1:accchk, 0:ereport]"},
409#endif	/* FMA_SUPPORT */
410
411
412#ifdef MAX_RRDY_SUPPORT
413	/* CFG_MAX_RRDY */
414	{"max-rrdy",
415		0, 255, 2, 0,
416		PARM_DYNAMIC_RESET | PARM_HIDDEN,
417	"Sets maximum number RRDY's for the adapter on private loop."},
418#endif	/* MAX_RRDY_SUPPORT */
419
420#ifdef MSI_SUPPORT
421	/* CFG_MSI_MODE */
422	{"msi-mode",
423		0, 3, 3, 0,
424		PARM_HIDDEN,
425	"Sets the default MSI mode in driver. "
426		"[0=Off 1=Single-MSI 2=Multi-MSI 3=Auto]"},
427#endif	/* MSI_SUPPORT */
428
429	/* CFG_SLI_MODE */
430	{"sli-mode",
431		0, 4, 0, 0,
432		PARM_DYNAMIC_RESET | PARM_HIDDEN,
433	"Sets default SLI mode. "
434		"[0=Auto, 2=SLI2-remove all vports first, 3=SLI3, 4=SLI4]"},
435
436	/* CFG_NPIV_ENABLE */
437	{"enable-npiv",
438		0, 1, 0, 0,
439		PARM_DYNAMIC_RESET | PARM_BOOLEAN,
440	"Enables NPIV. [0=Disabled-remove all vports first, "
441		"[1=Enabled-requires SLI3+]"},
442
443	/* CFG_VPORT_RESTRICTED */
444	{"vport-restrict-login",
445		0, 1, 1, 0,
446		PARM_DYNAMIC_LINK | PARM_BOOLEAN,
447	"Restricts login to virtual ports to conserve resources. "
448		"[0=Disabled, 1=Enabled]"},
449
450	/* CFG_NPIV_DELAY */
451	{"enable-npiv-delay",
452		0, 1, 1, 0,
453		PARM_DYNAMIC | PARM_HIDDEN,
454	"Enable FDISC/NS command delay from vports to switch. "
455		"[0=Disabled, 1=Enabled]"},
456
457#ifdef DHCHAP_SUPPORT
458	/* CFG_AUTH_ENABLE */
459	{"enable-auth",
460		0, 1, 0, 0,
461		PARM_DYNAMIC_LINK | PARM_BOOLEAN,
462	"Enables DHCHAP support in the driver. "
463		"[0=Disabled, 1=Enabled]"},
464
465	/* CFG_AUTH_E2E */
466	{"auth-e2e",
467		0, 1, 0, 0,
468		PARM_DYNAMIC_LINK | PARM_BOOLEAN | PARM_HIDDEN,
469	"Enables end-to-end DHCHAP support in the driver. "
470		"[0=Disabled, 1=Enabled]"},
471
472	/* CFG_AUTH_NPIV */
473	{"auth-npiv",
474		0, 1, 0, 0,
475		PARM_DYNAMIC_LINK | PARM_BOOLEAN | PARM_HIDDEN,
476	"Enables DHCHAP support for virtual ports. "
477		"[0=Disabled, 1=Enabled]"},
478
479	/* CFG_AUTH_TMO */
480	{"auth-tmo",
481		20, 999, 45, 0,
482		PARM_DYNAMIC_LINK | PARM_HIDDEN,
483	"Sets authentication timeout value. (seconds)"},
484
485	/* CFG_AUTH_MODE */
486	{"auth-mode",
487		1, 3, 1, 0,
488		PARM_DYNAMIC_LINK | PARM_HIDDEN,
489	"Sets authentication mode. "
490		"[1=Disabled, 2=Active, 3=Passive]"},
491
492	/* CFG_AUTH_BIDIR */
493	{"auth-bidir",
494		0, 1, 0, 0,
495		PARM_DYNAMIC_LINK | PARM_BOOLEAN | PARM_HIDDEN,
496	"Sets authentication bidirectional mode. "
497		"[0=Disabled, 1=Enabled]"},
498
499	/* CFG_AUTH_TYPE */
500	{"auth-type",
501		0, 0x1111, 0x1000, 0,
502		PARM_DYNAMIC_LINK | PARM_HEX | PARM_HIDDEN,
503	"Sets authentication type priorities[4]. "
504		"[0=Undef, 1=DHCHAP]"},
505
506	/* CFG_AUTH_HASH */
507	{"auth-hash",
508		0, 0x2222, 0x1200, 0,
509		PARM_DYNAMIC_LINK | PARM_HEX | PARM_HIDDEN,
510	"Sets authentication hash priorities[4]. "
511		"[0=Undef, 1=MD5, 2=SHA1]"},
512
513	/* CFG_AUTH_GROUP */
514	{"auth-group",
515		0, 0x55555555, 0x54321000, 0,
516		PARM_DYNAMIC_LINK | PARM_HEX | PARM_HIDDEN,
517	"Sets auth group priorities[8]. "
518		"[0=Undef,1=NULL,2=1024,3=1280,4=1536,5=2048]"},
519
520	/* CFG_AUTH_INTERVAL */
521	{"auth-interval",
522		0, 3600, 300, 0,
523		PARM_DYNAMIC_LINK | PARM_HIDDEN,
524	"Sets re-authentication interval. (minutes)"},
525
526#endif	/* DHCHAP_SUPPORT */
527
528#ifdef SFCT_SUPPORT
529	/* CFG_DTM_ENABLE */
530	{"enable-dtm",
531		0, 1, 0, 0,
532		PARM_BOOLEAN | PARM_HIDDEN,
533	"Enables dynamic target mode. "
534		"[0=Disabled, 1=Enabled]"},
535
536	/* CFG_TARGET_MODE */
537	{"target-mode",
538		0, 1, 0, 0,
539		PARM_BOOLEAN,
540		/* PARM_DYNAMIC - Depending on enable-dtm */
541	"Enables target mode support in driver. "
542		"[0=Disabled, 1=Enabled]"},
543
544	/* CFG_VPORT_MODE_MASK */
545	{"vport-mode-mask",
546		1, 3, 1, 0,
547		PARM_HEX | PARM_HIDDEN,
548	"Sets default vport mode mask. "
549		"[0x1=Initiator, 0x2=Target (enable-dtm=1 reqd)"},
550
551#ifdef FYI
552	/* These parameters can be added to conf file at user's discretion */
553	/* Supercedes "vport-mode-mask" for vport N */
554	/* vport0-mode-mask is not supported */
555	{"vportN-mode-mask",	/* (where N = 1 to max VPI) */
556		1, 3, 1, 0,
557		PARM_HEX | PARM_HIDDEN,
558	"Sets vportN mode mask. "
559		"[0x1=Initiator, 0x2=Target (enable-dtm=1 reqd)"},
560#endif /* FYI */
561
562	/* CFG_FCT_QDEPTH */
563	{"fct-queue-depth",
564		0, 4096, 0, 0,
565		PARM_BOOLEAN,
566	"Queue depth of target mode port. "
567		"[0=max determined by type of HBA]"},
568#endif /* SFCT_SUPPORT */
569
570	/* CFG_NUM_WQ */
571	{"num-wq",
572		1, EMLXS_MAX_WQS_PER_EQ, 1, 0,
573		PARM_DYNAMIC_RESET | PARM_HIDDEN,
574	"Defines number of Work Queues (WQs) per EQ."},
575
576	/* CFG_PERSIST_LINKDOWN */
577	{"persist-linkdown",
578		0, 1, 0, 0,
579		PARM_DYNAMIC_RESET | PARM_BOOLEAN,
580	"Set link persistently down. "
581		"[0=Disabled, 1=Enabled]."},
582
583	/* CFG_ENABLE_PATCH */
584	{"enable-patch",
585		0, 0xFFFFFFFF, DEFAULT_PATCHES, 0,
586		PARM_DYNAMIC | PARM_HEX | PARM_HIDDEN,
587	"Enables patches in driver."},
588
589	/* CFG_FAST_TGT_RESET */
590	{"fast-tgt-reset",
591		0, 1, 0, 0,
592		PARM_DYNAMIC_RESET | PARM_BOOLEAN | PARM_HIDDEN,
593	"Enables alternative target reset processing. "
594		"[0=Disabled 1=Enabled]"},
595
596	/* CFG_FAST_TGT_RESET_TMR */
597	{"fast-tgt-reset-timer",
598		0, 60, 10, 0,
599		PARM_DYNAMIC_RESET | PARM_BOOLEAN | PARM_HIDDEN,
600	"RSCN notification timer for fast target reset. "
601		"[0=Disabled 1-60=seconds]"},
602
603	/* CFG_FCF_SOLICIT_DELAY */
604	{"fcf-solicit-delay",
605		0, 60, 3, 0,
606		PARM_DYNAMIC | PARM_HIDDEN,
607	"Sets delay after FCF solicit request before reading FCF table. "
608		"[0-60=seconds]"},
609
610	/* CFG_FCF_FAILOVER_DELAY */
611	{"fcf-failover-delay",
612		0, 60, 0, 0,
613		PARM_DYNAMIC | PARM_HIDDEN,
614	"Sets delay before attempting failover to a new FCF. "
615		"[0-60=seconds]"},
616
617	/* CFG_FCF_RESOLICIT_DELAY */
618	{"fcf-resolicit-delay",
619		0, 60, 3, 0,
620		PARM_DYNAMIC | PARM_HIDDEN,
621	"Sets delay after total FCF failure before resoliciting. "
622		"[0-60=seconds]"},
623
624	/* CFG_FCF_RPI_IDLE_TIMEOUT */
625	{"fcf-rpi-idle-timeout",
626		1, 30, 2, 0,
627		PARM_DYNAMIC | PARM_HIDDEN,
628	"Sets timeout period of an idle reserved RPI. "
629		"[1-30=seconds]"},
630
631	/* CFG_DELAY_DISCOVERY */
632	{"delay-discovery",
633		0, 2, 1, 0,
634		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
635	"Clean Address to delay discovery."
636		"[0=Disabled 1=Enabled not 1st linkup 2=Enabled]"},
637
638	/* CFG_RQD_MODE */
639	{"rqd-mode",
640		0, 1, 1, 0,
641		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
642	"Request Recovery Qualifier delay."
643		"[0=Disabled 1=Enabled]"},
644
645	/* CFG_PERF_HINT */
646	{"perf-hint",
647		0, 1, 1, 0,
648		PARM_DYNAMIC | PARM_BOOLEAN | PARM_HIDDEN,
649	"Use performance hints if applicable."
650		"[0=Disabled 1=Enabled]"},
651
652};
653
654#endif	/* DEF_ICFG */
655
656#ifdef	__cplusplus
657}
658#endif
659
660#endif	/* _EMLXS_CONFIG_H */
661