FILE NAME:			hp-mlnx-en-1.5.5.7-6.src.rpm

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

VERSION:			1.5.5.7

RELEASE:			6

LANGUAGE:			English

CATEGORY:			Software Solutions

DIVISIONS:			Enterprise and Mainstream Servers

PRODUCTS AFFECTED:
				HP NC542m Dual Port Flex-10 10GbE BL-c Adapter
				HP NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter
				HP NC543i 2-port 4xQDR IB/10Gb Adapter

OPERATING SYSTEM:
				Red Hat Enterprise Linux 6 AS/ES for AMD64/EM64T
				Red Hat Enterprise Linux 6 AS/ES for x86
				Red Hat Enterprise Linux 5 AS/ES for AMD64/EM64T
				Red Hat Enterprise Linux 5 AS/ES for x86
				SUSE LINUX Enterprise Server 11 for AMD64/EM64T
				SUSE LINUX Enterprise Server 11 for x86
				SUSE LINUX Enterprise Server 10 for AMD64/EM64T
				SUSE LINUX Enterprise Server 10 for x86

PREREQUISITES:
				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"

EFFECTIVE DATE:		02/08/2011

SUPERSEDES:			1.5.5.7-2

DESCRIPTION:
				This RPM contains the HP Tested and Approved Linux mlnx-en 
				driver for use with the Server Adapters mentioned in the 
				PRODUCTS AFFECTED section of this document.

ENHANCEMENTS/FIXES:
				1) KMP is now built for each SLES kernel flavor
				2) RHEL 5 update 6 support has been added

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


Introduction
============
This file describes the Linux Ethernet driver for HP NC-Series Mellanox 
Adapters mentioned in the PRODUCTS AFFECTED section of this document.

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
========================
The mlnx-en package requires the presence of some packages that provide the 
right build environment. These packages provide kernel headers, makefiles and 
symbol files, though the last one is suggested only on SLES distributions.

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 as well


Installing the RPM Package
=============================
1. This package requires couple of other packges to complete the build. Please
refer the "Build Environment Setup" Section before proceding to the next step.

2. Install the source RPM package.

	# rpm -ivh hp-mlnx-en-<version>.src.rpm

3. Build the binary RPM for the hp-mlnx-en driver.

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

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

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

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

	SLES
	# rpm -q hp-mlnx-en-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-mlnx-en-<flavor>

	SLES
	# rpm -e hp-mlnx-en-kmp-<flavor>

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

	RHEL
	# rpm -q kmod-hp-mlnx-en-<kernel flavor>

	SLES
	# rpm -q hp-mlnx-en-kmp-<kernel flavor>  

5. Install the new binary RPM package.  

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

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

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

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

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

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

6. 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 mlnx_en while configuring the 
network. The module can be specified in Hardware Details of Advanced 
configuration
      
7. 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 mlx4_en
	alias eth1 mlx4_en
	alias eth# mlx4_en

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

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

8. You can now reboot your server or restart the network services. Upon 
reboot the network should start with the mlnx-en driver loaded

To verify that the mlnx-en driver is loaded use the following command.

	# lsmod

If mlnx-en is listed then the mlnx-en driver is loaded. You can also
verify that the correct mlnx-en driver is loaded through any of the
following methods. Note that version of the driver loaded should be 
same as that of the package version.

Note: To load the driver from command line use 'modprobe' instead of 
'insmod'. Refer to the man pages for lsmod, ifconfig, rmmod, insmod, 
modprobe, modules.conf and modprobe.conf for more detailed information.


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

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

	SLES
	# rpm -e hp-mlnx-en-kmp-<kernel flavor>


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. When creating port configuration files using YAST on SLES systems,
not all (or no) mlx4_en network interfaces are seen by the tool.
The interface configuration needs to be done by "adding" a new interface
and setting its MAC address manually. Run YAST and add a new configuration
file. Get the MAC address by running ifconfig on the interface.
Edit network card configuration file under /etc/sysconfig/network
and restart network after adding the MAC address to the file.

4. 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

5. 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 mlnx-en packaged drivers uses the following symbols on Red Hat EL5
Update 4 and Update 5 that are not on the whitelist:

ksym(pci_enable_msi) 
ksym(pci_disable_msi) 
ksym(pci_enable_sriov)
ksym(pci_disable_sriov)

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