FILE NAME:	hp-nx_nic-4.0.585-2.src.rpm

TITLE:		HP NC-Series QLogic nx_nic driver for Linux

VERSION:	4.0.585

RELEASE:	2

LANGUAGE:	English

CATEGORY:	Software Solutions

DIVISIONS:	Enterprise and Mainstream Servers

EFFECTIVE DATE:	02/29/2012

SUPERSEDES:	4.0.579


Products Affected
==================
HP NC375T PCI Express Quad Port Gigabit Server Adapter
HP NC375i Quad Port Multifunction Gigabit Server Adapter
HP NC522SFP Dual Port 10GbE Server Adapter
HP NC524SFP Dual Port 10GbE Proliant Module
HP NC510F PCIe 10 Gigabit Server Adapter
HP NC510C PCIe 10 Gigabit Server Adapter
HP NC512m Dual Port 10GbE Multifunction BL-c Adapter
HP NC522m Dual Port 10GbE Multifunction BL-c Adapter


Operating Systems
==================
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 6 for AMD64/EM64T
Red Hat Enterprise Linux 6 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 Ethernet driver for use
with network adapters mentioned in the PRODUCTS AFFECTED section
of this document.


Enhancements/Fixes
===================
1) Added KMP build support for RHEL 6 Update 2
2) Added KMP build support for SLES 11 Service Pack 2
3) Added KMP build support for RHEL 5 Update 8


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

  
Introduction
============
This file describes how to build and install the Ethernet driver
for network adapters mentioned in the PRODUCTS AFFECTED section.
Additional information for the Ethernet driver 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
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 source package. See "Build Environment Setup"
section below for more details.


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-nx_nic-<version>.src.rpm

3. Build the binary RPM for the hp-nx_nic and hp-nx_nic-tools package.

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

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

	SLES:
	# rpmbuild -bb /usr/src/packages/SPECS/hp-nx_nic.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-nx_nic.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-nx_nic.spec

	Note: This spec file will generate a KMOD/KMP driver pacakge and an 
	additional hp-nx_nic-tools package. The tools package includes the 
	firmware files necessary for the driver to work. The driver package 
	depends on the tools package and one can't install the driver package 
	with out it.

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

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

	If an old version of the package exists, the RPM package should be
	removed. Remove the corresponding tools package before removing 
	driver package.

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

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

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

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

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

	After verifying removal of the driver package, remove corresponding 
	tools package as follows

	# rpm -e hp-nx_nic-tools

5. Verify if an old version of nx_nic OR netxen_nic is loaded into the kernel 
and remove it as follows

	# lsmod | grep nx_nic
	OR
	# lsmod | grep netxen_nic

	Before removing the driver you will have to bring down the interfaces
	controlled by nx_nic or netxen_nic

	# ifconfig eth<n> down

	Finally remove the driver

	# modprobe -r nx_nic
	OR
	# modprobe -r netxen_nic

6. Install an associated version of hp-nx_nic-tools before installing the 
driver package

	# rpm -ivh RPMS/<arch>/hp-nx_tools-<version>-<arch>.rpm

7. Install the new binary driver RPM package. 

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

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

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

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

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

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

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

a modprobe to install the driver. Alternatively you can install the driver

8. After binary rpms are installed, run "modinfo nx_nic" and verify the driver 
version

9. Run "modprobe nx_nic" to install latest "nx_nic" driver module


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

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

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

The following command uninstall the hp-nx_nic-tools package. Uninstall the 
driver package before executing the below step

	#rpm -e hp-nx_nic-tools


Driver Settings
=================
The following settings are the default and optional parameters for the NIC

	Speed:
			10,0000 Mbps, full-duplex

	MTU:
			Default: 1500
			Range  : 0-8000
			See the Examples section below on how to set the MTU

	TSO:
			Default: On
			See the Examples section below on how to change TSO

The following optional parameters can be passed to the driver with the
modprobe command.  Note:  See the Examples section below for an 
illustration on how to set the parameters.

	tx_desc
		Default: 1024
		Range  : 256-4096 (must be power of two)
		This sets the size of the command descriptor rings (tx)

	jumbo_desc
		Default: 1024
		Range  : 64-4096 (must be power of two)
		This sets the size of the receive ring for jumbo frames

	rdesc_10g
		Default: 32768
		Range  : 64-65536 (must be power of two)
		This sets the size of the receive ring for "normal" packets 
		(10GbE ports)

	use_msi
		Default: Enable (1)
		Range: Disable (0) or Enable (1)
		This enables or disables MSI.

Examples
		The following command illustrates how to set the optional 
		parameters:
			# modprobe nx_nic tx_desc=2048

		The following command illustrates how to set the MTU:
			# ifconfig eth<x> mtu 8000

		The following command illustrates how to change the TSO 
		parameter:
			# ethtool -K eth<x> tso off


Driver Messages
===============
The messages will be logged in the file /var/log/messages. Some Linux 
distributions may not display messages to the console. To set messages 
to display on the console, at the command line use the following to 
control the level at which messages will appear on the console.

	# dmesg -n 6

Most systems are set to level 6 by default.


Limitations
===========
Some Linux distributions may not add the default route back to a 
specified network device when a network stop/start command is used. Use
the route command to add the default router back to the network device.

Some Linux distributions may not add the default assigned IP address back 
to a specified network device when using the following:

	ifconfig eth(x) down
	rmmod <module name>
	insmod <module name> <optional parameter changes>
	ifconfig eth(x) up

Another step to reassign the IP address back to the device may be required:

	ifconfig eth(x) <ip address>

Some Linux distributions may add multiple IP addresses with the same system
name in the /etc/hosts file when configuring multiple network devices.


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 those packages 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'/': 
Build Requires: %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 nx_nic packaged drivers uses the following symbols on 
RedHat EL5 Update 4 and Update 5 that are not on the whitelist:

ksym(pci_enable_msi) 
ksym(pci_enable_msix)
ksym(pci_disable_msi) 
ksym(pci_disable_msix)

5. On RHEL4, execute `depmod -a` to update module dependencies before
executing `modprobe nx_nic` to install the driver. Alternatively you can 
install the driver using insmod

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