README.TXT Driver File Contents (emulex.zip)

Driver Package File Name: emulex.zip
File Size: 215.2 KB

             Emulex LightPulse  6000 / 7000 / 8000 / 9000 / 850 / 950
                     SCSI Miniport Driver for Windows NT

                       Version 5-4.41a8 / Win2K Release
                                     
June 6, 2000

This kit contains release notes and necessary files to install the 
Emulex LP6000 / LP7000 / LP7000E / LP8000 / LP9000 / LP850 / LP950
SCSI Miniport driver in Windows 2000 RC-2 (or higher) system.

The following files are on this disk for supporting Windows NT:


   \README.TXT         The file you are now reading
   \TXTSETUP.OEM       Driver installation script for NT Boot-time 
                       setup program (boot BIOS must be installed)
   \LPSCSI             Tag file used by the installation
   \Win2K\OEMSETUP.INF Driver installation script for NT
                       setup program
   \Win2K\lpxnds.sys   x86 NT Scsi Miniport driver v5-4.41a8 for Win2K
   \Win2K\lputilnt.exe x86 v1.1 GUI Utility (F/W down-load, etc)


INSTALLATION INSTRUCTIONS:
--------------------------

This kit requires Windows 2000 RC-2 or higher.  

To install the Emulex LP7/8000 miniport driver on an installed 
Win 2000 system:

NOTE:  The OEMSETUP.INF file will overwrite existing registry settings)

Shut down Windows NT, install the adapter in the PCI bus and restart the
system.  NT will recognize the addition of new hardware and walk the user
through a series of events to complete the installation.  Follow the 
prompts and direct NT to the location of this kit (A\Win2K: or a disk sub-
directory).



MICROSOFT NT ISSUES / INFORMATION:
----------------------------------

1. LPxx HBA is not recognized when installed in a system with multiple
   PCI buses.

   On systems that employ multiple PCI buses, the NT HAL (Hardware
   Abstraction Layer) may improperly assign PCI resources to an adapter
   which requests multiple address ranges, like the Emulex LPxx
   (which requests 3 ranges).  When this occurs it will prevent the
   driver from finding the adapter.

   Microsoft has provided a work-around that causes the HAL to use the 
   BIOS assigned defaults, and not to reassign PCI resources.  This
   workaround involves editing the BOOT.INI file (use Notepad or edit,
   you may need to remove the read-only file attribute, e.g. attrib 
   -r -h -s c:\boot.ini) and adding the "/PCILOCK" option to the system
   boot entry, and reboot.  NOTE:  For ALPHA users this option is added
   to the ROM boot configuration options.


2. NT limits the number of outstanding SCSI requests per SCSI bus to 16.

   The NT SCSI subsystem limits the outstanding I/O requests on a per bus
   basis.  The default limit is 16 outstanding requests.  Using NT 3.51 
   this is a fixed limit that can not be increased, but as of as of NT 4.0
   Microsoft has provided a means to change this limit:

   NOTE:  The driver installation will set this limit to 150, if there
          was no previously assigned value.

   Using regedt32 under the following key:

     "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->lpxnds"

      Add (if not already present) the following Keys under lpxnds

      Parameters->Device  (Parameters apply to ALL LPxxx adapters)
                |   or
                ->Devicen (Parameters apply to LPxxx adapter number 'n' 0-99)

   Under Device or Devicen add a value of "NumberOfRequests" Type REG_DWORD,
   with a value of from 16 to 256 (decimal).  Microsoft specifies to use
   this value sparingly, as these request entries come from Non-Page-Pool
   (this is especially true with the ALPHA systems).

3. NT limits the size of a SCSI I/O to about 64Kbytes per low level request.

   The NT SCSI subsystem limits the size of an I/O queued to a miniport
   driver based on the number of scatter/gather entries allocated.  Win2K
   provides a means to change this limit:

   NOTE:  The driver installation will set this limit to 129 (enough to
          support 512KByte I/Os).

   Using regedt32 under the following key:

     "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->lpxnds"

      Add (if not already present) the following Keys under lpxnds

      Parameters->Device  (Parameters apply to ALL adapters)
                |   or
                ->Devicen (Parameters apply to adapter number 'n' 0-99)

   Under Device or Devicen add a value of "MaximumSGList" Type REG_DWORD,
   with a value of from 13 to 255 (decimal).  Microsoft specifies to use
   this value sparingly, as these request entries come from Non-Page-Pool.

4. Win2K allows a disk I/O time-out to be increased.

   The Win2K SCSI subsystem allows the disk I/O time-out value to be 
   increased in case of frequent device I/O time-outs:

   NOTE:  The driver installation will set this time-out to 60 seconds, if 
          there was no previously assigned value.

   Using regedt32 under the following key:

     "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->Disk"

   Add a value of "TimeOutValue" Type REG_DWORD, the value specified is
   in seconds.  This entry should only be modified if very frequent
   time-outs occur.


LPxx DRIVER RELEASE NOTES:
-----------------------------

General Features / Behavior:
-----------------------------

 - Win2K Boot Support:

   The Win2K standard CD natively supports a driver that facilitates
   build/boot from a Private Loop with an LP6000/LP7000/LP8000.  To
   use an updated Emulex driver which supports build/boot in either
   loop or Fabric environments, Emulex has changed the driver name
   from LP6NDS35.SYS to LPXDNS.SYS.  This allows use of the <F6>
   option in the text setup process to specify a third party driver.
   When prompted during the setup process, insert this kit and select
   the appropriate Emulex HBA from the menu:

   - Emulex LP6000 HBA
   - Emulex LP7000 HBA
   - Emulex LP8000 HBA
   - Emulex LP850/LP950/LP9000


 - NT GUI utility support:

   This driver currently supports an NT GUI utility that allows firmware
   update and all of the registry parameters to be set / queried 
   dynamically and permanently, thru the registry.  All parameters are 
   read by the utility through the drivers IOCTL interface, so as new
   parameters are added / subtracted the utility need not change (the
   utility also provides help for each registry option as an option is
   single clicked).

   The utility also allows firmware down-load and many other operations
   such as adapter reset and revision information.

 - Fabric Support:

   This driver currently supports two modes of operation based on the registry
   parameter "Topology=n":

   . Topology=0;
     .  FC-AL (Loop) toplogy will be used

        After successful Loop Initialization, the driver attempts login with 
        an FL_Port (Switched Fabric Loop Port):

           If FL_Port login is unsuccessful, private loop mode will be 
           entered.  This involves the steps listed below for private loop
           operation.

           If FL_Port login is successful then public loop operation will
           be employed.  This involves the steps listed below for Fabric
           operation.

   . Topology=1;
     .  Switched F_Port (PT-PT) topology will be used
  
        After successful PT-PT Initialization, the driver attempts login with 
        an F_Port (Switched Fabric PT-PT Port).  In this mode of operation a
        Switched Fabric is required, PT-PT to a Target is not supported (for
        these configurations use Topology=0;).

   . Topology=2; or Topology=3; 
     . Allows dynamic Topology detection/selection, if the latest firmware is
       used (see section on Registry parameters; Topology for more details). 

   . Private Loop Operation:

      If a switch is not discovered in FC-AL mode (Toplogy=0;) the the driver
      will perform the following steps:

      .  If an FC-AL device map is present, each node described in the map
         will be logged into and verified to be a Target.
      .  If an FC-AL device map is not present, logins will be attempted with
         all 126 possible FC-AL addresses.
      .  LOGO/PRLO are also handled by the driver.  Reception of either will
         cause new discovery/Logins to take place.

   . Fabric Operation:

      If a switch is discovered the the driver will perform the following
      steps:

      .  FL_Port login (Topology=0;)
      .  F_Port  login (Topology=1;)
      .  Simple Name Server login
      .  State Change Registration
      .  Simple Name Server query for devices (the registry parameter SnsAll
         determines whether or not all N_Ports are requested (SnsALL=1;) or 
         only SCSI FCP N_Ports (SnsAll=0; default) )
      .  Discovery / device creation will then occur to each Target device
         described by the Name Server
      .  RSCN and LOGO/PRLO are also handled by the driver.  Reception of
         either will cause a new NameServer query to occur, followed by new
         LOGINs.

      NOTE1: This driver is "Soft-Zone-Safe".

      NOTE2: In a Fabric environment the order that disk devices are created
             is based on the Name Server response data (which is not guaranteed
             to be in any special order).  This means that between successive 
             boots the same device MAY BE IDENTIFIED WITH A DIFFERENT PHYSICAL
             DEVICE NUMBER.  However, any devices which have been assigned a 
             device letter through disk administrator will continue to use that
             letter regardless of the physical device number.

 - Driver Addressing Mapping / Hot-Swap Concerns:

   Once a device is initially assigned a Bus/Target ID (at boot), the device
   will continue to be mapped to its Bus/Target ID based on WWPN,
   Nodename or Fibre Channel address (D_ID) depending upon the following
   registry options:

   . WWPN:      HardAddress=0;MapNodeName=0;
   . NodeName:  HardAddress=0;MapNodeName=1;
   . D_ID:      HardAddress=1;(MapNodeName=don't care)

   By default, a device is mapped via WWPN which allows it to be moved
   from one switch port (or JBOD slot) to another and have the Host I/O
   continue to be routed to that specific device.

   Environments that involve hot-swapping of an array controller or
   drive typically require mapping the "new" device in place of the
   old.  If the swapped-in device presents a different WWPN (than the
   original device) then it will be mapped  as new device, unless
   mapping takes place by either D_ID or NodeName.  If hot-swapping
   is required use the following guidelines:

   .  Map by NodeName when:

      A disk array with hot swappable controller(s) is employed that
      maintains the same Fibre Channel NodeName after replacement, but
      uses a unique Fibre Channel WWPN per controller.

   .  Map by D_ID when:

      A native Fibre Channel disk drive or array controller is employed
      that when replaced will identify itself with a different Fibre 
      Channel NodeName and WWPN from the original.

      NOTE:  LPUTILNT allows the MapNodeName and HardAddress options 
             to be dynamically managed.  This allows user to temporarily
             change the option, swap the array controller/drive and then
             go back to the default of mapping based on WWPN.

 - The internal name in the properties item for LPXNDS.SYS reflects SLI-2
   interface support.

 - SLI-2 driver interface support. 

   The driver supports a lighter-weight interface called SLI-2 available
   in v2.00 firmware (and above) that reduces CPU overhead by causing the
   adapter to DMA command/response/buffer lists to/from Host memory without
   CPU intervention.

   There is a new registry parameter added that controls which interface
   to use (SLI-1 vs. SLI-2) called "SliFlags".  Here are the new meanings:

   SliFlags=0; - Automatic mode (default); use SLI-2 if the adapter F/W
                                           supports it, otherwise use SLI-1
           =1; - SLI-1 only mode
           =2; - SLI-2 only mode 

 - Third Party Process Logout may be used to break reservations.

   By default a TPRLO will be sent when BUS_RESET() is called
   to clear SCSI reservations.  This is the recommended way to clear
   Target reservations.  The driver default
   has both ResetFF=1 and ResetTPRLO=1, to allow both Seagate (which doesn't
   currently support TPRLO) and Tachyon reservation clearing.

 - Command Queue Full / SCSI Logical Busy handling:

   The driver (by default) will issue a status of SRB_STATUS_BUSY when it
   processes a SCSI_COMMAND_QUEUE_FULL or SCSI LOGICAL BUSY error returned
   from the Target.  The NT Port driver will delay 1-2 seconds before re-
   queuing this request which gives the Target drain time.

   This is to avoid an NT Scsi subsystem error when NT re-queues a command
   that returns QUEUE_FULL (NT can re-queue the Srb with a 0 byte count
   (BAD) and limit the queue depth to the level when the QUEUE_FULL was
   received).

   The behavior of returning SRB_STATUS_BUSY can be turned off by using
   the EmulexOption registry parameter (documented below).


Bug Fixes / New Features:
-------------------------

This version of the NT SCSI driver incorporates the following changes
and new features from the v5.40 release:


1.  Turn off SERR and PERR PCI Configuration options.  Report PERR or SERR
    as an ERROR_ATTENTION Interrupt (this allows better error correlation
    and compatibility with certain PCI Hosts do not handle SERR/PERR).

2.  Turn off auto-ABTS during Fabric Discovery.  This cuts down on delays
    associated with failed PLOGI/PLRI/TPRLO operations.

3.  Add the option to disable LIRP/LILP during Loop Initialization.  This
    is performed by setting bit 6 (0x80) of EmulexOption and allows 
    simulation of loops with older Tachyon devices. 

4.  Removed the ResetDisable keyword option and moved it to bit 7 (0x100)
    of EmulexOption.

5.  Added support for the v3.10 firmware auto-Topology selection.  The two
    new options cause the HBA to start with either Loop or PT-PT and then
    if unsuccessful fail-over to the alternate topology.  Topology 0-3:

    0=  FC-AL (Loop) 
    1=  PT-PT Fabric
    2= *FC-AL first, then attempt PT-PT
    3= *PT-PT first, then attempt FC-AL

    Note *: Topology fail-over requires v3.20 firmware or higher.
            If firmware is used that does not support Topoloogy fail-
            over, options 0,2 and 1,3 are analagous.

6.  Modified the discovery portion of the driver to allow for multi-
    threaded discovery (up to 4 concurrent threads).  This allows for
    more robust discovery when/if Targets are experiencing time-outs
    or errors.

7.  Modified the Inquiry data string for the HotPlug PCI pseudo device
    to "Emulex Pseudo".

Changes since 5-4.41a3:

8.  Changed the driver default for the registry option SimulateDevice
    to 0 (from 1.  This will prevent a pseudoDevice from being created
    unnecessarily.  This option should be set (=1) when no Targets or
    LUNs are configured to allow the utility LPUTILNT to be executed.
    Also the OEMSETUP.INF adds the value SimulateDevice=0; to the
    DriverParameter value, to make it easier to manually enable
    the simulated device (change SimulateDevice=0; to SimulateDevice=1;). 

9.  Fixed a bug that prevented TPRLO from succeeding (if ResetTPTLO=1;).
    This prevented Microsoft Cluster from passing.

10. Fixed a bug if registry option HardAddress=1;.  The bug prevented
    NodeTimeOut from working properly if this option was set.

Changes since 5-4.41a4:

11. Fixed a bug that could cause devices to dissapear (causing read/write
    errors) if Hibernate is attempted while I/O is active.  This same 
    issue could occur if successive HBA re-inits were performed during
    I/O activity (could be performed with LPUTILNT utility).

12. Added the ability for the Boot BIOS to communicate the link Topology
    to the driver for the boot HBA.  This allows booting from Public /
    Private Loop or F_Port Fabric.

Changes since 5-4.41a5:

13. Change the driver name (internal name as well) and Registry key name
    from LP6NDS35 to LPXNDS to facilitate bypassing the native Win2K
    kit driver (which only supports Private Loop).

Changes since 5-4.41a6:

14. Fixed crash dump problem.

Changes since 5-4.41a7:

15. Fixed SRB_STATUS_BUSY problem. Pulling device or cable gets the driver to 
    return SRB_STATUS_BUSY to port driver. In current Win2k implementation, 
    port driver only tries 21 more times (21 seconds) and assumes the device is
    dead if receiving SRTB_STATUS_BUSY. This is a workaround to allow the 
    timeout/recover algorithm to have more than 21 seconds to timeout.

16. Change the default setting of Topology to 2.
    
Registry Options:
-----------------

    The NT SCSI driver has many options which may be modified to allow
    different behavior without the need to recompile the driver.  These
    options all have defaults within the driver, such that when not specified
    in the registry driver defaults are exercised.  Below is a list of the
    individual options and how to set them.

    Under "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->lpxnds"

    Add (if not already present) the following Keys under lpxnds

    Parameters->Device   (Parameters apply to ALL LP6000 adapters)
              |   or
              ->Devicen  (Parameters apply to LP6000 adapter number 'n' 0-99)

    Under Device or Devicen add a value of "DriverParameter" Type Reg_SZ.  
    The string can contain multiple entries separated by a semi-colon (;).  
    Current parameters that can be set are as follows:


    AbortStatus=0xn;  values from 0x00-0xFF, controls NT SRB error status for
                      general Abort conditions, default=SRB_STATUS_BUS_RESET
                      (0x0E) which will not cause the current NT Class driver
                      to throttle down I/O performance after 4 of these errors
                      have been received (on a per-LUN basis)

    AltMap=n;         values from 0-1, default=0, Alternate Map feature,
                      0 = five busses 32 Targets per Bus,
                      1 = one bus 128 Targets on a single Bus

    Class=n;          values from 0-2, default=2, controls which Fibre Channel
                      Class will be used: 0=Class 1, 1=Class 2, 2=Class 3

    CrfIntrpt=n;      values from 0-1, default=0, Coalesce Response Interrupt
                      Feature,  this feature must be used in conjuction with 
                      CrfMsCnt and CrfRspCnt and allows the HBA to hold off 
                      from interrupting the Host as long as the Host has made
                      progress on the outstanding response queue during the
                      last CrfMsCnt period.

    CrfMsCnt=n;       values from 0-63, default=0, Coalesce Response Feature,
                      this value specifies a count of milliseconds after which
                      an Interrupt response is generated if CrfRspCnt has not
                      been satisfied.  Zero specifies immediate reponse 
                      notification.  The CRF feature allows either 'n'
                      milliseconds or 'y' response entries posted prior to
                      generating an Interrupt.

    CrfRspCnt=n;      values from 0-255, default=0, Coalesce Response Feature,
                      this value specifies a count of Response Entries after
                      which an Interrupt response is generated.  Zero specifies
                      immediate reponse notification.  The CRF feature allows
                      either 'n' milliseconds or 'y' response entries posted 
                      prior to generating an Interrupt. 

    DiscoveryDelay=n; values from 0-7, default=0, controls whether the driver
                      waits for 'n' seconds to start port discovery after 
                      link up.  
                      0=    Don't wait after link-up
                      1-7 = #seconds to wait after link-up before starting 
                            port discovery

                      Setting this parameter from 2-5 seconds helps device
                      availability with certain Target vendors.

                      NOTE: Any Target that enters PDISC Pending state upon
                            receipt of a Fabric RSCN,  requires this parameter
                            to be set >= 2 seconds.  Check with your Target
                            vendor to see if this is required.

    EDTOV=n;          values are in milliseconds from 500 to 10000, 
                      default=2000.  Represents Error Detect Time-out value
                      prior to LIP

    ElsRetryCount=n;  values from 1-255, default=1, controls how many retries
                      are used when an ELS_REQUEST (like PLOGI, PRLI, etc.)
                      times-out.  

    ElsRjtCount=n;    values from 0-255, default=45, and controls how to
                      treat LINK_SERVICE_REJECTs with either
                      LOGICAL_BUSY/INVALID_NODE or 
                      UNABLE_PROCESS/CMD_IN_PROCESS, reasons/explainations.
                      A non-zero count allows these responses to be retried
                      on a fixed 2 second interval for up to the value
                      specified.

                      This feature has been strongly recommended
                      by certain array vendors.

    ElsTimeOut=n;     values from 0-1, default=0, controls whether the driver
                      issues a LIP when 2 consecutive Extended Link Service
                      requests (like PLOGI or PRLI) time-out.
                      0= Don't issue a LIP when 2 consecutive ELS's time-out
                      1= Issue a LIP when 2 consecutive ELS's time-out

    EmulexOption=n;   values from 0x0 - 0xEFFFFFFF, default=0x0, this is a
                      bit vector of options, one bit per option listed below:

                      Value:   0x00000001   DISABLE_SCSI_BUSY -
                                               Don't return SRB_STATUS_BUSY
                                               to SCSI_BUSY errors
                      Value:   0x00000002   LOG_STARTIO_ERRORS - 
                                               Log ALL returned errors from
                                               STARTIO into the Event Log
                      Value:   0x00000004   RESERVED
                      Value:   0x00000008   DISABLE_SCSI_QBUSY - 
                                               Don't return SRB_STATUS_BUSY
                                               to SCSI QUEUE FULL errors
                      Value:   0x00000010   DISABLE_SCSI_RSP_CHECK -
                                               Don't validate SCSI RSP
                                               field validity
                      Value:   0x00000080   LIRP_DISABLE -
                                               Don't allow LIRP/LILP loop init
                                               phase 
                      Value:   0x00000100   HBA_RESET_DISABLE -
                                               Debugging option to prevent the
                                               driver from resetting the HBA

    EnableDPC=n;      values 0 or 1, default=0, 0=process I/O completion at
                      interrupt level, 1=process at DPC level.

    FrameSizeMSB=n;   values from 0-8, default=0, controls the upper byte of
                      receive FrameSize in issued in PLOGI (0 and 8 are 
                      synonyms).  This allows the frameSize to be constrained
                      on 256 byte increments from 256 (1) - 2048 (8).
 
    HardAddress=n;    values from 0-1, default=0, controls whether the driver
                      maps addresses based on World Wide Port Name (WWPN) or
                      expects FC-AL HARD ADDRESSING:
                      0= Map NT Bus/Target addresses to a WWPN
                      1= Map NT Bus/Target addresses to fixed FC-AL Hard address
                         some hot-swap applications may require HardAddress=1;

    HardAlPa=0xn;     values from 0x01 - 0xEF, default=0x00 (0x00 says use soft
                      addressing, or FLASH stored Hard address value), 
                      ONLY VALID ALPAs may be used !!  Allows the Adapter to 
                      use a HARD assigned loop address.  See AL_PA table below:

                      0x01, 0x02, 0x04, 0x08, 0x0F, 0x10, 0x17, 0x18, 0x1B,
                      0x1D, 0x1E, 0x1F, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2A,
                      0x2B, 0x2C, 0x2D, 0x2E, 0x31, 0x32, 0x33, 0x34, 0x35,
                      0x36, 0x39, 0x3A, 0x3C, 0x43, 0x45, 0x46, 0x47, 0x49,
                      0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x51, 0x52, 0x53, 0x54,
                      0x55, 0x56, 0x59, 0x5A, 0x5C, 0x63, 0x65, 0x66, 0x67,
                      0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x71, 0x72, 0x73,
                      0x74, 0x75, 0x76, 0x79, 0x7A, 0x7C, 0x80, 0x81, 0x82,
                      0x84, 0x88, 0x8F, 0x90, 0x97, 0x98, 0x9B, 0x9D, 0x9E,
                      0x9F, 0xA3, 0xA5, 0xA6, 0xA7, 0xA9, 0xAA, 0xAB, 0xAC,
                      0xAD, 0xAE, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB9,
                      0xBA, 0xBC, 0xC3, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xCB,
                      0xCC, 0xCD, 0xCE, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
                      0xD9, 0xDA, 0xDC, 0xE0, 0xE1, 0xE2, 0xE4, 0xE8, 0xEF

    HlinkTimeOut=n;   values are in seconds from 1-255, default=30, controls
                      the time-out from Hardware link-down to Hardware link-up.
                      If this time-out is exceeded then the driver will stop
                      issuing BUSY status for requests and starts to issue
                      SELECTION_TIMEOUT error status.  This value may be set
                      smaller than LinkTimeOut as it does not include port
                      discovery.

    HppIoTimeOut=n;   values are in seconds from 1-255, default=30, controls
                      the maximum length of time that I/O will be returned
                      with BUSY status while the adapter is in a Hot Plug
                      PCI "not ready state" (just powered off/on, but not 
                      yet ready).  If this time-out is exceeded prior to 
                      replacing/powering on the HBA, I/O requests will be 
                      returned with SRB_STATUS_ERROR status.  

    InitialDelay=n;   values from 0-1, default=1, controls whether the driver
                      waits for 2 seconds to start port discovery, at the 
                      initial link up or not. 
                      0= Don't wait 2 seconds at startup
                      1= Wait 2 seconds at startup

                      The initial 2 second delay is strongly recommended
                      by certain array vendors.

    LinkTimeOut=n;    values are in seconds from 1-500, default=60, controls
                      the time-out when a "Down-Link" stops issuing a BUSY
                      status for requests and starts to issue SELECTION_TIMEOUT
                      error status.  This linkTimeOut includes port login and
                      discovery time.

    LipFFrecovery=n;  values from 0-1, default=0, controls whether the driver
                      issues a LIP when the link has been down for LinkTimeOut/2
                      0= Don't issue a LIP when linkDownTime = LinkTimeOut/2
                      1= Issue a LIP when linkDownTime = LinkTimeOut/2, helps
                         recover some dual-port devices whose "other port" is
                         "stuck"

    LogErrors=n;      values 0 or 1, default=0, 0=don't log general adapter/
                      disk errors, 1=use Event Log to log general errors.
                      See below for information on the event codes.

    MapBus0=n;        values from 0-1, default=0, controls whether the driver
                      maps devices starting on Bus 0 or Bus 1.
                      0= Start mapping devices to Bus 1
                      1= Start mapping devices to Bus 0

    MapNodeName=n;    values from 0-1, default=0, controls whether the driver
                      maps devices based on WWPN or NodeName.
                      0= Map devices based on WWPN (World-Wide-Port-Name)
                      1= Map devices based on NodeName

    NodeTimeOut=n;    values are in seconds from 1-255, default=20, controls
                      the time-out at which a formerly logged in node will
                      issue SELECTION_TIMEOUT error status to an I/O request.
                      This provides some hysterysis for a node that may re-
                      enter the configuration soon.  The timer starts after
                      port discovery has been completed, and the node is no
                      longer present.

    QueueAction=n;    values 0-2, default=0: 
                             0 = QueueAction is NT Specified (SIMPLE_QUEUE_TAG)
                             1 = QueueAction will be HEAD_OF_QUEUE_TAG
                             2 = QueueAction will be ORDERED_QUEUE_TAG

    QueueDepth=n;     values from 1-64 requests per *LUN/Target, default=32
                      *see "QueueTarget" parameter.

    QueueTarget=n;    values 0 or 1, default=0: 
                             0 = QueueDepth applies on a per Lun basis
                             1 = QueueDepth applies on a per Target basis

    RATOV=n;          values are in seconds from 2 to 120, default=2.  2*
                      this value is the ELS request time-out, e.g. Login

    ResetFF=n;        values 0 or 1, default=0, 0=ResetBus translates to
                      LIP(F7) 1=ResetBus translates to LIP(FF), used for 
                      WolfPack to force reservations to be freed when 
                      ResetBus issued.  Only meaningful for FC-AL topology
                      and Seagate native FC disk drives.  Emulex reccom-
                      mends breaking WolfPack reservations with ResetTPRLO.

    ResetTPRLO=n;     values 0 or 1, default=1, 0=ResetBus translates to
                      LIP() 1=ResetBus translates to ThirdPartyProcessLogout
                      + LIP(), used for WolfPack to force reservations to
                      be freed when ResetBus issued (this can now be used
                      with Seagate native Fibre drives).

    RetryInterval=n;  values are in seconds from 2-255, default=45, used for
                      time-out interval if RetryIoTimeOut=1.  Must be shorter
                      than Class driver TimeOutInterval.

    RetryIoTimeOut=n; values 0 or 1, default=1, 1=allow adapter to time-out
                      I/O prior to Port driver's time-out which will may 
                      cause a LIP / Link Reset.  When enabled (1) 
                      RetryInterval controls the time-out value.

    RetryNodePurge=n; values from 0-1, default=1, controls whether the driver
                      causes Port discovery just prior to purging a node, due
                      to NodeTimeOut exceeded.

                      Setting this parameter (=1) allows the driver to retry
                      discovery of a Node prior to Purge.  This option should 
                      be enabled for all HUBs that do not issue a LIP whenever
                      a port is "un-bypassed".  The Emulex Digital HUB does 
                      not require this option to be enabled.

    RTTOV=n;          values are in milliseconds from 100 to 511, default=256
                      time-out between phases of Offline to Online protocol.

    ScanDown=n;       values 0 or 1, default=0, 0=Lowest AL_PA = Lowest 
                      physical disk, 1=Highest AL_PA = Lowest Physical Disk,
                      i.e. 0=Ascending AL_PA order, 1=Ascending SEL_ID order
                      This value applies to Private Loop Only.

    SendEcho=n;       values from 0-1, default=0, controls whether the driver
                      sends an echo frame to itself every 4 seconds or not.

                      Setting this parameter (=1) allows early detection of a
                      spurious HUB Port bypass, and should be enabled for all
                      HUBs that do not issue a LIP whenever a port is "un-
                      bypassed".  The Emulex Digital HUB does not require this
                      option to be enabled.

    SimulateDevice=n; values 0 or 1, default=0, 0=don't create a "dummy" disk
                      device, 1=create a dummy disk to force the driver to
                      load if no disk devices are present at boot time.

    SliFlags=n;       values from 0-2, default=0, controls which driver
                      interface to use:
                      0= Auto mode; attempt SLI-2, if that fails use SLI-1
                      1= Always use SLI-1
                      2= Always use SLI-2

    SnsALL=n;         values from 0-1, default=0, controls which N_Ports are
                      queried from the NameServer, =0 SCSI FCP only, =1 ALL
                      N_Ports.

    Topology=n;       values 0-3, default=2, 
                      0=  FC-AL (Loop) 
                      1=  PT-PT Fabric
                      2= *FC-AL first, then attempt PT-PT
                      3= *PT-PT first, then attempt FC-AL

                     Note *: Topology fail-over requires v3.20 firmware or
                             higher.  With out using firmware that supports
                             Topoloogy fail-over,  options 0,2 and 1,3 are
                             analagous.

    TrafficCop=n;     values 0 or 1, default=0, 1=enable FC-AL loop master
                      to run unfair and break potential arbitration problems
                      by sending frames to itself, 0= run fair no frames.


NOTE:  Recommended Firmware is v2.23 (LP6000) / v3.02 (LP7/8000) or higher
       (can be found in ftp server ftp.emulex.com, user: fibre / password: 
       fibrech/what  path: pub/lp6_7firm/FF223.ZIP , SF302.ZIP, DF302.ZIP.



LP6/7/8/9000/850/950 NT Miniport Event Log Codes:
--------------------------------------------------

The NT Miniport driver can log events / errors in the NT event log.  Serious
errors will always be logged, while informational events will only be logged
if the registry parameter "LogErrors=1" is used.

All Miniport logged events are issued with an Event ID of 11, INTERNAL 
ADAPTER ERROR, but do not necessarily indicate an adapter error occurred.
Byte offset 0x10 of the event is the driver event code, while byte offset
0x11-0x13 contain event specific information.


Offset   Explanation                    0x11 - 0x13 further information
0x10  
-------------------------------------------------------------------------------
0xD0   SNS_REQ (XMIT_SEQ) failed         0x11= cmdStat, 12= Parm err
0xD1   SNS_RSP (RCV_SEQ) failed          0x11= cmdStat, 12= Parm err
0xD3   RCV_ELS_REQ failed                0x11= cmdStat, 12= Parm err
0xD4   XMT_ELS_RSP failed                0x11= cmdStat, 12= Parm err
0xD5   Too many Targets found (160+)     0x11 - 13 = d_id that didn't fit
0xD6   SNS request time-out              0x11 - 13 no additional information
0xD7   Mailbox Irupt Time-out            0x11= Mailbox word 0
0xD8   TPRLO requested when busy         0x11= local req. state, 12= discState
                                           13= Mailbox word 0
0xD9   Link down time-out occurred       0x11= local req. state, 12= discState
                                           13= Mailbox word 0
0xDA   Hard link down time-out occurred  0x11= local req. state, 12= discState
                                           13= Mailbox word 0
0xE0   Node Purged from Configuration    0x11 - 0x13 = D_ID of node purged
0xE1   Error Interrupt occurred          Status reg bytes 1-3 in event 11-13
                                         !! E1 error indicates an adapter H/W                                                       
                                         !! Failure, return this HBA for repair
0xE2   Mailbox cmd Timeout               0x11= command
0xE3   Mailbox rsp err                   0x11= command, 12-13 = mbxStatus
0xE4   Adapter not ready after Init      Status reg bytes 1-3 in event 11-13
0xE6   Mailbox int. but cmd not cmplt    0x11= MB cmd, 12-13 = mbxStatus
0xE7   SRB already queued to ring
0xE8   RESTART Failed
0xE9   PORT BYPASS (LPB) rcv'd
0xEB   Unknown IOCB cmd rsp              0x11= 15:8=cmd field
0xEC   Uncached Extension alloc. error
0xED   Link down @boot time (30 sec.)    
0xEF   Too many Irupts at initial boot
0xF0   Rcv ELS Request (possible logout) 0x11= ELS type, 12-13 = X_ID
0xF1   LinkUp err; LP6/7 Dwn, driver Up  0x11= parameter field, 12=IOCB cmd
0xF2   LinkUp w/ Illegal or corrupt RPI  0x11= parameter field, 12=IOCB cmd
0xF3   DeQueue ring->iotCmd.head         0x11= callerID 
0xF4   Adapter Reset                     0x11= coded reason for reset:
                                           bit 0=IOCB Requeue; bit 1=ReadLa rty
                                           bit 2=InitLink rty; bit 3=RstBus rty
                                           bit 4=Mailbox time-out
0xF5   FCP_IXXX_CR IOCB rsp err          0x11= cmdStat, 12= Parm err, 13= ALPA  
0xF6   FCP_IXXX_CX IOCB rsp err          0x11= cmdStat, 12= Parm err, 13= ALPA  
0xF7   Ring hd !=0 && pendingSrb!=NULL
0xF8   Inavlid FCP_RSP                   0x11= FcpCntrl, 12= ScsiStat, 13= Len 
0xF9   Two consec. timeouts, issue LIP   
0xFA   START_IO error                    0x11= ErrType, 12= SrbStat, 13= LinkUp
0xFB   ELS_REQ_CR IOCB rsp err           0x11= cmdStat, 12= Parm err, 13= ALPA
0xFC   ELS_REQ_CX IOCB rsp err           0x11= cmdStat, 12= Parm err, 13= ALPA
0xFE   FLOGI Failed                      0x11= cmdStat, 12= Parm err
0xFF   SNS_PLOGI Failed                  0x11= cmdStat, 12= Parm err

CmdStat values:

   IOSTAT_FCP_RSP_ERR            0x1
   IOSTAT_REMOTE_STOP            0x2    Remote sent an ABTS
   IOSTAT_LOCAL_REJECT           0x3    Parm field  contains additional info
   IOSTAT_NPORT_RJT              0x4
   IOSTAT_FABRIC_RJT             0x5
   IOSTAT_NPORT_BSY              0x6
   IOSTAT_FABRIC_BSY             0x7
   IOSTAT_INTERMED_RSP           0x8
   IOSTAT_LS_RJT                 0x9
   IOSTAT_BA_RJT                 0xA

Parm error values (valid only when cmdStat=0x3):

  IOERR_SUCCESS                 0x00
  IOERR_MISSING_CONTINUE        0x01
  IOERR_SEQUENCE_TIMEOUT        0x02
  IOERR_INTERNAL_ERROR          0x03
  IOERR_INVALID_RPI             0x04
  IOERR_NO_XRI                  0x05
  IOERR_ILLEGAL_COMMAND         0x06
  IOERR_XCHG_DROPPED            0x07
  IOERR_ILLEGAL_FIELD           0x08
  IOERR_BAD_CONTINUE            0x09
  IOERR_TOO_MANY_BUFFERS        0x0A
  IOERR_RCV_BUFFER_WAITING      0x0B
  IOERR_NO_CONNECTION           0x0C
  IOERR_TX_DMA_FAILED           0x0D
  IOERR_RX_DMA_FAILED           0x0E
  IOERR_ILLEGAL_FRAME           0x0F
  IOERR_EXTRA_DATA              0x10
  IOERR_NO_RESOURCES            0x11
  IOERR_RESERVED                0x12
  IOERR_ILLEGAL_LENGTH          0x13
  IOERR_UNSUPPORTED_FEATURE     0x14
  IOERR_ABORT_IN_PROGRESS       0x15
  IOERR_ABORT_REQUESTED         0x16
  IOERR_RECEIVE_BUFFER_TIMEOUT  0x17
  IOERR_LOOP_OPEN_FAILURE       0x18
  IOERR_RING_RESET              0x19
  IOERR_LINK_DOWN               0x1A
  IOERR_CORRUPTED_DATA          0x1B
  IOERR_CORRUPTED_RPI           0x1C
  IOERR_OUT_OF_ORDER            0x1D
  IOERR_OUT_OF_ORDER_ACK        0x1E
  IOERR_DUPLICATE_FRAME         0x1F
  IOERR_INVALID_ACK             0x20
  IOERR_BAD_40BIT_ADDRESS       0x21
  IOERR_RESERVED                0x22
  IOERR_RESERVED                0x23
  IOERR_RESERVED                0x24
  IOERR_ABORT_MULTI_REQUESTED   0x25
  IOERR_RESERVED                0x26
  IOERR_RESERVED                0x27
  IOERR_LINK_BUFFER_SHORTAGE    0x28
  IOERR_RCV_XRIBUF_WAITING      0x29
-------------------------------------------------------------------------------


LP6/7//8/9000/850/950 NT SCSI Address Mapping:
----------------------------------------------


The driver emulates 6 SCSI busses per adapter to map all 126 possible
AL_PAs to Target Ids:

  The first bus is a dummy bus, used to delay NT's initial inquiry scan until
  after discovery is complete.  The 31 Target IDs per bus (NT requires the 
  Initiator to consume one of the IDs, we use #31) are then mapped to either
  ascending or descending SEL_IDs (based on the ScanDown registry parameter).

  NOTE:  The first bus will be utilized if the parameter MapBus0=1;


Fabric Device Mapping:
----------------------

In a Fabric (switched) environment, devices are initially created based on
the order that they are returned from the Simple Name Server (SNS).  Once
created (at boot) the devices will continue to be tracked based on:

 - WWPN:      HardAddress=0;MapNodeName=0;
 - NodeName:  HardAddress=0;MapNodeName=1;
 - D_ID:      HardAddress=1;(MapNodeName=don't care)

Private Loop Device Mapping:
----------------------------

In a private loop environment (FC-AL, no switch), devices are initially
created based on a fixed address ordering (described below).  Once
created (at boot) the devices will continue to be tracked based on:

 - WWPN:      HardAddress=0;MapNodeName=0;
 - NodeName:  HardAddress=0;MapNodeName=1;
 - D_ID:      HardAddress=1;(MapNodeName=don't care)

This section identifies the initial FIXED mapping between NTs 
Bus/Target/Lun and a Fibre Channel native address (AL_PA / SEL_ID).  
There are two potential mappings based on a registry parameter (ScanDown=0;
(driver default) use *, ScanDown=1; ).  

The index into the following table can be derived by:

   #define TARGETS_PER_BUS 32

   i = (Srb->PathId > 0) ? Srb->PathId-1 : 0;  // Bus 0 = dummy bus
   nodeInx = ((i * (TARGETS_PER_BUS-1)) + Srb->TargetId);


Current Map Table:


  Bus #  |   Target #  |   Lun #  | *AL_PA  | *SEL_ID | **AL_PA | **SEL_ID
---------------------------------------------------------------------------
|   0    |    0-31     |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
---------------------------------------------------------------------------
|   1*** |      0      |    0-7   |  0x01   |  0x7D   |  0xEF   |  0x00   |
|        |      1      |    0-7   |  0x02   |  0x7C   |  0xE8   |  0x01   |
|        |      2      |    0-7   |  0x04   |  0x7B   |  0xE4   |  0x02   |
|        |      3      |    0-7   |  0x08   |  0x7A   |  0xE2   |  0x03   |
|        |      4      |    0-7   |  0x0F   |  0x79   |  0xE1   |  0x04   |
|        |      5      |    0-7   |  0x10   |  0x78   |  0xE0   |  0x05   |
|        |      6      |    0-7   |  0x17   |  0x77   |  0xDC   |  0x06   |
|        |      7      |    0-7   |  0x18   |  0x76   |  0xDA   |  0x07   |
|        |      8      |    0-7   |  0x1B   |  0x75   |  0xD9   |  0x08   |
|        |      9      |    0-7   |  0x1D   |  0x74   |  0xD6   |  0x09   |
|        |     10      |    0-7   |  0x1E   |  0x73   |  0xD5   |  0x0A   |
|        |     11      |    0-7   |  0x1F   |  0x72   |  0xD4   |  0x0B   |
|        |     12      |    0-7   |  0x23   |  0x71   |  0xD3   |  0x0C   |
|        |     13      |    0-7   |  0x25   |  0x70   |  0xD2   |  0x0D   |
|        |     14      |    0-7   |  0x26   |  0x6F   |  0xD1   |  0x0E   |
|        |     15      |    0-7   |  0x27   |  0x6E   |  0xCE   |  0x0F   |
|        |     16      |    0-7   |  0x29   |  0x6D   |  0xCD   |  0x10   |
|        |     17      |    0-7   |  0x2A   |  0x6C   |  0xCC   |  0x11   |
|        |     18      |    0-7   |  0x2B   |  0x6B   |  0xCB   |  0x12   |
|        |     19      |    0-7   |  0x2C   |  0x6A   |  0xCA   |  0x13   |
|        |     20      |    0-7   |  0x2D   |  0x69   |  0xC9   |  0x14   |
|        |     21      |    0-7   |  0x2E   |  0x68   |  0xC7   |  0x15   |
|        |     22      |    0-7   |  0x31   |  0x67   |  0xC6   |  0x16   |
|        |     23      |    0-7   |  0x32   |  0x66   |  0xC5   |  0x17   |
|        |     24      |    0-7   |  0x33   |  0x65   |  0xC3   |  0x18   |
|        |     25      |    0-7   |  0x34   |  0x64   |  0xBC   |  0x19   |
|        |     26      |    0-7   |  0x35   |  0x63   |  0xBA   |  0x1A   |
|        |     27      |    0-7   |  0x36   |  0x62   |  0xB9   |  0x1B   |
|        |     28      |    0-7   |  0x39   |  0x61   |  0xB6   |  0x1C   |
|        |     29      |    0-7   |  0x3A   |  0x60   |  0xB5   |  0x1D   |
|        |     30      |    0-7   |  0x3C   |  0x5F   |  0xB4   |  0x1E   |
|        |     31      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
---------------------------------------------------------------------------
|   2*** |      0      |    0-7   |  0x43   |  0x5E   |  0xB3   |  0x1F   |
|        |      1      |    0-7   |  0x45   |  0x5D   |  0xB2   |  0x20   |
|        |      2      |    0-7   |  0x46   |  0x5C   |  0xB1   |  0x21   |
|        |      3      |    0-7   |  0x47   |  0x5B   |  0xAE   |  0x22   |
|        |      4      |    0-7   |  0x49   |  0x5A   |  0xAD   |  0x23   |
|        |      5      |    0-7   |  0x4A   |  0x59   |  0xAC   |  0x24   |
|        |      6      |    0-7   |  0x4B   |  0x58   |  0xAB   |  0x25   |
|        |      7      |    0-7   |  0x4C   |  0x57   |  0xAA   |  0x26   |
|        |      8      |    0-7   |  0x4D   |  0x56   |  0xA9   |  0x27   |
|        |      9      |    0-7   |  0x4E   |  0x55   |  0xA7   |  0x28   |
|        |     10      |    0-7   |  0x51   |  0x54   |  0xA6   |  0x29   |
|        |     11      |    0-7   |  0x52   |  0x53   |  0xA5   |  0x2A   |
|        |     12      |    0-7   |  0x53   |  0x52   |  0xA3   |  0x2B   |
|        |     13      |    0-7   |  0x54   |  0x51   |  0x9F   |  0x2C   |
|        |     14      |    0-7   |  0x55   |  0x50   |  0x9E   |  0x2D   |
|        |     15      |    0-7   |  0x56   |  0x4F   |  0x9D   |  0x2E   |
|        |     16      |    0-7   |  0x59   |  0x4E   |  0x9B   |  0x2F   |
|        |     17      |    0-7   |  0x5A   |  0x4D   |  0x98   |  0x30   |
|        |     18      |    0-7   |  0x5C   |  0x4C   |  0x97   |  0x31   |
|        |     19      |    0-7   |  0x63   |  0x4B   |  0x90   |  0x32   |
|        |     20      |    0-7   |  0x65   |  0x4A   |  0x8F   |  0x33   |
|        |     21      |    0-7   |  0x66   |  0x49   |  0x88   |  0x34   |
|        |     22      |    0-7   |  0x67   |  0x48   |  0x84   |  0x35   |
|        |     23      |    0-7   |  0x69   |  0x47   |  0x82   |  0x36   |
|        |     24      |    0-7   |  0x6A   |  0x46   |  0x81   |  0x37   |
|        |     25      |    0-7   |  0x6B   |  0x45   |  0x80   |  0x38   |
|        |     26      |    0-7   |  0x6C   |  0x44   |  0x7C   |  0x39   |
|        |     27      |    0-7   |  0x6D   |  0x43   |  0x7A   |  0x3A   |
|        |     28      |    0-7   |  0x6E   |  0x42   |  0x79   |  0x3B   |
|        |     29      |    0-7   |  0x71   |  0x41   |  0x76   |  0x3C   |
|        |     30      |    0-7   |  0x72   |  0x40   |  0x75   |  0x3D   |
|        |     31      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
---------------------------------------------------------------------------
|   3*** |      0      |    0-7   |  0x73   |  0x3F   |  0x74   |  0x3E   |
|        |      1      |    0-7   |  0x74   |  0x3E   |  0x73   |  0x3F   |
|        |      2      |    0-7   |  0x75   |  0x3D   |  0x72   |  0x40   |
|        |      3      |    0-7   |  0x76   |  0x3C   |  0x71   |  0x41   |
|        |      4      |    0-7   |  0x79   |  0x3B   |  0x6E   |  0x42   |
|        |      5      |    0-7   |  0x7A   |  0x3A   |  0x6D   |  0x43   |
|        |      6      |    0-7   |  0x7C   |  0x39   |  0x6C   |  0x44   |
|        |      7      |    0-7   |  0x80   |  0x38   |  0x6B   |  0x45   |
|        |      8      |    0-7   |  0x81   |  0x37   |  0x6A   |  0x46   |
|        |      9      |    0-7   |  0x82   |  0x36   |  0x69   |  0x47   |
|        |     10      |    0-7   |  0x84   |  0x35   |  0x67   |  0x48   |
|        |     11      |    0-7   |  0x88   |  0x34   |  0x66   |  0x49   |
|        |     12      |    0-7   |  0x8F   |  0x33   |  0x65   |  0x4A   |
|        |     13      |    0-7   |  0x90   |  0x32   |  0x63   |  0x4B   |
|        |     14      |    0-7   |  0x97   |  0x31   |  0x5C   |  0x4C   |
|        |     15      |    0-7   |  0x98   |  0x30   |  0x5A   |  0x4D   |
|        |     16      |    0-7   |  0x9B   |  0x2F   |  0x59   |  0x4E   |
|        |     17      |    0-7   |  0x9D   |  0x2E   |  0x56   |  0x4F   |
|        |     18      |    0-7   |  0x9E   |  0x2D   |  0x55   |  0x50   |
|        |     19      |    0-7   |  0x9F   |  0x2C   |  0x54   |  0x51   |
|        |     20      |    0-7   |  0xA3   |  0x2B   |  0x53   |  0x52   |
|        |     21      |    0-7   |  0xA5   |  0x2A   |  0x52   |  0x53   |
|        |     22      |    0-7   |  0xA6   |  0x29   |  0x51   |  0x54   |
|        |     23      |    0-7   |  0xA7   |  0x28   |  0x4E   |  0x55   |
|        |     24      |    0-7   |  0xA9   |  0x27   |  0x4D   |  0x56   |
|        |     25      |    0-7   |  0xAA   |  0x26   |  0x4C   |  0x57   |
|        |     26      |    0-7   |  0xAB   |  0x25   |  0x4B   |  0x58   |
|        |     27      |    0-7   |  0xAC   |  0x24   |  0x4A   |  0x59   |
|        |     28      |    0-7   |  0xAD   |  0x23   |  0x49   |  0x5A   |
|        |     29      |    0-7   |  0xAE   |  0x22   |  0x47   |  0x5B   |
|        |     30      |    0-7   |  0xB1   |  0x21   |  0x46   |  0x5C   |
|        |     31      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
---------------------------------------------------------------------------
|   4*** |      0      |    0-7   |  0xB2   |  0x20   |  0x45   |  0x5D   |
|        |      1      |    0-7   |  0xB3   |  0x1F   |  0x43   |  0x5E   |
|        |      2      |    0-7   |  0xB4   |  0x1E   |  0x3C   |  0x5F   |
|        |      3      |    0-7   |  0xB5   |  0x1D   |  0x3A   |  0x60   |
|        |      4      |    0-7   |  0xB6   |  0x1C   |  0x39   |  0x61   |
|        |      5      |    0-7   |  0xB9   |  0x1B   |  0x36   |  0x62   |
|        |      6      |    0-7   |  0xBA   |  0x1A   |  0x35   |  0x63   |
|        |      7      |    0-7   |  0xBC   |  0x19   |  0x34   |  0x64   |
|        |      8      |    0-7   |  0xC3   |  0x18   |  0x33   |  0x65   |
|        |      9      |    0-7   |  0xC5   |  0x17   |  0x32   |  0x66   |
|        |     10      |    0-7   |  0xC6   |  0x16   |  0x31   |  0x67   |
|        |     11      |    0-7   |  0xC7   |  0x15   |  0x2E   |  0x68   |
|        |     12      |    0-7   |  0xC9   |  0x14   |  0x2D   |  0x69   |
|        |     13      |    0-7   |  0xCA   |  0x13   |  0x2C   |  0x6A   |
|        |     14      |    0-7   |  0xCB   |  0x12   |  0x2B   |  0x6B   |
|        |     15      |    0-7   |  0xCC   |  0x11   |  0x2A   |  0x6C   |
|        |     16      |    0-7   |  0xCD   |  0x10   |  0x29   |  0x6D   |
|        |     17      |    0-7   |  0xCE   |  0x0F   |  0x27   |  0x6E   |
|        |     18      |    0-7   |  0xD1   |  0x0E   |  0x26   |  0x6F   |
|        |     19      |    0-7   |  0xD2   |  0x0D   |  0x25   |  0x70   |
|        |     20      |    0-7   |  0xD3   |  0x0C   |  0x23   |  0x71   |
|        |     21      |    0-7   |  0xD4   |  0x0B   |  0x1F   |  0x72   |
|        |     22      |    0-7   |  0xD5   |  0x0A   |  0x1E   |  0x73   |
|        |     23      |    0-7   |  0xD6   |  0x09   |  0x1D   |  0x74   |
|        |     24      |    0-7   |  0xD9   |  0x08   |  0x1B   |  0x75   |
|        |     25      |    0-7   |  0xDA   |  0x07   |  0x18   |  0x76   |
|        |     26      |    0-7   |  0xDC   |  0x06   |  0x17   |  0x77   |
|        |     27      |    0-7   |  0xE0   |  0x05   |  0x10   |  0x78   |
|        |     28      |    0-7   |  0xE1   |  0x04   |  0x0F   |  0x79   |
|        |     29      |    0-7   |  0xE2   |  0x03   |  0x08   |  0x7A   |
|        |     30      |    0-7   |  0xE4   |  0x02   |  0x04   |  0x7B   |
|        |     31      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
---------------------------------------------------------------------------
|   5*** |      0      |    0-7   |  0xE8   |  0x01   |  0x02   |  0x7C   |
|        |      1      |    0-7   |  0xEF   |  0x00   |  0x01   |  0x7D   |
|        |      2      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      3      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      4      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      5      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      6      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      7      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      8      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |      9      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     10      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     11      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     12      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     13      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     14      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     15      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     16      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     17      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     18      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     19      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     20      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     21      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     22      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     23      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     24      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     25      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     26      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     27      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     28      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     29      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     30      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
|        |     31      |    0-7   |  NONE   |  NONE   |  NONE   |  NONE   |
---------------------------------------------------------------------------

*   Note:  Use this translation if registry ScanDown = 0 (default)
**  Note:  Use this translation if registry ScanDown = 1
*** Note:  If MapBus0=1;, then device addressing starts with Bus #0, not #1

- end -
server: web4, load: 3.04