ExpresFC Windows 2k & NT Registry Settings -------- ------- -- - -- -------- -------- CAUTION - Modifying your registry incorrectly may result in making your machine unbootable. Please use care in editing the registry. This should only be performed by users experienced with the registry editor. NOTE - Some of the following requires knowledge of hexadecimal arithmetic and a sense for basic SCSI command processing. For most users, the defaults set by the adapter driver installation .INF file will suffice. "If it ain't broke, don't fix it!" A registry entry can be used to control various parameters and settings used to control the initialization and operation of the ExpresFC adapter. A String Value named DriverParameters can be added under the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExpresFC\Parameters\Device. This string value may contain settings for the following parameters: NumIoreq - Number of Ioreq structures allocated during driver initialization. These structures are used in Initiator Mode to manage the progress of SCSI commands sent to the various targets. One structure is used for each commnad, plus an additional structure is required for each 40960 (or part thereof) bytes transferred. The default value is 512; minimum 256, maximum 2048. Each structure requires 88 bytes of memory. (If you are using drives striped with ExpressRAID, one Ioreq structure is used per commnad per drive in the stripe group, plus an additional one per 40960 bytes trans- ferred to each drive.) If the driver runs out of these structures, nothing bad happens; commands sent to the driver are simply placed on a backup list until structures are available. If you are trying to get the highest level of performance, and your application(s) have a large number of large transfers outstanding at any given time, you may want to try to increase this allocation to see if it has any effect. Using the default value, the driver can handle 256 simultaneous read/write commands of up to 40960 bytes each, or 18 simultaneous commands of up to 1 meg each, without placing any commands on the backup list. NoTarget - Turns off Target Mode support if the value is nonzero. Support for Target Mode requires specialized upper- level drivers that are application-specific. If you are not using Target Mode, you may want to disable Target Mode, thereby saving system memory. NumXcb - Number of simultaneous Exchanges that can be handled in Target Mode. Each received SCSI command utilizes one XCB. Each XCB requires 72 bytes of memory. The default value is 512; minimum 64, maximum 2048. Incoming commands above the set limit are dropped. This value is disregarded if NoTarget is set. NumScb - Number of simultaneous Sequences that can be handled in Target Mode. When responding to a SCSI command, the upper level driver will initiate one or more Sequences (data transfer and/or completion status) to process the command. Each SCB requires 68 bytes of memory. The minimum is the setting for NumXcb; maximum 2048. The default value is 1024. This value is disregarded if NoTarget is set. EventLogMask - For debugging purposes, it is possible to log events in the NT Event Log. Events are classified by various types. For reference, the event types are listed at the end of this document. The value in this parameter is the sum of the desired Event Types to log. The default value of this variable is 1, logging only all fatal initialization errors. The value in the Registry entry consists of a series of specifications of the form <parameter_name>=<value>, where <parameter_name> is one of the above parameter names, and <value> is specified in either decimal (default) or in hex by specifying the usual 0x in front of it. Multiple parameter name/value pairs are separated by semicolons. For example, to disable TargetMode and turn on all event logging, specify the following string value: NoTarget=1;EventLogMask=0xFFFFFFFF ----------------------------------------------------------------- The following is a description of the Event Types logged and the contents of the resulting Event Log messages for each. In the description below, the EventCode refers to the value in the Event Log message at ofset 0x34, and the UniqueId appears in the Event Log message at offset 0x10. /************ Define the Event Classification flags *************/ /* */ /* The event classification is a bit mask of errors to be */ /* reported. In NT, there is a registry entry for a mask of */ /* the errors to be reported. When OsLogEvent is called, */ /* the OS layer will check the Flags value against this mask */ /* and, if set, will log the event. */ /* */ /****************************************************************/ #define EVENT_TYPE_FATAL 0x00000001 /* Fatal initialization errors */ #define EVENT_TYPE_LOOP 0x00000002 /* Loop events */ #define EVENT_TYPE_SCSI 0x00000004 /* SCSI errors */ #define EVENT_TYPE_ISP 0x00000008 /* ISP reported errors */ #define EVENT_TYPE_LOGIN 0x00000010 /* Port login/logout events */ #define EVENT_TYPE_RSCN 0x00000020 /* RSCN events */ #define EVENT_TYPE_RSRC 0x00000040 /* Resource usage failures (NT) */ #define EVENT_TYPE_INFO 0x00000080 /* Informational messages */ /******************* Define the Event codes. ********************/ /* */ /* NOTE - Codes 0x0000 - 0x3FFF are certain fatal errors */ /* reported at the upper level */ /* driver layer. For NT, see */ /* header file errors.h. */ /* Codes 0x4000 - 0x4FFF are Mailbox Command error codes */ /* reported as is. */ /* Codes 0x8000 - 0x8FFF are Asynchronous Event codes */ /* from the ISP used as is. */ /* Codes 0xF000 - 0xFFFF are described below. */ /* */ /****************************************************************/ #define EVENT_CODE_SCSI 0xF000 /* For EVENT_CODE_SCSI, UniqueId contains 4 bytes; the LS byte */ /* is the SCSI error code, then Sense Key if any, then */ /* Additional Sense Code, then the SCSI Command Code in the MS */ /* byte. */ #define EVENT_CODE_ISPSTAT 0xF001 /* For EVENT_CODE_ISPSTAT, the LS WORD of EventCode contains */ /* the ISP error as defined in the CompStat value in the */ /* QH_STAT Response Queue entry, and UniqueId contains the */ /* StateFlags and StatusFlags in the LS and MS WORDs */ /* respectively. */ #define EVENT_CODE_ISPCTIO 0xF002 /* For EVENT_CODE_ISPCTIO, the LS WORD of EventCode contains */ /* the Status value from the QH_CTIO Status Response Queue */ /* entry, and the ExchangeId and CtlFlags are reported in the */ /* LS and MS WORDs of UniqueId respectively. */ #define EVENT_CODE_LOGIN 0xF003 #define EVENT_CODE_LOGOUT 0xF004 /* For EVENT_CODE_LOGIN/LOGOUT, the UniqueId contains the */ /* trailing 4 bytes of the Port or Node Name of the port that */ /* logged in/out and the low word of EventCode contains bytes */ /* 2 and 3. Sorry - there's no place to put bytes 0 and 1. */ /* For logout, the logout could be either implicit or explicit. */ #define EVENT_CODE_RSRC 0xF005 #define EVENT_RSRC_IOREQ 0x0000 #define EVENT_RSRC_XCB 0x0001 #define EVENT_RSRC_SCB 0x0002 /* EVENT_CODE_RSRC is only reported once per minute. The */ /* function OsLogRsrcFail will update a counter in the OS's */ /* ADAPTER structure, and the timer routine will make an Event */ /* Log entry for each resource with nonzero counts, then clear */ /* the counts. The LS WORD of the EventCode will contain the */ /* EVENT_RSRC_xxxx type, and the count of times the resource */ /* was unavailable will be reported in UniqueId. */ #define EVENT_CODE_RESET 0xF006 /* EVENT_CODE_RESET is classified in the EVENT_TYPE_SCSI class */ /* and indicates that the upper level drivers requested a SCSI */ /* bus reset. No other information is provided. */ #define EVENT_CODE_INIT 0xF007 /* EVENT_CODE_INIT is classified in the EVENT_TYPE_INFO class */ /* and indicates that the adapter has successfully completed */ /* initialization. */ #define EVENT_CODE_SCAN 0xF008 /* EVENT_CODE_SCAN is classified in the EVENT_TYPE_INFO class */ /* and indicates that a bus scan has been initiated on the */ /* indicated adapter. */ #define EVENT_CODE_OVERFLOW 0xF100 /* EVENT_CODE_OVERFLOW indicates that the upper-level driver */ /* overflowed the Event ring buffer. This Event indicates that */ /* some events have been lost. The count of lost events is */ /* shown in UniqueId. */ **************************************************************** * The following are the Asynchronous Notification Event Codes: * **************************************************************** #define ST_AE_RESET 0x8001 /* SCSI Bus Reset occurred */ #define ST_AE_SYSERR 0x8002 /* Internal Unrecoverable error */ #define ST_AE_REQ 0x8003 /* Error reading request queue */ #define ST_AE_RSP 0x8004 /* Error reading response queue */ #define ST_AE_WAKEUP 0x8005 /* Request queue wake-up call */ #define ST_AE_TIMEOUT 0x8006 /* Execution Timeout Reset */ #define ST_AE_LIP 0x8010 /* Firmware completed Loop Init */ /* .. mb1 == LIP type, eg. f8 f8 */ #define ST_AE_LOOP_UP 0x8011 /* Firmware State Loop Up */ #define ST_AE_LOOP_DOWN 0x8012 /* Firmware State Loop Down */ #define ST_AE_LIP_RESET 0x8013 /* LIP Reset Received */ #define ST_AE_DB_UPDATE 0x8014 /* Port database update */ #define ST_AE_RSCN 0x8015 /* Registered State Change Notify */ /* Mailbox1 = AddrFmt [15:8]: */ /* */ /* AddrFmt Mailbox1 [7:0] Mailbox2 */ /* ------- -------------- -------- */ /* */ /* 00 (Port ID) Port ID MSB Port ID LSW */ /* 01 (Port ID Area) Port ID Domain Port ID Area [15:8] */ /* 02 (Port ID Domain) Port ID Domain 0x0000 */ /* 03 (Fabric Wide) 0x0000 0x0000 */ #define ST_AE_LIPF8 0x8016 /* LIP f8 received */ #define ST_AE_P2P_MODE 0x8030 /* Old Port mode */ #define ST_AE_P2P_UPD 0x8036 /* Loop/Port Update */ /* Mailbox 1 contains code: */ #define P2P_LIP_IN_P 1 /* Fatal error */ #define P2P_LIP_IN_PL 2 /* Loop chosen instead of P2P */ #define P2P_NOISE 3 /* LIP like noise */ #define P2P_CHIP_RESET 4 /* Req. driver for chip reset */ #define P2P_REQ_LOOP 5 /* Pname same, loopback mode */ ****************************************************** * The following are the Maiilbox Command Error Codes * ****************************************************** #define ST_MB_INVALID 0x4001 /* Command invalid or not supported */ #define ST_MB_HOST 0x4002 /* Error occurred on host interface */ #define ST_MB_TEST 0x4003 /* A diagnostic command failed */ #define ST_MB_COMMAND 0x4005 /* Error occurred during cmd exec */ #define ST_MB_PARAM 0x4006 /* Command parameter error */ #define ST_MB_PORT_USED 0x4007 /* Port ID already allocated */ #define ST_MB_LOOP_USED 0x4008 /* Loop ID already used */ #define ST_MB_SNS_USED 0x4009 /* Loop ID 81h-FFh already used */ #define ST_MB_SNS_LOG 0x400A /* SNS Not Logged In */ #define ST_MB_PDISC_ERR 0x4080 /* PDISC failed on MB_LOGIN_FABRIC */ #define ST_MB_TIMEOUT 0x4100 /* Mailbox command s/w timeout */ #define ST_MB_TIMESTRT 0x4101 /* Timeout waiting for mb start */ /****************** Special note for NT *************************/ /* */ /* Since the NT/2000 Port Driver will only report one event per */ /* interrupt or execution of its DPC routine, the actual events */ /* are stored in a ring buffer in the upper-level ADAPTER */ /* structure, then are dumped to the port driver in the Timer */ /* routine, one per invocation of the Timer. The Timer only */ /* executes once per 100 ms; therefore, times reported may not */ /* be accurate when a lot of events are stacked up. */ /* */ /****************************************************************/Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.