FILE NAME: hp-be2net-4.1.402.6-2.src.rpm TITLE: HP NC-Series Emulex 10GbE Driver for Linux VERSION: 4.1.402.6 Release: 2 LANGUAGE: English CATEGORY: Software Solutions DIVISIONS: Enterprise and Mainstream Servers EFFECTIVE DATE: 03/30/2012 SUPERSEDES: 4.0.479.0 Products Affected ================== HP Flex-10 2-port 552M 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 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 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 KMP build support for SLES 11 Service Pack 2 2) 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 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 2012 Hewlett-Packard Development Company, L.P. Product names mentioned herein may be trademarks and/or registered trademarks of their respective companies.