HP Supported Emulex HBA Driver for 2.4 kernels
----------------------------------------------

This kit contains the scripts and utilities necessary to deploy the HP
supported Emulex HBA drivers on Linux.

Kit Contents

- LPFC Adapter Driver Version 7.xx for Linux 2.4 kernels
- LPFC IOCTL (LPFCDFC) Driver
- Emulex Rubah library support
- Emulex DFC library

Supported Distributions

- SUSE Linux Enterprise Server 8, Service Pack 3 or higher
- Red Hat Enterprise Linux 3

Supported Architectures

- x86
- x86_64

Installation

To install the driver kit RPM, use the command:

	# rpm -ivh hp-lpfc-<version>.linux.rpm

To upgrade the driver kit RPM, use the command:

	# rpm -Uvh hp-lpfc-<version>.linux.rpm

To extract the files contained in this driver kit without installing the
driver (note that you will have to uninstall the driver with the --noscripts
option as well so that you do not modify your system during the uninstall):

	# rpm -i --noscripts hp-lpfc-<version>.linux.rpm

You can alter the behavior of the installation by setting certain environmental
variables:

   - If you do not want to install the LPFC Adapter driver module (lpfc.o) you can
     set the HPELXLPFC environmental variable to "n" and then export it (This can
     be useful if you do not want to overwrite the installed lpfc.ko module):

	# export HPELXLPFC=n

   - If you want to compile the driver for all installed kernels on the system, you
     can set the INSTALLALLKERNELS environmental variable to "y":

	# export INSTALLALLKERNELS=y

Uninstall

To uninstall the driver kit RPM use the command:

	# rpm -e hp-lpfc

Loading the Driver Modules

There are two kernel modules that come with the driver kit RPM, lpfc.ko
and lpfcdfc.o.  The lpfc.o is the main adapter driver.  It is loaded
from the initrd during system boot so that if the boot path is through
the LPFC adapter, the kernel will recognize the external storage device.
The IOCTL module, lpfcdfc.ko, is loaded later in the boot process through system
V startup scripts.

You can load the lpfc.o driver when the system is up by using the
modprobe command:

	# modprobe lpfc

lpfcdfc.o can be loaded in a similar manner:

	# modprobe lpfcdfc

Driver Source Code and Utilities

The driver kit utilities and source code  are located in the
/opt/hp/hp-lpfc directory.  Here is a summary of the installed
components:

Source Code

/opt/hp/hp-lpfc/lpfc		lpfc.ko source code
/opt/hp/hp-lpfc/lpfc/ioctls	lpfcdfc.ko source code

Utilities

master.sh			Main compilation script
build_driver			Builds modules from source code
edit_conf			Edits system configuration files
elxlpfc				DFC driver startup script
make_initrd			Creates new ramdisk image
compile_all_kernels		Compiles driver(s) for all installed kernels
set_parm                        Used by the driver installer to set default
                                lpfc driver parameters

Driver Parameters

The driver kit installer sets the following lpfc driver parameters:

Name                    Value   Description

lpfc_nodev_timeout      30      Time in seconds the driver will hold
                                i/o for a device that has gone away
lpfc_lun_queue_depth    8       Queue depth per LUN
lpfc_discovery_threads  1       The number of kernel threads that are
                                created during device discovery; Setting
                                this value to 1 serializes the discovery
                                process
lpfc_inq_pqb_filter	1	Filter the peripheral qualifier bit from
				INQUIRY data to fix device discovery issues
				on SLES 8 SP 4
Changing Queue Depth

The default queue depth per LUN is 8.  If you want to change this setting
to increase performance, perform the following steps:

1. Change directory to /opt/hp/hp-lpfc
2. Execute the command "./set_parm -q XX" where XX is the desired queue depth
3. Execute the command "./edit_conf"
4. Execute the command "./make_initrd"
5. Reload the driver or reboot your system

If you increase your queue depth and you start to experience i/o errors, it is
possible that you are overloading the array too much and will have to reduce
the queue depth setting.

Libraries

This driver kit contains two libraries: libemsdm.so and libdfc.so.  The
libemsdm.so is the Emulex Rubah library.  This library is used by some HP
applications to gather information about the Emulex HBAs in the system as well
as the targets that are attached to them.  The libdfc.so is needed by libemsdm.so
as it implements some of the function calls that libemsdm.so makes.

Compiling Driver for New Kernels

If you install or upgrade the kernel on your system, you can compile the
supported HP driver for that kernel before you reboot.  You can do this by
specifying the new kernel new kernel version with the -m switch of the
master.sh script.  For example if your kernel version is 2.6.9-5.EL then the
command would be:

	# /opt/hp/hp-lpfc/master.sh -m 2.6.5-5.EL

After the script finishes you should be able to reboot into the new kernel and
have the HP supported Emulex driver already loaded.
