README.TXT Driver File Contents (qldirect_80112_w2k_ha.exe)

                   QLogic Optimizing and Multipath Driver
                     For Windows 2000 and Windows 20003


 1. OS Support
 2. Hardware Support
 3. Supported Features
 4. Release History
 5. Creating the Driver Diskette
 6. Installing the Driver
 7. Registry Parameters
 8. Hardware Configuration
 9. Software Configuration
10. Software Compatibility
11. Diskette Content
12. Known Issues
13. Contacting QLogic


1. OS Support

This release has been tested with Windows 2000, and with Windows
2003 (build 3791).


2. Hardware Support

Currently the QLDIRECT.SYS driver only supports the QLA2200 and
QLA23xx families of Fibre Channel Adapters.  It requires the use
of the QL2200.SYS or QL2300 'enhanced' miniport driver version
8.00.00 or higher.


3. Supported Features

The QLdirect driver has two main features:

* QLdirect provides an optimized IO path that improves parallel
  command execution and reduces the CPU overhead for commands.

* QLdirect High Availability (HA) provides HBA failover on Fibre
  Channel adapters.  The QLogic SAN configuration utility (SANblade
  Manager or SANsurfer) is used to specify the primary and alternate
  paths to use to access each target device.  QLdirect will detect
  certain error status codes and miniport events, and retry failed
  IO operations on the alternate path. QLdirect will hide the 
  alternate path from Windows to keep Windows from configuring in a 
  second copy of a device.

QLdirect is also compatible with the following miniport features:

* QLdirect will support LUN masking in concert with the Fibre Channel 
  enhanced miniport drivers.  This feature allows the QLogic SAN 
  configuration utility to allocate some LUNs of a target to one host 
  and mask off other LUNs for use on other hosts.

* QLdirect will support uniquely identifying target devices using
  the world-wide node name and the world-wide port name.


4. Release History

Please refer to Release Notes for release history information.


5. Creating the Driver Diskette

To create the QLdirect driver diskette, use the SANsurfer Management
Suite CD-ROM, or go to QLogic's website at,
click on "Support", then click on "Drivers, Software, and Manuals".
Select the QLogic Fibre Channel Host Bus Adapter of your choice and
the operating system.

Choose "Save this program to disk", specify a temporary location for
the .zip file, then expand the .zip file onto a blank diskette.


6. Installing the Driver

The QLdirect program is installed using the SETUP.EXE program found
on the distribution medium.  To initially install the QLdirect driver
on an installed Windows system, execute SETUP.EXE and follow through
the dialogs displayed. You will need to restart your system to use
the QLdirect driver.

Note that on 64-bit systems, due to an InstallShield limitation, the
driver is installed in the %SystemRoot%\SysWOW64\Drivers directory,
and is then copied to the %SystemRoot%\System32\Drivers directory.
This extra copy of the driver is not removed during deinstallation,
and must be manually removed to eliminate the file.


7. Registry Parameters

In general, the default parameters that are set up during installation
should be sufficient.  All normal parameters are subkeys of:


The parameters values in the
key can be overridden by values in a
key. When QLdirect reads registry parameters, it first attempts to
read them from the "qldirect_override\Parameters" key, and if that
fails, it attempts to read them from the "qldirect\Parameters" key.
This is facilitate OEM installations that may override the QLdirect
default installation, without risking that reinstalling QLdirect
will undo the OEM-custom parameters.

The following parameters are selected during installation:

* qldirect\Start

  Set to 0 (SERVICE_BOOT_START) if QLdirect must be loaded before the 
  disk class driver, or 2 (SERVICE_AUTO_START) if QLdirect is loaded 
  after the disk class driver.  The default value of 2 is sufficient 
  for most systems.  The value of 0 is selected for compatibility with
  the Clariion CLATF driver, or other filter drivers that are inserted
  between the disk class and SCSI port drivers.

* qldirect\Parameters\SrbListSize

  Set to a value between 256 and 2048 (default is 1024). This is the 
  maximum number of outstanding requests expected to any host bus
  adapter being controlled by QLdirect.  Lower numbers reduce memory
  consumption; higher numbers allow for greater efficiency in the
  QLdirect driver.  QLdirect will dynamically allocate up to 32
  times this number dynamically during operation, but a greater
  efficiency is achieved if the static value is sufficient.

The following parameters are set during installation.  They can be 
modified using a registry editor, but should only be changed under the
direction of QLogic Technical Support.

* qldirect\Parameters\Flags

  A bitmask of flags used internally by the QLdirect driver.  The 
  following flags are defined:

  0x01 bit: Turns on extended error logging in the QLdirect driver.  
            This may log excessive numbers of events, and should only
            be enabled in the course of troubleshooting.
  0x02 bit: Turns on statistics gathering in the QLdirect driver.  
            This increases driver overhead and is not normally used.

* qldirect\Parameters\Optimization

  A bitmask of flags used internally by the QLdirect driver.  The
  following flags are defined:

  0x01 bit: Turns on extra optimization in conjunction with the disk
            class driver.  Used on NT4 only; this option is obsolete.
  0x02 bit: Turns on combined timeout checking.  This option makes
            the one-second QLdirect timeout check more efficient but
            less accurate in checking for disk timeouts.  It should
            normally be left off unless there is a specific performance
            issue in the one-second timer routine.

* qldirect\Parameters\FailoverNotifyType

  Specifies whether qldirect notifies targets when a failover occurs,
  and what method to use to notify the target.  Currently this must
  be one of the following values:

  0 = None: do not send any failover notification to the target.
  1 = LUN reset: Notify by sending a LUN reset command to each LUN
      of the target when the target is failed over.
  2 = CDB: Notify by sending a definable SCSI CDB to each LUN of the
      target when the target is failed over.  The CDB is defined in 
      registry parameter FailoverNotifyCdb.

* qldirect\Parameters\FailoverNotifyCdb

  A REG_BINARY array of bytes that defines a CDB to be sent to each
  LUN of a target to notify the target that a failover has occurred.
  Only used if registry parameter FailoverNotifyType = 2.  The CDB
  should be a valid SCSI CDB.  The length of the CDB is whatever
  length of data is stored in the registry; the maximum length is 16
  bytes.  There is no send data or receive data associated with the
  CDB.  The CDB is sent unmodified to each LUN of the target,
  exactly once with no retries.  Any errors for this CDB are logged
  as warnings in the event log.  

* qldirect\Parameters\InspectionInterval

  Not currently used.

* qldirect\Parameters\MaxRetriesPerIo

  The maximum total retries for one IO operation, before the operation
  is returned to the calling driver with error status.  Default=49.

* qldirect\Parameters\MaxRetriesPerPath

  The maximum retries for one IO operation on the current path, before
  the target is failed over to the next path and the operation is 
  retried.  Must be greater than MaxRetriesPerIo.  Default=3.

* qldirect\Parameters\PerCpuData

  This is a boolean parameter that is set to 1 to force QLdirect to
  allocate separate data pools for each CPU on the system, and force
  completion processing to be tied to a particular CPU.  This uses
  a tremendous amount of extra memory for QLdirect, and may exceed
  the limits of non-paged pool that can be allocated on machines 
  that have a large number of processors and/or HBAs.  As such,
  this option should be thoroughly tested in offline environments
  before being enabled with live systems.  The benefit of using
  this option is that the per-CPU data and processing reduces the
  amount of cache contention on large multiprocessor systems, and
  can significantly reduce CPU overhead per IO.  Default=0.

* qldirect\Parameters\EmulateBuild

  This is a DWORD parameter that is set to a Windows 2000 or build number, to cause QLdirect to operate as if it
  was running under that operating system build.  QLdirect takes
  special action depending on certain build numbers.  Adding this
  parameter to the registry allows support of alternate build
  numbers that may not be officially supported by QLdirect.

  For example, if QLdirect supports build 3600 and 3650 the same,
  and a customer receives a special build 3625 that is not supported
  by QLdirect, this parameter could be added and set to 3600 to make
  QLdirect run under build 3625 as if it were build 3600.

  In general, this parameter should not be added except under the
  supervision of QLogic Tech Support or Engineering.  Adding this
  parameter to an incompatible build can crash the operating system.

* qldirect\Parameters\DisableAutoFailback

  This is a DWORD parameter that is set to 1 to disable the
  automatic failback feature of QLdirect.  For general use, this
  parameter should be left at its default value of 0.  It is 
  typically of use only in special configurations or in 
  troubleshooting situations.

* qldirect\Parameters\TimerCpuNumber

  This is a DWORD parameter that is set to the zero-base CPU
  number on which to execute QLdirect's one-second timer routine.

  QLdirect uses a one-second timer to monitor IOs and check for IO
  timeouts.  By default, this routine always runs on CPU #0.  On
  some multiprocessor configurations, it can be useful to move the
  overhead of this routine to another processor.  For most systems,
  the default value of 0 is adequate.


8. Hardware Configuration

* The QLdirect driver is compatible with the QLA2200 and QLA23xx
  families of QLogic Fibre Channel host bus adapters.  All of these
  HBAs require that QLdirect is running with the enhanced miniport
  drivers V8.0.0 and above.  QLdirect will perform IO optimization in
  all valid configurations.  QLdirect will perform failover in 
  configurations where multiple paths exist to a supported storage

* QLdirect will perform HBA failover between any combination of
  QLA2200 and QLA23xx host bus adapters.  Any host bus adapters that
  share a device must have the same adapter NVRAM setting for "Max LUNs"
  to insure that consistent LUN mapping can be performed.  If QLdirect 
  detects that two HBAs share access to a device, and they do not have
  the same NVRAM setting for "Max LUNs", QLdirect will not process IOs
  for those HBAs.  IO operations will continue through the 
  non-QLdirect path, but QLdirect will not perform IO optimization or
  HBA failover.  When QLdirect detects such a configuration problem,
  it logs an event in the system event log that describes the problem.


9. Software Configuration

* QLdirect is normally used in conjunction with the QLogic SAN 
  configuration utilities SANblade Manager and SANsurfer.  These
  utilities are used to set up the configuration and select the
  primary and alternate path for each target in the SAN.

* QLdirect HA will currently track up to four target ports for a device
  and up to four HBAs providing access to each of those target ports,
  for a maximum of 16 possible paths to a device.  If QLdirect detects
  multiple visible paths to a device, it will automatically set the
  second path found to be a hidden path instead of a primary path.
  When QLdirect detects such a configuration problem, it logs an event
  in the system event log that describes the problem.

  When QLdirect marks a second such path as a hidden path, Windows 
  may see this as a device that was present and has gone away.  
  Windows may then retry IO operations to this second copy of the 
  device, and log events in the event log for a device that is not 
  ready or not available.  To correct such a configuration problem,
  re-run the QLogic SAN configuration utility, save the
  configuration in the registry, and reboot the system.

* QLdirect standard version does not support failover paths, and
  will treat failover paths to the device the same as if they are

* If QLdirect detects that there are too many paths enabled to a
  device, it will log an event in the event log describing the 
  configuration problem.  To correct the problem, re-run the QLogic SAN 
  configuration utility, save the configuration in the registry,
  and reboot the system.


10. Software Compatibility

QLdirect is sensitive to the driver load order of the system,
especially when the system includes other filter drivers in the
storage driver stack.

CLATF Filter Driver:

For example, QLdirect by default is started at SERVICE_AUTO_START
(Start=2 in the registry).  When running with EMC Clariion CLATF
and some other drivers, it must be started at SERVICE_BOOT_START
(Start=0 in the registry).

The QLdirect will detect the installation of CLATF, and will check
the correct radio button in the installation screen.  If CLATF is
installed after QLdirect, however, this value may not be correct.
The easiest was to correct the problem is to reinstall QLdirect and
let the QLdirect installation procedure fix up the registry.

There may be other instances where other software products change
the driver load order and affect QLdirect.  For example, there is
an IBM Raid filter driver that installs itself to be in the service
group "System Bus Extender".  This causes it to be loaded before
QLdirect, and keeps QLdirect from operating.  In this configuration,
the driver name is "Twintail".  The fix is to change the registry
as follows:

* In HKLM\System\CurrentControlSet\Services\Twintail, change the
  Group from "System Bus Extender" to a new group named "twintail".
  This will allow you to move this group around in the
  ServiceGroupOrder list to control the load order.

* In HKLM\System\CurrentControlSet\Control\ServiceGroupOrder\List,
  add the new "twintail" group immediately after the "qldirect"
  group, so Twintail will load after QLDirect.

Interrupt Affinity Filter Driver:

Microsoft has an Interrrupt Affinity Filter (IntFiltr) driver
that associates the interrupts from particular devices with
particular CPUs in a multiprocessor configuration.  This gives
a performance boost in some situations by reducing CPU cache
contention.  This driver is not compatible with QLdirect.  It
creates device objects that cannot be processed with QLdirect.
Also, because QLdirect has a common DPC routine for all HBAs
(to handle failover between HBAs), even if the two products
could run together, QLdirect would undo the effect of IntFiltr.

It is not possible for the QLdirect to predict all possible load
order interactions, but the majority of systems do not even have
the potential for such issues.  If you believe you have such a
problem with QLdirect and another product, contact QLogic Tech
Support for assistance.


11. Diskette Contents

The Driver Diskette contains the following files of note. The 
remaining files are used by the InstallShield installation script.

    Setup.exe       The main installation program.
    Readme.txt      This text file.
    Release.txt     Contains Release Notes with release history 


12. Known Issues

Updating Windows with QLdirect Installed:
	Updating from one version of Windows to another (as opposed
	to doing a full installation) can sometimes disable QLdirect.
	This is because QLdirect adds a "qldirect" group to the
	registry parameter to cause it to be loaded at the correct
	time, and the upgrade procedure overwrites this list and
	removes the "qldirect" group.

	This problem is even worse when running with the QLperf
	driver, which depends on QLdirect to run before starting

	This problem can be corrected by doing a full installation
	of Windows followed by an installation of QLdirect; or, by
	deinstalling QLdirect and QLperf before doing the upgrade.


13. Contacting QLogic

For latest product information, adapter drivers and utilities, or to 
report problems related to QLA family of products, please visit 
QLogic's website ( 


Copyright (c) 1999-2003 QLogic Corporation. All rights reserved. 
Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web4, load: 1.08