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
31 extern "C" {
32 #endif
33 
34 #define	EMLXS_CFG_STR_SIZE	32
35 #define	EMLXS_CFG_HELP_SIZE	80
36 
37 typedef 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 
49 typedef 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  */
157 emlxs_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, 16=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