
 CLARiiON LightPulse 8000 PCI Fibre Channel Host Adapter SCSIport Information


                           EMC Corporation

                             Pre-Release v1.27a3             May 19, 2000


This diskette contains the v1.27a3 version of the LP8000 SLI-1/2 
SCSI Port driver for Windows NT 4.x and the 1.37a2 version of the Emulex
Port Driver Configuration utility.

This release includes the following files:

    README.TXT          This file
    emulex.sli          A tag file
    oemsetup.inf        The setup file used by the SCSI Adapter install program
    i386\elxsli2.sys    The driver for Intel platforms
    i386\elxcfg.exe	The configuration utility for Intel platforms
   

INSTALLATION INSTRUCTIONS:

This kit requires Windows NT version 4.0 or higher.  Service Pack 3 or greater
is recommended.

To upgrade an existing installation, copy the file driver elxsli2.sys
from the appropriate directory of the distribution kit to the 
%SystemRoot%\system32\drivers directory:

    1.  Install the diskette in drive A:
    2.  Either open Explorer or a DOS box and:
    3.  Copy a:\i386\elxsli2.sys OR a:\alpha\elxsli2.sys 
        to %SystemRoot%\system32\drivers 
	(typically %SystemRoot% = c:\winnt)
    4.  Copy a:\i386\elxcfg.exe OR a:\alpha\elxcfg.exe to %SystemRoot%\system32
    5.  Reboot Windows NT

To install the Emulex LP8000 SCSI port driver on an installed NT 4.0 system:

    1.  Select "Start Menu"
    2.  Select "Settings" Program Group
    3.  Select "Control Panel" Program Group
    4.  Select "SCSI Adapters" Icon
    5.  Select "Drivers" Tab
    6.  Select "Add" Button
    7.  Select "Have Disk" Button
    8.  Insert Emulex LP8000 NT SCSI software diskette
    9.  Enter  path to the NT driver (a:\) and select "OK"
   10.  Choose the appropriate option and select "OK"
   11.  Reboot Windows NT

After installing the Emulex LP8000 SCSI port driver and rebooting NT, 
Fibre Channel SCSI disk devices will be automatically detected by NT.



Installation Options

Loop, Automap SCSI Devices

This is the basic loop and disk drive(s) configuration. No fabric, and automatically
discover disk drives when booted.



Fabric, Automap SCSI Devices

This is the basic Fabric and disk drive(s) configuration. The connection to the 
fabric is assumed to be point to point. SCSI Devices will be automatically mapped
when discovered.


NOTE: The installation options will apply for every adapter in the system. If there
are multiple adapters in the system requiring separate parameters, then it will be
necessary to modify the parameters with the configuration utility and then reboot.


Registry Options

The options for the device may be set in the SERVICES section of the registry under
the elxsli2 key. Options set under the elxsli2 key are global, meaning they apply as
the default for each adapter installed. The options listed as installation options
are the only globally supported options. The associated value names for each of the 
options are listed below:

AutoMap
   Value 1 or 0, corresponding to the checked or not checked state of the Automatically
   map SCSI devices checkbox.

   Default value: 1
   Type: REG_DWORD

MaximumLun
   The Maximum Number of LUNs to probe for during device discovery.

   Default value: 32
   Type: REG_DWORD

MaximumQueueDepth
   The maximum number of SCSI commands that may be issued to a single LUN before
   one of the commands must complete.

   Default value: 8
   Type: REG_DWORD

NsQueryAll
   If 1, request all N-Ports connected to the Fabric from the name server. If 0,
   request only registered SCSI FCP devices.

   Default value: 1
   Type: REG_DWORD
InitLinkFlags
   If 2, initialize as Point to Point, if 1, initialize as Arbitrated Loop. The
   presence of a fabric is automatically detected in either case.

   Default value: 0
   Type: REG_DWORD

MultipleScsiClaims
   If 1, report each SCSI device for every port by which it is connected. If 0,
   report the SCSI device only on the first port by which it is connected.

   Default value: 0
   Type: REG_DWORD

ForceSli1
   If 1, use SLI-1 even if the adapter is capable of SLI-2. If 0, use SLI-2 if the
   adapter is capable of SLI-2, otherwise use SLI-1.

   Default value: 0
   Type: REG_DWORD

WaitReadyTimeVal
   The time in seconds the driver will wait for a device to become available before 
   commands to the device are returned with SCSI selection timeout errors. If the value
   is -1, then the timer value used is 2 * R_A_TOV. If the timer value is 0, then the 
   driver will wait forever for the target to become available.

   Default value: 10
   Type: REG_DWORD

EDTOV
   Value in milliseconds to be used for the Error Detect Timeout Value.

   Default value: 1000
   Type: REG_DWORD

ALTOV
   Value in milliseconds to be used for the Arbitrated Loop Timeout Value.

   Default value: 15
   Type: REG_DWORD

RATOV
   Value in seconds to be used for the Resource Allocation Timeout Value.

   Default value: 2
   Type: REG_DWORD

ARBTOV
   Value in milliseconds to be used for the Arbitration Timeout Value.

   Default value: 1000
   Type: REG_DWORD   

DriverTraceMask
   Bit mask of available trace options. Trace data is written into the system
   event log and if the debugger is connected, to the debugger window.

   Default value: 0
   Type: REG_DWORD

   Following is a list of trace types and the mask values. It is possible to 
   bitwise OR two or more trace types.

		   Trace Type		Mask Value
		SLI_TRACE_MAILBOX       0x00000001
		SLI_TRACE_SCSI_ERR      0x00000002
		SLI_TRACE_IOTAGS        0x00000004
		SLI_TRACE_IOCB          0x00000008
		SLI_TRACE_FABRIC        0x00000010
		SLI_TRACE_SCSI_MAPPING  0x00000020
		SLI_TRACE_INIT          0x00000040
		SLI_TRACE_IOCTL         0x00000080
		SLI_TRACE_SCSI_RESET    0x00000100
		SLI_TRACE_LOGIN         0x00000200
		SLI_TRACE_NET_XMIT      0x00000400
		SLI_TRACE_NET_RECV      0x00000800
		SLI_TRACE_WAIT_READY    0x00001000
		SLI_TRACE_RECV_ELS      0x00002000
		SLI_TRACE_DOWNLOAD      0x00004000
		SLI_TRACE_PRLI          0x00008000
		SLI_TRACE_REPORT_LUNS	0x00010000
		SLI_TRACE_ENTRIES	0x00020000
		SLI_TRACE_ELS_ERRORS    0x00040000


RegisterForStateChange  
   If 1, the driver will register for RSCN state change notifications if a 
   fabric is present. If 0, the driver will not register for the RSCN state 
   change notifications.

   Default value: 1
   Type: REG_DWORD

UseReportLuns
   If 1, the driver will use the SCSI Report LUNs command to determine the 
   presence of LUNs on SCSI devices. If 0, the driver will poll up to the 
   number of LUNs configured with the MaximumLun configuration option.

   Default value: 0
   Type: REG_DWORD

MapLuns
   If 0, the driver will operate as before, each LUN will be addressed without any 
   address translation.  If the value is 1, LUN mapping is enabled, and each NT LUN 
   number will be translated to a 64 bit Fibre Channel LUN number. For new LUNs, this 
   mapping will be done automatically by the driver. If the report LUNs command is 
   supported by the target, the first 256 LUNs reported may be used by NT. If the 
   value is 2, LUN mapping is enabled, but the driver will not automatically map LUNs.

   Default value: 0
   Type: REG_DWORD

BrokenRscn
   If 0, the RSCN payload is used to determine whether devices have been added or 
   removed from the system. If 1, the RSCN payload is ignored and the Name Server
   is queried for the new information.

   Default value: 0
   Type: REG_DWORD

ShowUnknowns
   If 0, only LUNs with a Peripheral Qualifier of 0 will be reported in the Inquiry
   buffer. If 1, then LUNs with a Peripheral Qualifier of 0 or 1 will be reported in
   the Inquiry buffer.

   Default value: 0
   Type: REG_DWORD

AttemptReEstablish
   If 0, when a target disappears and then "quietly" reappears, it will not be detected.
   A target has quietly reappeared when no LIP occurs for a device on a loop or no
   RSCN is issued for a device on a switch. If 1, after a device disappears, the driver
   will poll the Fibre Channel address of the device periodically to see if it has
   reappeared.

   Default value: 0
   Type: REG_DWORD

Network
   This value is comprised of two single bit bit fields and one 16 bit integer. Bit 31
   is the Network enable for the port. If Network Enable bit is set, then the network
   driver can bind to this port. If the Network Enable bit is not set, then the network
   driver will not be able to bind to this port. Bit 30 is the Class of Service bit.
   If the Class of Service bit is set, network traffic will use Class 2. If the Class
   of Service bit is not set, network traffic will use Class 3. Bits 15 - 0 are the 
   MTU to use for this network connection.

   Default value: 1514 (Network Disabled, Class 3, MTU = 1514 bytes)
   Type: REG_DWORD

ScanDeviceIdOrder
   If 0, then the local loop is scanned from ALPA 0x01 to ALPA 0xEF. If 1, then the
   local loop is scanned from 0xEF to 0. Also, if 1, the NT ID for automapped SCSI
   devices is the same as the device's Device ID.

   Default value: 1
   Type: REG_DWORD

UseResetForRetry
   If 0, the driver will retry commands internally. If 1, then the driver will retry
   commands by completing them with a status of SRB_STATUS_BUS_RESET.

   Default value: 0
   Type: REG_DWORD

RetryUnitAttention
   If 1, the driver will retry commands that complete with Unit Attention status. If 0,
   the driver will complete the command with appropriate status.

   Default value: 0
   Type: REG_DWORD

TranslateQueueFull
   If 1, the driver will translate SCSI Queue Full status to SCSI Busy status to work
   around a behavior of the disk class driver. If 0, then the driver will not translate
   the status.

   Default value: 0
   Type: REG_DWORD

RetryTimer
   The time in milliseconds the driver will wait before retrying a command.

   Default value: 200
   Type: REG_DWORD

RetryAttempts
   The number of times the driver will retry a command completing with a retryable status
   before returning the status to the caller.

   Default value: 64
   Type: REG_DWORD

InterruptCoalesce
   The InterruptCoalesce value is a combination of fields. The first field is bits 0 to
   7, which is the number of I/Os that should complete before an interrupt occurs. Bits
   8 to 14 are the number of milliseconds that will expire before an interrupt will occur 
   if some I/Os complete, but less than the number of I/Os specified in bits 0 to 7.
   This option is only meaningful for adapters with firmware version 3.00 or later.

   Default value: 0
   Type: REG_DWORD

IosPerInterrupt
   This is the maximum number of I/Os that the driver will complete in a single interrupt.
   This value may be modified to achieve an overall system fairness.

   Default value: 128
   Type: REG_DWORD

HgpOffset
   This value is the offset into SLIM to located the Host Get and Put pointers. If the 
   value is 0, the Host Get and Put pointers are located in system memory. The range
   of this value should be between 0xc00 and 0xe00, although any value below 0xff0 is
   accepted.

   Default value: 0
   Type: REG_DWORD

NodeId
   The NodeId is a 32 bit quantity that is used with a fixed 32 bit value to create a
   World Wide Node name for the entire system. The created World Wide Node name has the
   value of 50000C90xxxxxxxx, where xxxxxxxx is the 32 bit value contained by NodeId.
   It is up to the assigner of NodeId to ensure the uniqueness on a single fibre channel
   network. If the value is 0, or the value is not present in the registry, the Node 
   World Wide name for the system is the Node World Wide Name of the first adapter
   found by the driver. This value is normally set as a global flag. If set as an 
   adapter value, the only adapter for which it will have any meaning is the first 
   adapter found by the driver.

   Default value: 0
   Type: REG_DWORD

EnableHotPlug
   If 0, the Compaq Hot Plug PCI interface is not created by the driver. If 1,
   the Compaq Hot Plug PCI interface is exported by the driver.

   Default value: 1
   Type: REG_DWORD

UseUniqueWwns
   If non-zero, the driver will use the Node World Wide Name stored in the NVRAM 
   of each adapter. If zero, the driver will use the Node World Wide Name of the 
   first adapter found for all adapters. If zero and NodeId is non-zero, then the 
   driver will create a Node World Wide Name from NodeId and use it for all adapters.

   Default value: 0
   Type: REG_DWORD

LinkDownTimer
   The amount of time to wait for the link to recover after a link failure. If the 
   link is not restored in the number of seconds specified in LinkDownTimer, the 
   driver will return all I/Os pending on the link with a Selection Timeout error.

   Default value: 10
   Type: REG_DWORD

RetryPlogiOpenFailures
   If non-zero, the driver will retry PLOGIs that fail with an open failure up to 
   3 times. If zero, the driver will assume a PLOGI that fails with an open failure
   to indicate no device is present.

   Default value: 0
   Type: REG_DWORD

Below the elxsli2 key are keys for each adapter installed in the system. Currently, 
the keys are the electrical PCI bus number and slot number of the adapter. Note that 
the electrical slot number may not match the mechanical slot number. Each of the global
values may be overridden by using the same value name under the per adapter key. Also,
the following values are available under the adapter key:

DidPollList
   A list of DWORDs representing a list of 3 byte fibre channel addresses to be checked
   during polling. Using the binary editor in the registry editor, these DWORDs must be 
   entered in Little-Endian mode, ie. address 11 22 33 must be entered as 33 22 11 00.

   Default value: <empty>
   Type: REG_BINARY

ScsiMap
   A key that contains the map of World Wide Port names to SCSI IDs. Each value under
   this key binds one World Wide Port name to a single SCSI ID.  Each value uses the
   16 digit hex representation of the World Wide Port name as the value name. The value
   is the SCSI ID to which the World Wide Port name is mapped. Each value is of
   type REG_DWORD.

   Also contained in ScsiMap is the LUN mapping if LUN mapping is enabled. The value name
   for each LUN map is created from the World Wide Port name of the device. The value
   name is LunMappingXXXXXXXXXXXXXXXX, where XXXXXXXXXXXXXXXX is the 16 digit hex World
   Wide Port name of the target. The LunMapping value is of type REG_BINARY and is an
   array of Scsi LUN Mapping structures. The structure is defined as follows:

   typedef sliLunMap {
      LARGE_INTEGER FibreChannelLUN;
      ULONG NtLUN: 8;
      ULONG Disabled: 1;
      ULONG Present: 1;
      ULONG Pad: 22;
   } SLI_LUN_MAP, *PSLI_LUN_MAP;

ffTraceMask
   Value 0 - 0xffffffff. This sets the trace mask on the FireFly. If the PCI Print 
   option is selected, then the resulting messages will be printed using KdPrint 
   from inside the driver.

   Default value: 0
   Type: REG_DWORD



Erratta

The driver does not auto-detect between arbitrated loop and point to point.

The new Seagate NT drive utility "drives20" does not work with the driver. The
original utility "drives" does work.

It is not expected that current NT utilities for the LP 6000 Miniport driver
will work with this driver.

Removal of the port driver does not remove the configuration utility. (CR#748)

Port driver does not initialize correctly if connected point to point to another
N-Port. (CR#1387)

The system may blue screen if aspi32.sys is present. If this driver is present and
a blue screen occurs, download a new aspi32.sys from the Adaptec support web site.

Using the Silkworm 2800 with the adapter connected on a public loop, the link may
take over 10 seconds to initialize. When this happens, devices will not be seen
until disk administrator is run. This occurs only on the Silkworm 2800 switch with
the adapter configured for Arbitrated Loop. If the adapter is configured as a 
point to point connection, the error does not occur.

If a LUN or Target is deleted, disk administrator run, and then the LUN or Target
is restored to its previous mapping, the disk administrator run again, NT will create
a new disk class object for the device. This will cause data corruption.

Some applications issue SCSI pass through commands with the data tranfser length set
to an inappropriate value or the direction flags are incorrect. The port driver does
not complete these commands successfully.


Changes from driver version 1.24.

The port driver defaults in the standard oemsetup.inf file have changed for the 
following registry entries: UseReportLuns is set to 1, WaitReadyTimeVal is set 
to 45 seconds, RetryTimeVal is set to 2000ms. (CR#2258)

A hard link down timer has been added. It is LinkDownTimer and the default is 
10 seconds. (CR#2259)

The driver will no longer leak memory pages during link failures or RSCNs. (CR#2261)

The driver will now complete commands if the link is down for more than LinkDownTimer
seconds. Previously, command would be held forever if at least one command experienced
an I/O timeout before the timer expired. In previous versions of the driver, the
Link Down Timer use the WaitReadyTimeVal. (CR#2262)

The driver will no longer cause a BSOD if one of the following conditions
occur:

     A sequence timeout result for a PRLI.
     Receiving a LOGO from a SCSI Target not in response to a PDISC.
     PDISC failure when the node structure has a valid RPI.
(CR#2285)

The driver will no longer cause the configuration tool to freeze when deleting targets
with multiple LUNs. (CR#2231)

The driver now displays Emuelx PSUEDO for the psuedo-device name when Hot Plug PCI is 
enabled. (CR#2303)

The driver will now keep connection to devices when a cross-connect switch is power
cycled repeatedly. (CR#(2304)

The driver will no longer cause a BSOD if something attempts to bind to the psuedo-
device. (CR#2308)

The driver will no longer sporadically generate a SELECTION_TIMEOUT for a device during
LIPs. The SELECTION_TIMEOUT will only occur if the device is not restored after
the wait ready timer expires. (CR#2307).

The driver will now operate correctly with the Brocade QuickLoop option. (CR#2305)

The receive ELS Request error event log message has been moved to trace flag
SLI_TRACE_ELS_ERRORS. (CR#2306)

The default value for E_D_TOV has been changed to 2 seconds. (CR#2359)

The driver will no longer BSOD if it receives a PRLO. (CR#2360)

The driver will no longer BSOD if a command is aborted when it is already in 
the response ring of the adapter. (CR#2361)

The driver will no longer allow the dynamic removal of the boot device. (CR#2363)

The driver will no longer issue 2 FLOGIs in response to the same link up event. (CR#2396)

The sliHandleRingEvent: Unknown receive sequence: XXX message has been moved to
the IOCTL_TRACE_ELS_ERRORS trace mask bit. The RCTL and TYPE are also displayed.
(CR#2398)

The driver will no longer return I/Os with errors until after the link down timer or
wait ready timer has expired. (CR#2401)

The driver will now detect the device at target ID 0 on adapters that have stale 
information in the BIOS Configuration region. (CR#2400)

The driver will no longer BSOD in some cases during the Inquiry scan if there are a 
large number LUNs not present and the Use Report LUNs option is not used. (CR#2428)

The driver can now boot off of a LUN greater than 32. (CR#2505)

The driver no longer leaks memory when a timer expires. (CR#2506)

PLOGI's that fail with INVALID_RPI status will now be retried. UNREG_LOGIN is
synchronized with PLOGI/PDISC. (CR#2547)

The driver now performs an UNREG_ALL to the correct RPI when a LOGO is received 
in reply to a PDISC. (CR#2551)

If an Inquiry to a device completes with an error such as SRB_STATUS_SELECTION_TIMEOUT,
the scan of that device is aborted. (CR#2556)

Installation of Microsoft Clustering will no longer cause a BSOD. (CR#2546)

The driver will now detect a device that obtains the same Fibre Channel Address
as a device that was previously removed. (CR#2558)





Changes from configuration utility version 1.36

The utility can now dump the memory of an LP-8000. (CR#2395)


Changes from configuration utility version 1.37a1

The user can now tab to the adapter list to select an adapter. The first adapter in 
the list is selected automatically when the tool is started. (CR#2435)




*** NOTES ABOUT MAPPING ***

Targets and LUNs may be added dynamically by running Disk Administrator after 
added to the Target and/or LUN maps via the Emulex Configuration Utility.

After a Target or LUN has been deleted by the Emulex Configuration Utility, it is
no longer available to the NT System. Care must be taken to ensure no system files 
or other important files reside on the disk/LUN being deleted.

If a LUN or disk is deleted, and Disk administrator is run, and then it is added back, 
the next time Disk Administrator is executed, NT will create a new device object for 
the disk. This will cause it to be visible as two different devices. To replace a disk
without the creation of a new device object, do not execute disk administrator between 
removing the old device and adding the new device.

If the automatic mapping of SCSI targets is enabled, but the automatic mapping of LUNs
is not enabled, it will be necessary to manually map the LUN(s) of the SCSI targets 
that are desired. If this manual mapping of the LUN(s) is not performed, the devices
will not be available.
 


