FILE NAME:	hp-be2net-4.0.479.0-2.src.rpm

TITLE:		HP NC-Series Emulex 10GbE Driver for Linux

VERSION:	4.0.479.0

Release:	2

LANGUAGE:	English

CATEGORY:	Software Solutions

DIVISIONS:	Enterprise and Mainstream Servers

EFFECTIVE DATE:	12/14/2011

SUPERSEDES:	4.0.359.0


Products Affected
==================
HP Flex-10 2-port 553M Adapter 
HP FlexFabric 10Gb 2-port 554FLB Adapter
HP FlexFabric 10Gb 2-port 554M Adapter
HP FlexFabric 10Gb 2-port 554FLR-SFP+ Adapter
HP StorageWorks CN1100E Dual Port Converged Network Adapter
HP StorageWorks CN1000E Dual Port Converged Network Adapter
HP NC552SFP Dual Port 10GbE Server Adapter
HP NC550SFP Dual Port 10GbE Server Adapter
HP NC553m 10Gb 2-port FlexFabric Converged Network Adapter
HP NC553i 10Gb 2-port FlexFabric Converged Network Adapter
HP NC552m Dual Port Flex-10 10GbE BL-c Adapter
HP NC551m Dual Port FlexFabric 10Gb Adapter
HP NC551i Dual Port FlexFabric 10Gb Adapter
HP NC550m Dual Port Flex-10 10GbE 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 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 1 for AMD64/EM64T
SUSE LINUX Enterprise Server 11 Service Pack 1 for x86
SUSE LINUX Enterprise Server 11 for AMD64/EM64T
SUSE LINUX Enterprise Server 11 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

Note: Due to the very recent release of RedHat 5 Update 7, customers
may still be using RedHat 5 Update 5 in their production environment.
HP will support the use of this driver for RedHat 5 Update 5 and will
remove support in the next release.


Pre-requisites
===============
ProLiant server supporting above operating systems
256 MB 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 support for HP FlexFabric 10Gb 2-port 554FLB Adapter
2) Added support for HP FlexFabric 10Gb 2-port 554M Adapter
3) Added support for HP FlexFabric 10Gb 2-port 554FLR-SFP+ Adapter
4) Added support for HP Flex-10 2-port 553M Adapter
5) Added KMP build support for RHEL6 Update 2


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


Introduction
============
This file describes how to build and install the Ethernet driver
for network adapters mentioned in the PRODUCTS AFFECTED section.

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

3. Build the binary RPM for be2net driver.

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

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

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

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

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

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

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

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

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

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

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

5. If an older version of be2net.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 be2net

Bring down the interfaces controlled by be2net

	# ifconfig eth<n> down

Uninstall the existing active driver

	# modprobe -r be2net

6. Install the new binary RPM package.

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

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

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

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

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

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

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

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

8.  Run "modprobe be2net" to install latest "be2net" 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.

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 be2net
	alias eth1 be2net

    For SLES, the configuration file is /etc/modprobe.conf or
    /etc/modprobe.conf.local

    Note: If the above entry does not exist, add it in the configuration
    file.

11. Reboot the server or restart the network services. Upon reboot the
    network should start with be2net driver loaded to verify that the
    driver is loaded, use the following command.

	# lsmod

    You should find be2net listed.


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

	RHEL
	# rpm -e kmod-hp-be2net-<kernel flavor>

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


Driver Messages
===============
When successfully loaded, the driver logs a message similar to the 
following one in the kernel log:

be2net 0000:01:00.0: Emulex OneConnect 10Gbps NIC (be3) port 0
be2net 0000:01:00.1: Emulex OneConnect 10Gbps NIC (be3) port 1


Driver settings
================
Offloading
	The following offload features are supported. All these features
	are  enabled  by default. They can be disabled or modified using
	ethtool.

	- TCP checksum offload
	- TCP segmentation offload (TSO) for IPv4
	- Large receive offload / Generic receive offload.
	- VLAN offload
	- Ethernet multicast filtering


MSI-X interrupts
	By default, be2net tries to use MSI-X interrupts where ever pos-
	sible.   A  separate  interrupt vector is used for RX and TX for
	each interface. This helps with load distribution of Rx  and  Tx
	interrupt	 processing  across  different CPUs. The driver falls
	back to using INT-X on platforms that  do  not  support MSI-X.
	be2net  can  be directed to use only INT-X interrupts instead of
	MSI-X by specifying the module parameter msix=0.


NAPI
	be2net uses NAPI for servicing completion interrupts from NIC.


MTU	
	By default be2net uses an MTU of 1500. MTU can  be  changed  to
	any value between 256 and 9000 using ifconfig command.


Interrupt mitigation
	Interrupt delay for RX and TX interrupts can be	configured.  
	Smaller delay will help achiever better  latency;but  increase 
	the number of interrupts and CPU utilization.  The driver also 
	supports adaptive interrupt coalescing (AIC) for RX interrupts.
	AIC  helps to vary the interrupt delay based on the traffic 
	condition and tries to achieve lower CPU  utilization during high
	network load and lower latency during lighter network load.  AIC 
	is supported only for RX interrupts and is enabled by default.  
	AIC can be can be disabled using the -C option in ethtool.


Receive buffer size
	The size of each receive buffer made available to the NIC to DMA
	received ether frames can be set to either 2048, 4096  or  8192
	bytes  using  the	 "rx_frag_size" module parameter.  The default
	rx_frag_size is 2048 and it is optimal size for 1500  byte  MTU.
	A higher value may improve CPU performance for larger MTU.


Bonding
	All bonding modes are supported.


PCI error recovery
	This  feature is supported in platforms that implement PCI error
	detection (EEH).


Link level flow control
	Link level flow control is supported using pause frames for RX
	and TX.  In  adapters with FCoE function, pause is always off
	since it could interfere with the priority flow control required
	for FCoE.


Configuration and reporting
	The following configuration options are available via ethtool  
	command.  Please refer to the ethtool man page for details.

	- TX and RX flow control using -A option
	- Checksum offload using -K option
	- TCP segmentation offload using -K  option
	- Generic receive offload using -K option
	- Interrupt delay and AIC parameters using -C option
	- Get port parameters
	- Get driver and firmware versions using -i option
	- Run diagnostics using -t option
	- Firmware update using -f option (only in newer distributions)
	- Statistics reporting using -S option


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 
   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 alphaumeric,'_'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 be2net packaged drivers uses the following symbols on Red Hat EL 
   5 Update 4 and Update 5 that are not on the whitelist:

   ksym(pci_enable_msi) 
   ksym(pci_disable_msi)

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