FILE NAME:	hp-qla4xxx-5.02.15.04-4.src.rpm

TITLE:		HP NC-Series QLogic iSCSI driver for Linux

VERSION:	5.02.15.06

RELEASE:	4

LANGUAGE:	English

CATEGORY:	Software Solutions

DIVISIONS:	Enterprise and Mainstream Servers

EFFECTIVE DATE:	05/15/2012

SUPERSEDES:	5.02.15.05


Products Affected
==================
HP StorageWorks CN1000Q Dual Port Converged Network Adapter


Operating Systems
==================
Red Hat Enterprise Linux 6 Update 3 for AMD64/EM64T
Red Hat Enterprise Linux 6 Update 3 for x86
Red Hat Enterprise Linux 6 Update 2 for AMD64/EM64T
Red Hat Enterprise Linux 6 Update 2 for x86
Red Hat Enterprise Linux 6 Update 1 for AMD64/EM64T
Red Hat Enterprise Linux 6 Update 1 for x86


Red Hat Enterprise Linux 5 Update 8 for AMD64/EM64T
Red Hat Enterprise Linux 5 Update 8 for x86
Red Hat Enterprise Linux 5 Update 7 for AMD64/EM64T
Red Hat Enterprise Linux 5 Update 7 for x86
Red Hat Enterprise Linux 5 Update 6 for AMD64/EM64T
Red Hat Enterprise Linux 5 Update 6 for x86

SUSE LINUX Enterprise Server 11 Service Pack 2 for AMD64/EM64T
SUSE LINUX Enterprise Server 11 Service Pack 2 for x86
SUSE LINUX Enterprise Server 11 Service Pack 1 for AMD64/EM64T
SUSE LINUX Enterprise Server 11 Service Pack 1 for x86
SUSE LINUX Enterprise Server 10 Service Pack 4 for AMD64/EM64T
SUSE LINUX Enterprise Server 10 Service Pack 4 for x86
SUSE LINUX Enterprise Server 10 Service Pack 3 for AMD64/EM64T
SUSE LINUX Enterprise Server 10 Service Pack 3 for x86


Pre-requisites
===============
ProLiant server supporting above operating systems
2 GB RAM minimum
Latest HP System ROM
Build Environment Setup

NOTE: Visit the following URL and download latest System ROM
http://welcome.hp.com/country/us/en/support.html
Select "Download drivers and software"


Description
============
This RPM contains HP tested and approved iSCSI driver for use with network
adapters mentioned in the PRODUCTS AFFECTED section of this document.


Enhancements/Fixes
===================
1) This package now supports RHEL6 Update3 OS.


Table of Contents
=================
Introduction
Packaging
Build Environment Setup
Installing the RPM Package
Uninstalling the RPM Package
Limitations
Caveats

 
Introduction
============
This file describes how to build and install the iSCSI driver
for network adapters mentioned in the PRODUCTS AFFECTED section.
Additional information for the Ethernet drivers can be found in
the driver man page which gets installed on installing the tools
rpm. The tools rpm gets built along with the KMP binary rpm.

User guides and additional HP Network Adapter information can be found at:
http://h18004.www1.hp.com/products/servers/networking/index-nic.html


Packaging
=========
The driver is released in Kernel Module Package (KMP) source RPM format. KMP
packages use macros that determine kernel flavors for which binary packages
need to be built based on spec file rules.

It is important to have the right build environment set up in order to compile 
a binary RPM from the source package.  See "Build Environment Setup" section
below.


Build Environment Setup
========================
This package requires the presence of certain other packages that provide
the right build environment to enable building a KMP binary rpm from the
source rpm. These packages provide kernel headers, makefiles and symbol
files. Please ensure that the following are installed:

RHEL installation:
	1. redhat-rpm-config package
	2. kernel-devel-<kernel_version> package
	3. kernel-<flavor>-devel-<kernel_version> package
	Eg: kernel-2.6.18.92.el5 requires kernel-devel-2.6.18-92.el5
	    kernel-PAE-2.6.18.92.el5 requires kernel-PAE-devel-2.6.18-92.el5

	See the "Caveats" section below for more details.

SLES Installation:
	1. kernel-source-<kernel_version> package
	2. kernel-syms-<kernel_version> package
	3. SLES11 requires kernel-<flavor>-devel-<kernel_version> package
	   in addition to the above two mentioned


Installing the RPM Package
=============================
1. This package requires a specific build environment. Please refer the
"Build Environment Setup" section above before proceeding.

2. Install the source RPM package.

	# rpm -ivh hp-qla4xxx-<version>.src.rpm

3. Build the binary RPM for the qla4xxx package.

	RHEL 5:
	# rpmbuild -bb /usr/src/redhat/SPECS/hp-qla4xxx.spec

	RHEL 6:
	# rpmbuild -bb ~/rpmbuild/SPECS/hp-qla4xxx.spec

	SLES:
	# rpmbuild -bb /usr/src/packages/SPECS/hp-qla4xxx.spec

	If you get an error during the build process, refer to the 
	"Build Environment Setup" section.

	NOTE: One can build binary RPM for a specfic kernel flavor as follows:

	# rpmbuild -bb SPECS/hp-qla4xxx.spec --define "KVER <kver>"

	NOTE:  RHEL 5 x86 installations require the "--target" switch when
	building on Intel compatible machines. Please see the "Caveats" 
	section below for more details.

	# rpmbuild --target=i686 -bb /usr/src/redhat/SPECS/hp-qla4xxx.spec

4. Check for the existence of a current version of the hp-qla4xxx package 
as follows:
	
	RHEL
	# rpm -q kmod-hp-qla4xxx-<flavor> 

	SLES
	# rpm -q hp-qla4xxx-kmp-<flavor>

	If an old version of the package exists, the RPM package should be
	removed.

	RHEL
	# rpm -e kmod-hp-qla4xxx-<flavor>

	SLES
	# rpm -e hp-qla4xxx-kmp-<flavor>

	Verify if the old hp-qla4xxx package has been removed as follows:

	RHEL
	# rpm -q kmod-hp-qla4xxx-<kernel flavor>

	SLES
	# rpm -q hp-qla4xxx-kmp-<kernel flavor>

5. Verify if an older version of qla4xxx is loaded into the kernel and if so, 
remove as follows:

	# lsmod | grep qla4xxx

	Before removing the driver you will have to bring down the interfaces
	controlled by qla4xxx

	# ifconfig eth<n> down

	Remove the older driver module

	# modprobe -r qla4xxx

6. Install the new RPM package.  

	RHEL 5
	# rpm -ivh \
	/usr/src/redhat/RPMS/<arch>/kmod-hp-qla4xxx-<flavor>-<version>.<arch>.rpm 

	RHEL 6
	# rpm -ivh \
	~/rpmbuild/RPMS/<arch>/kmod-hp-qla4xxx-<flavor>-<version>.<arch>.rpm 

	The modules are installed in the following directory:
	/lib/modules/<kernel_version>/extra/hp-qla4xxx

	Note:  The "--nodeps" switch is required when installing on	RHEL 5.x 
	See "Caveats" section below for more details.

	# rpm -ivh \
	/usr/src/redhat/RPMS/<arch>/kmod-hp-qla4xxx-<flavor>-<version>.<arch>.rpm --nodeps 

	SLES
	# rpm -ivh RPMS/<arch>/hp-qla4xxx-kmp-<version>-<flavor>.<arch>.rpm

	The modules are installed in the following directory:
	/lib/modules/<kernel_version>/updates/hp-qla4xxx

7.  After binary rpms are installed, run "modinfo qla4xxx" and verify driver version

8.  Run "modprobe qla4xxx" to install "qla4xxx" module


Uninstalling the RPM Package
===============================
The following command will uninstall the RPM.

	Red Hat
	# rpm -e kmod-hp-qla4xxx-<kernel flavor>

	SLES
	# rpm -e hp-qla4xxx-kmp-<kernel flavor>


Limitations
===========
None


Caveats 
=======
1. The rpmbuild will fail the dependency check when building the non-base
(xen,pae,etc) kernel when the kernel-devel package is not installed.

Example:  If the OS only included the PAE kernel then the user would need to
install the kernel-pae-devel and kernel-devel packages.

2. The use of a "--target" switch is required so that rpmbuild does not try
to find an i386 kernel on the system.  If the "--target" switch is not used
then the build will fail with bizarre messages stating that specific kernel
packages are not installed on the machine yet these pacakges do not exist.

3. The rpmbuild will fail if the redhat-rpm-config package is not installed
because it cannot resolve the %kernel_module_package_buildreqs macro.  
The error will be similar to the following: 

error: line xx: Dependency tokens must begin with alpha-numeric,'_'or'/': 
BuildRequires: %kernel_module_package_buildreqs

4. RPM uses KMP packaging dependency data to ensure the dependencies are met
before installing the binary RPM.  Red Hat maintains a whitelist of kernel
symbols which RPM uses to validate against the KMP binaries.  Some symbols may 
be in the kernel but not on the whitelist which results in a failed binary RPM 
install. The user will need to use the "--nodeps" switch when installing the
binary. The qla4xxx packaged drivers uses the following symbols on RedHat EL5 
Update 6 and Update 7 that are not on the whitelist:

ksym(kobject_uevent_env)
ksym(iscsi2_session_chkready)
ksym(pci_get_domain_bus_and_slot)

(C) Copyright 2012  Hewlett-Packard Development Company, L.P.
Product names mentioned herein may be trademarks and/or registered trademarks
of their respective companies.