FILE NAME:	hp-ixgbe-3.9.17-1.src.rpm

TITLE:		HP NC-Series Intel ixgbe Driver for Linux

VERSION:	3.9.17

RELEASE:	1

LANGUAGE:	English

CATEGORY:	Software Solutions

DIVISIONS:	Enterprise and Mainstream Servers

EFFECTIVE DATE:	05/30/2012

SUPERSEDES:	3.7.24


Products Affected
==================
HP Ethernet 10Gb 2-port 560SFP+ Adapter
HP Ethernet 10Gb 2-port 560FLB 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 Ethernet drivers for
use with network adapters mentioned in the PRODUCTS AFFECTED
section of this document.


Enhancements/Fixes
===================
1) Added support for HP Ethernet 10Gb 2-port 560SFP+ Adapter
2) This package now creates a OCSD agents RPM that needs to be
installed for temperature sensing support
3) This package now supports RHEL6 Update3


Table of Contents
=================
Introduction
Packaging
Build Environment Setup
Installing the RPM Package
Uninstalling the RPM
Installing OCSD agent daemon
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 drivers can be found in
the driver man page which gets installed on installing the doc
rpm. The doc and ocsbbd rpms get built along with the KMP binary
rpm. The ocsbbd rpm installs the required OCSD agent daemon

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 before proceding.

2. Install the source RPM package.

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

3. Build the binary RPM for the ixgbe driver.

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

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

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

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

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

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

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

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

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

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

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

5. If an older version of ixgbe.ko is loaded into the kernel, remove
it as follows.

Note: If you are installing the package over network you may want to be
careful. It is not absolutely necessary to remove the modules. This step
is necessary if you are doing the upgrade on the physical console and
you intend to see the new drivers taking over immediately

	# lsmod | grep ixgbe

Bring down the interfaces controlled by ixgbe

	# ifconfig eth<n> down

Uninstall the existing active driver

	# modprobe -r ixgbe

6. Install the new binary RPM package.

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

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

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

	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-ixgbe-<flavor>-<version>.<arch>.rpm --nodeps 

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

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

7.  Run "modinfo ixgbe | grep version" and verify that the driver
version is latest

8.  Run "modprobe ixgbe" to install latest "ixgbe" driver module

9. Configure your network setting and address. You may need to refer to
your Linux vendor documentation. Helpful network configuration tools
such as "yast2" in SLES or linuxconf/redhat-config-network/netconfig in
Red Hat exist for easy configuration.

For SLES, you must specify the module as ixgbe while configuring the
network. The module can be specified in Hardware Details of Advanced
configuration

10. Ensure that the /etc/modules.conf file is configured similar to the
example listed below. The example below is presented as if more than
one adapter is present. If so, one eth# instance should exist for each
Ethernet port. Refer to the modules.conf man page for more information.

	alias eth0 ixgbe
	alias eth1 ixgbe

11. Reboot the server or restart the network services. Upon reboot
the network should start with ixgbe driver loaded

To verify that the driver is loaded use the following command.

	# lsmod

You should find ixgbe listed. Use ifconfig to bring up the network
with the new driver:

	# ifconfig eth# up


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

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

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


Installing OCSD agent daemon
=============================
After installing the driver KMP as detailed in
"Installing the RPM package", install the ocsbbd rpm as follows:

        # rpm -ivh hp-ixgbe-ocsbbd-<version>.<arch>.rpm

This package installs the ocsbbd init scripts which enable ocsbbd
agent to be started automatically on boot.

Restart the server to load the new driver module and start ocsbbd
daemon automatically on boot.

To start the service manually, execute:
        # service ocsbbd start
To check current status, execute:
        # service ocsbbd status
Refer ocsbbd man page for further details

Please note that installing the KMP package is a pre-requisite


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 installed only 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 ixgbe driver uses the following symbols on 
RedHat EL5 Update 4 and Update 5 that is not on the whitelist:

ksym(dca_register_notify) 
ksym(dca3_get_tag)        
ksym(dca_unregister_notify) 
ksym(dca_remove_requester)
ksym(dca_add_requester) 
ksym(vlan_gro_receive) 
ksym(napi_gro_receive) 
ksym(napi_gro_flush) 
ksym(pci_disable_sriov) 
ksym(pci_enable_sriov)
ksym(pci_enable_msi) 
ksym(pci_enable_msix)
ksym(pci_disable_msi) 
ksym(pci_disable_msix)

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