NTREG.TXT Driver File Contents (epcifc240.exe)

                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

How To Update Drivers Manually

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.

server: web3, load: 3.43