SCSI Miniport Driver for Windows 2000 and Windows Server 2003 (32 bit) Version 5-5.10a9 Feb 02, 2004 The contents of this kit are listed below. This kit contains release notes and necessary files to install the SCSI Miniport driver 5-5.10a9 in a Windows 2000 system or Windows Server 2003 (32 bit) system. \README.TXT The file you are now reading \OEMSETUP.INF Driver installation script for setup program \TXTSETUP.OEM Driver installation script for Boot-time setup program (boot BIOS must be installed) \LPSCSI Tag file used by the installation \lpxnds.sys Scsi Miniport driver v5-5.10a9 \lpxftr.sys Adjunct driver v5-103a4 supporting persistent binding \cocpyinf.dll CopyInf co-installer \lpsimdev.inf Installation script of Emulex Simulate Device \lpxnds.cat Miniport Driver Catalog File. \lpsimdev.cat Emulex Simulate Device Catalog file. Compatibility Emulex Fibre Channel adapters LP101 Emulex Fibre Channel adapters LP10000 or LP10000DC Emulex Fibre Channel adapters LP1050 or LP1050DC Emulex Fibre Channel adapters LP9802, LP9802DC or LP982 Emulex Fibre Channel adapters LP9402DC, LP9000, LP9002L, LP9002DC or LP952L Emulex Fibre Channel adapters LP8000, LP8000DC or LP850 Emulex Fibre Channel adapter LP7000E Supports arbitrated loop, point-to-point and fabric topologies (Please reference to Emulex Web site for latest firmware and BIOS) Prerequisites: Windows 2000 running on an x86 platform Windows 2000 Service Pack 2 or above Note: If you are running Windows 2000 with Service Pack 2, the NO_STOPREQ parameter in the EmulexOption must be disabled (it is enabled by default). Perform this task after you have installed the Miniport driver and the driver utilities. Windows Server 2003 (32 bit) running on an x86 platform Installed LP7000E, LP8000, LP8000DC, LP9000, LP9002, LP9002DC, LP9402DC, LP9802, LP9802DC, LP10000, LP10000DC, LP850, LP952, LP982, LP1050, LP1050DC or LP101. INSTALLATION INSTRUCTIONS: -------------------------- NOTE: Updating the OEMSETUP.INF file will overwrite existing registry settings. We suggest you write down the registry settings, if this file was modified, before updating the OEMSETUP.INF file. NOTE: Lputilnt.exe and HbaApi Dlls are no longer released with the driver kit. There is a seperate InstallShield kit for them. NOTE: choosing running without the adjunct driver will remove the adjunct driver service (lpxftr) and all persistent binding information. And, the release oemsetup.inf does not support mixing running with adjunct driver and running without adjunct driver for different controllers in a single system. NOTE: Due to a Win2K/Win2003 issue, reboot is required if updating driver in a multiple controllers installed system. Please refer to Win2K/Win2003 issue item (4). - To upgrade an existing installation, follow the Windows 2000 driver update procedure: From the Windows 2000 desktop Select Start, Settings, and Control Panel Double click the System icon Select Hardware tab Click Device Manager Open SCSI and RAID controllers item in list Double click the Emulex Adapter Select drivers tab Select Update Driver Click Next Select "Display a list of known drivers for this device so that I can choose a specific driver" Click Next The driver will affect only the selected adapter. If there are other adapters in the system, you will need to repeat this process for each adapter. Click Have Disk; Direct the Device Wizard to the location of the driver kit choose "Emulex LightPulse PCI Fibre Channel Adapter" if not care of any persistent binding support. choose "Emulex LightPulse PCI Fibre Channel Adapter (with adjunct driver)" for persistent binding support. Click Yes to restart the computer (This may not be shown) Select Start, Settings, and Control Panel Double click System Icon Select the Hardware tab Click Device Manager Verify the MiniPort Driver is present Driver installation is complete. - To upgrade an existing installation, follow the Windows Server 2003 driver update procedure: From the Windows Server 2003 desktop Select Start, Settings, and Control Panel Double click the System icon Select Hardware tab Click Device Manager Open SCSI and RAID controllers item in list Double click the Emulex Adapter Select drivers tab Select Update Driver Click Next Select "Install from a list or specific location (Advanced)". Click Next The driver will affect only the selected adapter. If there are other adapters in the system, you will need to repeat this process for each adapter. Click "Don't Search. I will choose the driver to install". Click Have Disk; Direct the Device Wizard to the location of the driver kit choose "Emulex LightPulse PCI Fibre Channel Adapter" if not care of any persistent binding support. choose "Emulex LightPulse PCI Fibre Channel Adapter (with adjunct driver)" for persistent binding support. Click Yes to restart the computer (This may not be shown) Select Start, Settings, and Control Panel Double click System Icon Select the Hardware tab Click Device Manager Verify the MiniPort Driver is present Driver installation is complete. - To install the Emulex Simulate Device: The Emulex Simulate Device is enabled by setting the registry paramater, SimulateDevice, to 1 (See Registry Options for more details). A "Found New Hardware Wizard" box is poped to ask for driver installation. Click "Next". Select "Display a list of known drivers for this device so that I can choose a specific driver" Choose "System Devices" and Click "Next" Choose "Emulex" in Manufacturers window, choose "Emulex Simulate Device" in Models window and Click "Next" Follow the instructions to finish the installation. Win2K/Win2003 ISSUES / INFORMATION: ---------------------------------- 1. Win2K/Win2003 supports configuring the number of out-standing SCSI requests per SCSI bus. The default setting is 150 SCSI requests per SCSI bus Use regedt32 under the following key to change the number of requests. "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 add a value of "NumberOfRequests" Type REG_DWORD, with a value of from 16 to 512 (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). NOTE: We do not recommend using Devicen for multiple contollers since the Devicen setting may not work properly. This is caused by a Microsoft ScsiPort driver bug. Please refer to Microsoft Knowledge Base Article Q140269. NOTE: However, for optimum performance, the setting should be between 16 and 255. Values above 255 will consume additional nonpaged memory and will not produce more concurrent requests than the 255 registry setting. Please refer to Microsoft Knowledge Base Article Q240314. 2. Win2K/Win2003 allows a disk I/O time-out to be increased. The Win2K/Win2003 SCSI subsystem allows the disk I/O time-out value to be increased in case of frequent device I/O time-outs: (The default setting is 60 seconds) Use regedt32 under the following key to change the I/O time-out value. "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->Disk" Add a value of "TimeOutValue" Type REG_DWORD, the value specified is in seconds. 3. Win2K/Win2003 LargeLuns parameter enforces to scan more than 8 LUNs. NOTE: The driver installation will set this parameter to "1" for GenDisk. Using regedt32 under the following key: "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Control->ScsiPort->SpecialTargetList" Add the HardwareID as the key to describe the Hardware to have LargeLuns set. GenDisk is used to apply to all generic disks. Please refer to Knowledge Base Article Q182541 for the format of the HardwareID. Add a value of LargeLuns: REG_DWORD: 0x1 4. Updating driver with multiple controller installed. In updating driver with multiple controllers, Win2K/Win2003 will act like the driver being updated successfully. Due to a Win2K/Win2003 bug, the running driver is still the old driver. User has to reboot to get the new driver effective. LPxxx DRIVER RELEASE NOTES: ----------------------------- General Features / Behavior: ----------------------------- Win2K/Win2003 Boot Support: Booting from Win2K/Win2003 is supported with the textsetup option (TXTSETUP.OEM on this kit). - Win2K/Win2003 GUI utility support: This driver currently supports an Win2K/Win2003 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 driver's IOCTL interface, so as new parameters are added / subtracted the utility need not change (the utility also provides help for each registry option when 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) topology only 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 . N_Port to N_Port (PT-PT) topology will be used if directly connected to another N_Port.> 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. If the response indicates that it is an N_Port, N_Port to N_Port mode will be used. * NOTE: Some versions of adapter firmware support automatic topology fail -over. For the purposes of this discussion, Topology options 0,2 are analogous and options 1,3 are analogous. . 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 driver will perform the following steps: . FL_Port login (Topology=0;) . F_Port login (Topology=1;) . Simple Name Server login . State Change Registration . Symbolic Name Registration . FCP type Registration if RegFcpType is set to 1 . Logout and Re-login Name Server to indicate done with 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 the device 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 device. If the swapped-in device presents a different WWPN (than the original device) then it will be mapped as a 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: An array controller 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: Changing the binding type requires Reboot. - 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. - Target Reset may be used to break reservations. By default a Target Reset will be sent when BUS_RESET() is called to clear SCSI reservations. This is the recommended way to clear Target reservations. This action is controlled by the ResetTPRLO=0 (default) registry parameter. Setting ResetTPRLO=1 will use Third Party Process Logout instead. In the case that the Target is a legacy Seagate Fibre Channel disk drive that does not support either Target Reset or TPRLO, we provide the ResetFF option that transmits LIP(FF) when BUS_RESET() is called. This option is off by default (ResetFF=0) and is only applicable to FC_AL Private Loop connections. - 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 Win2K/Win2003 Port driver will delay 1-2 seconds before re-queuing this request which gives the Target drain time. This is to avoid an Win2K/Win2003 Scsi subsystem error when Win2K/Win2003 re-queues a command that returns QUEUE_FULL (Win2K/Win2003 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). - Fibre Channel Link Speed The driver by default is set to automatic link speed detection on adapters that support speeds other than 1.0625 Gb/s. The LinkSpeed registry parameter allows the user to force the adapter to a desired (and supported) link speed. See documentation for this parameter below. - Persistent Binding Persistent binding support is added by running the Adjunct driver with the miniport driver. In order to run the miniport driver with the Adjunct driver, EmulexOption 0x00000800 has to be set. Without setting the EmulexOption 0x00000800, the miniport driver works as before (automap without persistent binding). However, setting EmulexOption 0x00000800 without running with the Adjunct driver, no devices will be found. The Persistent Binding table is stored in the registry under "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->lpxftr". Users should avoid changing the table directly at the registry. Users should use lputilnt.exe to modify the table. The driver will try to apply the new Binding dynamically. However, Reboot may be required to get the new binding to take effect. For examples, changing the binding of an existing target requires Reboot. Persistent binding support is implemented to allow users to set binding to either WWPN, WWNN or D_ID. Users can configure the binding to one of addressing mapping the same way as users set the device mapping (refer to the Device Addressing Mapping section for more details). Users configure the binding addressing mapping by setting the two registry options, HardAddress and MapNodeName, as follows: . WWPN: HardAddress=0;MapNodeName=0; . NodeName: HardAddress=0;MapNodeName=1; . D_ID: HardAddress=1;(MapNodeName=don't care) - LUN Mapping and LUN Masking LUN Mapping and LUN Masking support is added by running the Adjunct driver with the miniport driver. In order to run the miniport driver with the Adjunct driver, EmulexOption 0x00000800 has to be set. Without setting the EmulexOption 0x00000800, the miniport driver works as before (LUN Automap without LUN mapping and masking abilities). However, setting EmulexOption 0x00000800 without running with the Adjunct driver, no devices will be found. The LUN Mapping and LUN Masking Binding table is stored in the registry under "HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->lpxftr". Users should avoid changing the table directly at the registry. Users should use lputilnt.exe to modify the table. The driver will try to apply the new LUN Mapping and LUN Masking dynamically. However, Reboot may be required to get the new LUN Mapping to take effect. For example, changing the binding of an existing target requires Reboot. LUN Masking: Masking a LUN blocks all upper layer requests to it; i.e. the LUN being masked will not be seen by the OS. LUN can ONLY be masked at the LUN level. However, there are 3 levels of unMasking a LUN provided: adapter level, target level and LUN level. The adapter level unmasking unmasks all the masked LUNs of all targets of the adapter. The target level unmasking unmasks all the masked LUNs of the target. For examples, in the same adapter, Target 1 LUN 1 and Target 2 LUN 1 are are set with mask on: Adapter-level Target-level_unMask Target_1_LUN_1 Target_2_LUN_1 unMask Target 1 Target 2 0 0 0 MASK MASK 0 1 0 UNMASK MASK 0 0 1 MASK UNMASK 0 1 1 UNMASK UNMASK 1 X X UNMASK UNMASK ***LIMITATION*** Due to the restrictions of the OS, LUN 0 must always exist. Masking LUN 0 will cause the corresponding target to disappear. LUN Mapping: This is used to map the NT LUN (8 bits) to the Fc LUN (64 bits). LUN AutoMap, which is the default behavior, forms the Fc LUN by setting the NT LUN as byte 1 of the Fc LUN; i.e. NT LUN 1 = Fc LUN 0001000000000000. LUNs, which do not have a valid LUN map or are not automapped, will be unmapped. Requests will not be sent to any unmapped LUNs; i.e. those LUNs will not be seen by the OS. LUN mapping can ONLY be set at LUN level. However, there are 2 levels of LunAutoMap provided: adapter level and target level. Setting the adapter level LunAutoMap will automap all LUNs of all targets of the adapter that do not have a LUN map set up. Setting the target level LunAutoMap will automap all LUNs of the target that do not have a LUN map set up. For examples, in the same adapter, Target 1 LUN 1 and Target 2 LUN 1 do not have any LUN map: Adapter-level Target-level_LunAutoMap Target_1_LUN_1 Target_2_LUN_1 LunAutoMap Target 1 Target 2 0 0 0 UNMAPPED UNMAPPED 0 1 0 AUTOMAPPED UNMAPPED 0 0 1 UNMAPPED AUTOMAPPED 0 1 1 AUTOMAPPED AUTOMAPPED 1 X X AUTOMAPPED AUTOMAPPED ***LIMITATION*** Due to the restrictions of the OS, LUN 0 must always exist. LUN 0 being unmapped will cause the corresponding target to disappear. Due to discovery methodology of the OS, NT LUN 0-7 will be always inquired. NT LUNs higher than 7 will only be inquired if the report LUNs command is successfully completed and the automapped Fc LUN of the corresponding NT LUN is present in the report LUN list. For examples, the following report LUN list returns: 0000000000000060 // LUN list length: 0x60 = means 12 LUNs 0000000000000000 0001000000000000 0002000000000000 0003000000000000 0004000000000000 0005000000000000 0006000000000000 0007000000000000 0008000000000000 000A000000000000 000B000000000000 0020000000000000 NT LUNs 0-7, 8, 10, 11 and 32 will be inquired by the OS; i.e. mapping to those NT LUNs will work. NOTES: SparseLun must be set to 1 to allow holes in LUN list. Refer to Microsoft Knowledge Base Article Q310072. Bug Fixes / New Features: ------------------------- This version of the Win2K/Win2003 SCSI driver incorporates the following changes and new features from the v5.00 release: 1. Fixed BSOD issue with installing more than 8 ports with adjunct driver. (CR7716) Changes since 5-510a0: 2. Fixed LUN AutoMap issue. (CR7958) 3. Set NAdapter = 32 as a default setting. Changes since 5-510a1: 4. Load adjunct driver during installation. 5. Added aborting I/O to fix Throttle-down problem. 6. Fixed device object flag setting for MultiPulse. 7. Checked WWPN and WWNN for correct failback. 8. Added queue depth management. 9. Added HP SSVID 0x0E11 for installation. 10. Improved large-block performance. 11. Abort Adisc if receiving LOGO as a response. Changes since 5-510a2: 12. Fixed Rpis initialization. 13. Disabled running with Adjunct driver to fix upgrade issue. Changes since 5-510a3: 14. Fixed NodePtr initialization for abortAdisc. 15. Added HP SSVID 0x0E11 for LP10000. Changes since 5-510a4: 16. Fixed Crash Dump issue. 17. Fixed AbortAdisc initialization issue. Changes since 5-510a5: 18. Disabled Fcp2 if target mode is enabled. 19. Set BusChange if find a new target when receive PRLI. 20. Fixed reboot issue when using HBAnyware and updating driver. Changes since 5-510a6: 21. Fixed targets not disappear automatically in private loop issue (CR10520). 22. Added IOCTL_LP6000_FCP_PASS_THRU (CR10530). 23. Fixed Target mode Inquiry ASCII data issue (CR10536). 24. Returned illegal request for unsupported command in target mode (CR10549). 25. Added IOCTL_LPX000_GET_DRVINFO (CR10554). 26. Allowed passing Persistent Binding and Lun Masking/Mapping info according to WWPN (CR10557). 27. Added LP101 support (CR10560). 28. Removed HardAlPA option (CR10563). 29. Fixed SendAbts issue (CR10566). 30. Worked around g-port issue (CR10571). Changes since 5-510a7: 31. Fixed FC boot inaccessible boot device issue (CR10642) Changes since 5-510a8: 32. Fixed BSOD during Firmware download without device attached (CR10758). 33. Worked around crash Dump LOGO issue (CR10762). 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->lp6nds35" Add (if not already present) the following Keys under lp6nds35 Parameters->Device (Parameters apply to ALL adapters) | or ->Devicen (Parameters apply to adapter number 'n' 0-99) Under Device 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: NOTE: We do not recommend using Devicen for multiple controllers since the Devicen setting may not work properly. This is caused by a Microsoft ScsiPort driver bug. Please refer to Microsoft Knowledge Base Article Q140269. 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) ARBTOV=n; values are in milliseconds from 500 to 20000, default=1500. Represents FC-AL Arbitration time-out prior to LIP BlinkTimeOut=n; values are in seconds from 1-30, default=8, control the waiting time for link attention during boot. Class=n; values from 1-2, default=2, controls which Fibre Channel Class will be used: 1=Class 2, 2=Class 3 CrfIntrpt=n; values from 0-1, default=0, Coalesce Response Interrupt Feature, this feature must be used in conjunction 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 response 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 Registry Options: ----------------- The Win2K/Win2003 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 LPxxxx adapters) | or ->Devicen (Parameters apply to LPxxxx adapter number 'n' 0-99) Under Device 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: NOTE: For Win2K SP2, We do not recommend using Devicen for multiple contollers since the Devicen setting may not work properly. This is caused by a Microsoft ScsiPort driver bug. Please refer to Microsoft Knowledge Base Article Q140269. AbortStatus=0xn; values from 0x00-0xFF, controls SRB error status for general Abort conditions, default = SRB_STATUS_BUS_RESET (0x0E) which will not cause the current class driver to throttle down I/O performance after 4 of these errors have been received (on a per-LUN basis) ARBTOV=n; values are in milliseconds from 500 to 20000, default=1500. Represents FC-AL Arbitration time-out prior to LIP BlinkTimeOut=n; values are in seconds from 1-30, default=8, control the waiting time for link attention during boot. Class=n; values from 1-2, default=2, controls which Fibre Channel Class will be used: 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. DisableAck0=n; values from 0-1, default=0, 0=Enable ACK_0 functionality, 1=Disable ACK_0 functionality. 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. DiscMethod=n; values from 0-1, default=1, 0=Issue ADISC to check existence of nodes previously login before issuing PLOGI in Discovery, 1=use PLOGI only in Discovery. 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 - 0x7FFFFFFF, default=0x0000D200 (marked with *), 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 - (default: 0) Log ALL returned errors from STARTIO into the Event Log Value: 0x00000004 USE_BUS_RESET - This option is used only if DISABLE_SCSI_BUSY and DISABLE_SCSI_QBUSY are not set. This allows to return SRB_STATUS_BUS_RESET instead of SRB_STATUS_BUSY 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: 0x00000020 RESERVED Value: 0x00000040 RESERVED 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 Value: 0x00000200* VSA_ENABLE - Allow Volume Set Addressing Value: 0x00000400 Reserved. Value: 0x00000800 INIT_BY_FTRDRV - Work with lpxftr.sys for persistent binding, LUN Mapping and LUN Masking support. Value: 0x00001000* NO_STOPREQ - This turns off the workaround for Microsoft SRB_STATUS_BUSY issue. If SP2 is being run, this option must be disabled. If SP3 or above is being run, this option must be enabled. Value: 0x00002000 SERR & PERR Config - 0x00004000* This is a 2-bits option: 0x00004000: configure SERR & PERR as BIOS configured. If this bit is set, bit 13 (0x00002000) will be ignored. 0x00002000: if bit 14 (0x00004000) is 0, value 0 - turns off SERR & PERR value 1 - turns on SERR & PERR Value: 0x00008000* SLIMPTR_ENABLE - This enables firmware to use its memory for the host pointers instead of using host memory. This increases performance. Value: 0x00010000 RESERVED Value: 0x00020000 INDIV_RSTBUS - This controls the Scsi Bus Reset to reset seperate bus according to the pathId from upper layer. Disabling this option to allow a single bus reset to reset all Scsi busses (The standard mechanism in all previous release). Value: 0x00040000 FDMI_ENABLE - This enables the Fdmi support. EnableDPC=n; values 0 or 1, default=0, 0=process I/O completion at interrupt level, 1=process at DPC level. ErrRetryMax=n; values from 0 - 0xFFFFFFFE, default=0x00000001, specifies the number of retries while receiving Error attention 0x10000000 (SERR or PERR): 0 : retry indefinitely. 1 : no retry. 2 - 0xFFFFFFFE : number of retries + 1. 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 Bus/Target addresses to a WWPN 1= Map Bus/Target addresses to fixed FC-AL Hard address some hot-swap applications may require HardAddress=1; HlinkTimeOut=n; values are in seconds from 0-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. Setting this value to 0 (zero) causes the time-out to occur after 0 seconds. HostName="name"; "name" is used to specify the system host name and as part of node symbolic name to be registered to the Name Server. It is limited to 32 characters long. (Notes: lputilnt.exe will be modified to allow user to change this value in future release.) 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. LinkSpeed=n; values are in Gbit from 0-2, default=0 (auto speed selection), allows user to force link speed. This option is only meaningful to a Host Adapter which supports other than 1 Gbit. Setting this option incorrectly may cause the Host Adapter to fail to initialize. 1= 1Gbit 2= 2Gbit 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. 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 0-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. Setting this value to 0 (zero) causes the time-out to occur after 0 seconds. QueueAction=n; values 0-2, default=0: 0 = QueueAction is Win2K/Win2003 Specified (SIMPLE_QUEUE_TAG) 1 = QueueAction will be HEAD_OF_QUEUE_TAG 2 = QueueAction will be ORDERED_QUEUE_TAG QueueDepth=n; values from 1-255 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 RegFcpType=n; values 0 or 1, default=1. 1=register the Fcp type with the Name Server. 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 reservations with Target Reset. ResetTPRLO=n; values 0-2, default=0, ResetFF default=0 0= Send Target Reset Task Management to every logged in target device. ABTS all outstanding commands, then it sends PLOGI and PRLI. Link reinitialization is initiated only if ResetFF=1 (not recommended). 1= Send TPRLO to every logged in target device with Global Process Logout bit=1 and Type Code field=8. Link reinitialization is initiated only if ResetFF=1 (not recommended). 2= ABTS all outstanding commands, then it sends TPRLO to every logged in target device with Global Process Logout bit=1 and Type Code field=8. Link reinitialization is initiated only if ResetFF=1 (not recommended). 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 10 to 511, default=256 time-out between phases of Offline to Online protocol. ScanDown=n; values 0 or 1, default=1, 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. 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. TargetBlkSize=n; values from 0-16384, default=16384, specifies number of blocks to allocate for internal target. TargetEnable=n; values from 0-2, default=0, 0= disable 1= enable Target from boot 2= enable Target after IOCTL Fcp2 is disabled if target mode is enabled. 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 Fabric first, then attempt FC-AL Note *: Topology fail-over requires v3.20 firmware or higher. With out using firmware that supports Topology 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. Win2K/Win2003 Miniport Event Log Codes: -------------------------------------------------- The Win2K/Win2003 Miniport driver can log events / errors in the Win2K/Win2003 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. There are several exceptions:- 0xC1 is logged as BAD FIRMWARE WARNING (Event ID 26). 0xC2 is logged as BAD FIRMWARE WARNING (Event ID 26). 0xED is logged as BUS TIMEOUT (Event ID 9). Byte offset 0x10 of the event is the driver event code, while byte offset 0x11-0x13 contain event specific information. NOTE: Entries marked with an asterisk (*) are logged only when "LogErrors=1" is used. Offset Explanation 0x11 - 0x13 further information 0x10 ------------------------------------------------------------------------------- 0xC0 Invalid Link Speed selection 0xC1 AutoTopology not supported Current firmware version in this firmware 0x11 bit4-7: major rev 0x11 bit0-3 0x12 bit4-7: minor rev 0x12 bit0-3: 1=A,2=B,3=N,4=X 0x13 bit0-7: patch level e.g. 0x11=0x30 0x12=0x24 0x13=0x02 ==> 3.02X2 0xC2 Invalid data fix is not Current firmware version supported in this firmware (see 0xC1) 0xC3 * Reestablishing Link 0xD0 SNS_REQ (XMIT_SEQ) failed 0x11= cmdStat, 12= Parm err 0xD1 SNS_RSP (RCV_SEQ) failed 0x11= cmdStat, 12= Parm err 0xD2 No Resources 0x11= 0: Iocb cmd 1: Mailbox cmd 0x12= cmd 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 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 NOTE: Entries marked with an asterisk (*) are logged only when "LogErrors=1" is used. 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 Remote sent LS_RJT IOSTAT_BA_RJT 0xA Remote Sent BA_RJT Parm error values (valid only when cmdStat=0x3): IOERR_SUCCESS 0x00 IOERR_MISSING_CONTINUE 0x01 IOERR_SEQUENCE_TIMEOUT 0x02 Possible bad cable/link noise IOERR_INTERNAL_ERROR 0x03 IOERR_INVALID_RPI 0x04 Remote port login data invalid 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 Possible bad cable/link noise 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 FC_AL target not responding. Rcvd our own transmitted frame back. Port may be bypassed by a hub. IOERR_RING_RESET 0x19 IOERR_LINK_DOWN 0x1A IOERR_CORRUPTED_DATA 0x1B IOERR_CORRUPTED_RPI 0x1C IOERR_OUT_OF_ORDER 0x1D Possible bad cable/link noise 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 ------------------------------------------------------------------------------- SCSI Address Mapping: --------------------- The driver emulates 2 SCSI busses and 128 targets each bus to map 256 devices maximum. The last device is reserved for the simulate device. If the registry parameter, SimulateDevice, is set to 1, the simulate device responds to the OS request. The device mapping starts on either Bus 0 or Bus 1 depending on the registry parameter, EmulexOption. If bit 9 of EmulexOption is 1 (i.e. 0x00000200), the Bus 0 is used for the COmpaq array controller; then, the bus mapping starts from Bus 1 to Bus 2. Otherwise, the bus mapping starts from Bus 0 to Bus 1. The mapping scheme is different between Fabric Device and Private Loop Device. Refer to the following two sections for more details. 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 Win2K/Win2003's and Win2003's 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 128 i = (Srb->PathId > 0) ? Srb->PathId-1 : 0; // Bus 0 = dummy bus nodeInx = ((i * TARGETS_PER_BUS) + Srb->TargetId); Current Map Table: Bus # | Target # | LUN # | *AL_PA | *SEL_ID | **AL_PA | **SEL_ID --------------------------------------------------------------------------- | 0 | 0-127 | 0-255 | NONE | NONE | NONE | NONE | --------------------------------------------------------------------------- | 1*** | 0 | 0-255 | 0x01 | 0x7D | 0xEF | 0x00 | | | 1 | 0-255 | 0x02 | 0x7C | 0xE8 | 0x01 | | | 2 | 0-255 | 0x04 | 0x7B | 0xE4 | 0x02 | | | 3 | 0-255 | 0x08 | 0x7A | 0xE2 | 0x03 | | | 4 | 0-255 | 0x0F | 0x79 | 0xE1 | 0x04 | | | 5 | 0-255 | 0x10 | 0x78 | 0xE0 | 0x05 | | | 6 | 0-255 | 0x17 | 0x77 | 0xDC | 0x06 | | | 7 | 0-255 | 0x18 | 0x76 | 0xDA | 0x07 | | | 8 | 0-255 | 0x1B | 0x75 | 0xD9 | 0x08 | | | 9 | 0-255 | 0x1D | 0x74 | 0xD6 | 0x09 | | | 10 | 0-255 | 0x1E | 0x73 | 0xD5 | 0x0A | | | 11 | 0-255 | 0x1F | 0x72 | 0xD4 | 0x0B | | | 12 | 0-255 | 0x23 | 0x71 | 0xD3 | 0x0C | | | 13 | 0-255 | 0x25 | 0x70 | 0xD2 | 0x0D | | | 14 | 0-255 | 0x26 | 0x6F | 0xD1 | 0x0E | | | 15 | 0-255 | 0x27 | 0x6E | 0xCE | 0x0F | | | 16 | 0-255 | 0x29 | 0x6D | 0xCD | 0x10 | | | 17 | 0-255 | 0x2A | 0x6C | 0xCC | 0x11 | | | 18 | 0-255 | 0x2B | 0x6B | 0xCB | 0x12 | | | 19 | 0-255 | 0x2C | 0x6A | 0xCA | 0x13 | | | 20 | 0-255 | 0x2D | 0x69 | 0xC9 | 0x14 | | | 21 | 0-255 | 0x2E | 0x68 | 0xC7 | 0x15 | | | 22 | 0-255 | 0x31 | 0x67 | 0xC6 | 0x16 | | | 23 | 0-255 | 0x32 | 0x66 | 0xC5 | 0x17 | | | 24 | 0-255 | 0x33 | 0x65 | 0xC3 | 0x18 | | | 25 | 0-255 | 0x34 | 0x64 | 0xBC | 0x19 | | | 26 | 0-255 | 0x35 | 0x63 | 0xBA | 0x1A | | | 27 | 0-255 | 0x36 | 0x62 | 0xB9 | 0x1B | | | 28 | 0-255 | 0x39 | 0x61 | 0xB6 | 0x1C | | | 29 | 0-255 | 0x3A | 0x60 | 0xB5 | 0x1D | | | 30 | 0-255 | 0x3C | 0x5F | 0xB4 | 0x1E | | | 31 | 0-255 | 0x43 | 0x5E | 0xB3 | 0x1F | | | 32 | 0-255 | 0x45 | 0x5D | 0xB2 | 0x20 | | | 33 | 0-255 | 0x46 | 0x5C | 0xB1 | 0x21 | | | 34 | 0-255 | 0x47 | 0x5B | 0xAE | 0x22 | | | 35 | 0-255 | 0x49 | 0x5A | 0xAD | 0x23 | | | 36 | 0-255 | 0x4A | 0x59 | 0xAC | 0x24 | | | 37 | 0-255 | 0x4B | 0x58 | 0xAB | 0x25 | | | 38 | 0-255 | 0x4C | 0x57 | 0xAA | 0x26 | | | 39 | 0-255 | 0x4D | 0x56 | 0xA9 | 0x27 | | | 40 | 0-255 | 0x4E | 0x55 | 0xA7 | 0x28 | | | 41 | 0-255 | 0x51 | 0x54 | 0xA6 | 0x29 | | | 42 | 0-255 | 0x52 | 0x53 | 0xA5 | 0x2A | | | 43 | 0-255 | 0x53 | 0x52 | 0xA3 | 0x2B | | | 44 | 0-255 | 0x54 | 0x51 | 0x9F | 0x2C | | | 45 | 0-255 | 0x55 | 0x50 | 0x9E | 0x2D | | | 46 | 0-255 | 0x56 | 0x4F | 0x9D | 0x2E | | | 47 | 0-255 | 0x59 | 0x4E | 0x9B | 0x2F | | | 48 | 0-255 | 0x5A | 0x4D | 0x98 | 0x30 | | | 49 | 0-255 | 0x5C | 0x4C | 0x97 | 0x31 | | | 50 | 0-255 | 0x63 | 0x4B | 0x90 | 0x32 | | | 51 | 0-255 | 0x65 | 0x4A | 0x8F | 0x33 | | | 52 | 0-255 | 0x66 | 0x49 | 0x88 | 0x34 | | | 53 | 0-255 | 0x67 | 0x48 | 0x84 | 0x35 | | | 54 | 0-255 | 0x69 | 0x47 | 0x82 | 0x36 | | | 55 | 0-255 | 0x6A | 0x46 | 0x81 | 0x37 | | | 56 | 0-255 | 0x6B | 0x45 | 0x80 | 0x38 | | | 57 | 0-255 | 0x6C | 0x44 | 0x7C | 0x39 | | | 58 | 0-255 | 0x6D | 0x43 | 0x7A | 0x3A | | | 59 | 0-255 | 0x6E | 0x42 | 0x79 | 0x3B | | | 60 | 0-255 | 0x71 | 0x41 | 0x76 | 0x3C | | | 61 | 0-255 | 0x72 | 0x40 | 0x75 | 0x3D | | | 62 | 0-255 | 0x73 | 0x3F | 0x74 | 0x3E | | | 63 | 0-255 | 0x74 | 0x3E | 0x73 | 0x3F | | | 64 | 0-255 | 0x75 | 0x3D | 0x72 | 0x40 | | | 65 | 0-255 | 0x76 | 0x3C | 0x71 | 0x41 | | | 66 | 0-255 | 0x79 | 0x3B | 0x6E | 0x42 | | | 67 | 0-255 | 0x7A | 0x3A | 0x6D | 0x43 | | | 68 | 0-255 | 0x7C | 0x39 | 0x6C | 0x44 | | | 69 | 0-255 | 0x80 | 0x38 | 0x6B | 0x45 | | | 70 | 0-255 | 0x81 | 0x37 | 0x6A | 0x46 | | | 71 | 0-255 | 0x82 | 0x36 | 0x69 | 0x47 | | | 72 | 0-255 | 0x84 | 0x35 | 0x67 | 0x48 | | | 73 | 0-255 | 0x88 | 0x34 | 0x66 | 0x49 | | | 74 | 0-255 | 0x8F | 0x33 | 0x65 | 0x4A | | | 75 | 0-255 | 0x90 | 0x32 | 0x63 | 0x4B | | | 76 | 0-255 | 0x97 | 0x31 | 0x5C | 0x4C | | | 77 | 0-255 | 0x98 | 0x30 | 0x5A | 0x4D | | | 78 | 0-255 | 0x9B | 0x2F | 0x59 | 0x4E | | | 79 | 0-255 | 0x9D | 0x2E | 0x56 | 0x4F | | | 80 | 0-255 | 0x9E | 0x2D | 0x55 | 0x50 | | | 81 | 0-255 | 0x9F | 0x2C | 0x54 | 0x51 | | | 82 | 0-255 | 0xA3 | 0x2B | 0x53 | 0x52 | | | 83 | 0-255 | 0xA5 | 0x2A | 0x52 | 0x53 | | | 84 | 0-255 | 0xA6 | 0x29 | 0x51 | 0x54 | | | 85 | 0-255 | 0xA7 | 0x28 | 0x4E | 0x55 | | | 86 | 0-255 | 0xA9 | 0x27 | 0x4D | 0x56 | | | 87 | 0-255 | 0xAA | 0x26 | 0x4C | 0x57 | | | 88 | 0-255 | 0xAB | 0x25 | 0x4B | 0x58 | | | 89 | 0-255 | 0xAC | 0x24 | 0x4A | 0x59 | | | 90 | 0-255 | 0xAD | 0x23 | 0x49 | 0x5A | | | 91 | 0-255 | 0xAE | 0x22 | 0x47 | 0x5B | | | 92 | 0-255 | 0xB1 | 0x21 | 0x46 | 0x5C | | | 93 | 0-255 | 0xB2 | 0x20 | 0x45 | 0x5D | | | 94 | 0-255 | 0xB3 | 0x1F | 0x43 | 0x5E | | | 95 | 0-255 | 0xB4 | 0x1E | 0x3C | 0x5F | | | 96 | 0-255 | 0xB5 | 0x1D | 0x3A | 0x60 | | | 97 | 0-255 | 0xB6 | 0x1C | 0x39 | 0x61 | | | 98 | 0-255 | 0xB9 | 0x1B | 0x36 | 0x62 | | | 99 | 0-255 | 0xBA | 0x1A | 0x35 | 0x63 | | | 100 | 0-255 | 0xBC | 0x19 | 0x34 | 0x64 | | | 101 | 0-255 | 0xC3 | 0x18 | 0x33 | 0x65 | | | 102 | 0-255 | 0xC5 | 0x17 | 0x32 | 0x66 | | | 103 | 0-255 | 0xC6 | 0x16 | 0x31 | 0x67 | | | 104 | 0-255 | 0xC7 | 0x15 | 0x2E | 0x68 | | | 105 | 0-255 | 0xC9 | 0x14 | 0x2D | 0x69 | | | 106 | 0-255 | 0xCA | 0x13 | 0x2C | 0x6A | | | 107 | 0-255 | 0xCB | 0x12 | 0x2B | 0x6B | | | 108 | 0-255 | 0xCC | 0x11 | 0x2A | 0x6C | | | 109 | 0-255 | 0xCD | 0x10 | 0x29 | 0x6D | | | 110 | 0-255 | 0xCE | 0x0F | 0x27 | 0x6E | | | 111 | 0-255 | 0xD1 | 0x0E | 0x26 | 0x6F | | | 112 | 0-255 | 0xD2 | 0x0D | 0x25 | 0x70 | | | 113 | 0-255 | 0xD3 | 0x0C | 0x23 | 0x71 | | | 114 | 0-255 | 0xD4 | 0x0B | 0x1F | 0x72 | | | 115 | 0-255 | 0xD5 | 0x0A | 0x1E | 0x73 | | | 116 | 0-255 | 0xD6 | 0x09 | 0x1D | 0x74 | | | 117 | 0-255 | 0xD9 | 0x08 | 0x1B | 0x75 | | | 118 | 0-255 | 0xDA | 0x07 | 0x18 | 0x76 | | | 119 | 0-255 | 0xDC | 0x06 | 0x17 | 0x77 | | | 120 | 0-255 | 0xE0 | 0x05 | 0x10 | 0x78 | | | 121 | 0-255 | 0xE1 | 0x04 | 0x0F | 0x79 | | | 122 | 0-255 | 0xE2 | 0x03 | 0x08 | 0x7A | | | 123 | 0-255 | 0xE4 | 0x02 | 0x04 | 0x7B | | | 124 | 0-255 | 0xE8 | 0x01 | 0x02 | 0x7C | | | 125 | 0-255 | 0xEF | 0x00 | 0x01 | 0x7D | | | 126 | 0-255 | NONE | NONE | NONE | NONE | | | 127 | 0-255 | NONE | NONE | NONE | NONE | --------------------------------------------------------------------------- * Note: Use this translation if registry ScanDown = 0 (default) ** Note: Use this translation if registry ScanDown = 1 *** Note: If bit 9 of EmulexOption =0;, then device addressing starts with Bus #0, not #1 - end -