FILE NAME: nx_lsa-3.4.114-6.src.rpm TITLE: HP Linux Socket Acceleration VERSION: 3.4.114 RELEASE: 6 LANGUAGE: English CATEGORY: Software Solutions DIVISIONS: Enterprise and Mainstream Servers PRODUCTS AFFECTED: HP NC510F PCIe 10 Gigabit Server Adapter HP NC510C PCIe 10 Gigabit Server Adapter HP NC512m Dual Port 10 GbE Adapter for c-Class BladeSystem OPERATING SYSTEM: Red Hat Enterprise Linux 5 AS/ES for AMD64/EM64T Red Hat Enterprise Linux 5 AS/ES for x86 Red Hat Enterprise Linux 4 AS/ES Update 5 for AMD64/EM64T Red Hat Enterprise Linux 4 AS/ES Update 5 for x86 Red Hat Enterprise Linux 4 AS/ES Update 4 for AMD64/EM64T Red Hat Enterprise Linux 4 AS/ES Update 4 for x86 Red Hat Enterprise Linux 4 AS/ES Update 3 for AMD64/EM64T Red Hat Enterprise Linux 4 AS/ES Update 3 for x86 SUSE LINUX Enterprise Server 10 SP1 for AMD64 SUSE LINUX Enterprise Server 10 SP1 for x86 SUSE LINUX Enterprise Server 10 for AMD64 SUSE LINUX Enterprise Server 10 for x86 SUSE LINUX Enterprise Server 9 SP3 for AMD64/EM64T SUSE LINUX Enterprise Server 9 SP3 for x86 PREREQUISITES: ProLiant server supporting one of the above operating systems 1GB RAM minimum Latest HP System ROM Firmware upgraded with the latest nx_tools-.rpm NOTE: Visit the following URL to upgrade the ROM http://h18000.www1.hp.com/support/files (select ProLiant from the server column) EFFECTIVE DATE: 08/02/2007 SUPERSEDES: Initial release DESCRIPTION: This RPM contains the HP Tested and Approved Linux nx_intercept and nx_lsa driver for use with the Server Adapters mentioned in the PRODUCTS AFFECTED section of this document. In addition, the rpm contains nxoffload which is a utility to configure offload rules. ENHANCEMENTS/FIXES: - Tested on all supported distro. Table of Contents ================= Introduction Packaging Kernel Source Code Setup Installing the RPM Package Configure LSA Driver Messages Caveats Uninstalling the RPM Package Introduction ============ This file describes the LSA drivers for the NetXen's NIC mentioned in the PRODUCTS AFFECTED section of this document. Packaging ========= The driver is released in a source RPM format. The file name for the package is nx_lsa-.src.rpm and is dependent on the kernel source code. If you have not installed the kernel source code and/or setup the source tree on your Linux system, refer to the "Kernel Source Code Setup" section below. Kernel Source Code Setup ======================== The nx_intercept and nx_lsa drivers require the presence of the kernel source code and configuring the kernel source before building the drivers. The following steps need to be done once for each kernel that is booted. For example, if the current kernel is UP (uni-processor) and an SMP (symmetrical-multi-processor) kernel is booted, these steps must be performed again to configure the kernel source for SMP before building the nx_nic driver for the SMP kernel. Note: Kernel source code setup is not required for Red Hat EL4 or Red Hat EL5. SLES 9/10 Installation: If the /usr/src/linux- directory does not exist, install the kernel source code per SUSE instructions. Once installed, follow the commands listed below to set up the kernel source tree. # cd /usr/src/linux- # make mrproper # make cloneconfig # make dep IMPORTANT NOTES =============== 1. The driver and firmware compatibility must be maintained to ensure proper functionality. 2. The nx_lsa and nx_intercept drivers are included in this rpm. 3. The nxoffload utility is installed with the nx_lsa binary rpm. 4. The nxoffload utility requires that the nx_lsa driver to be loaded to work properly. Installing the RPM Package ============================= 1. Please ensure that the nx_nic driver and firmware have been updated to the latest version. See nx_nic-.src.txt or nx_tools-.txt to determine if the driver or firmware needs to be updated. 2. This package requires the kernel source code as well as setting up the source tree. Verify the source code /usr/src/linux- directory exists. # cd /usr/src/linux- If the kernel source code is not present, then refer to the "Kernel Source Code Setup" section. 3. Remove the installed nx_lsa package. Check for the existence of a loaded nx_lsa and nx_intercept driver as follows: # lsmod If nx_lsa is loaded then remove it with the following command: # rmmod nx_lsa Check for the existence of a current version of the nx_lsa package as follows: # rpm -q nx_lsa If an old version of the package exists, the RPM package should be removed. # rpm -e nx_lsa Verify that the old nx_lsa package has been removed as follows: # rpm -q nx_lsa Note: The nx_intercept driver cannot be removed using rmmod If nx_intercept is loaded then send the following command to reboot the machine to remove the driver. # reboot 4. Install the source RPM package. # rpm -ivh nx_lsa-.src.rpm 5. Build the binary RPM for the nx_lsa package. Red Hat Installation: # cd /usr/src/redhat # rpmbuild -bb SPECS/nx_lsa-.spec SLES 9/10 Installations: # cd /usr/src/packages # rpmbuild -bb SPECS/nx_lsa-.spec If you get an error during the build process, refer to the "Kernel Source Code Setup" section to correctly setup the source tree. 6. Install the new RPM package. # rpm -ivh RPMS//nx_lsa-..rpm The drivers will be installed in the following path: /lib/modules//kernel/drivers/net/nx_lsa.ko /lib/modules//kernel/drivers/net/nx_intercept.ko The nxoffload utility will be installed in the following path: /usr/local/bin/nxoffload 7. You can now reboot your server. Upon reboot the network should start with the nx_lsa and nx_intercept drivers loaded. To verify that the drivers are loaded, use the following command. # lsmod Note: If the drivers are not loaded then load them with modprobe. Load the drivers with modprobe: # modprobe nx_intercept # modprobe nx_lsa Note: The nx_lsa requires the nx_intercept driver to be loaded. Use ifconfig to bring up the network: # ifconfig eth# up Refer to the man pages for lsmod, ifconfig, rmmod, insmod, modprobe, modules.conf and modprobe.conf for more detailed information. Configure LSA ================= LSA can be configured via the nxoffload utility which is installed with the nx_lsa binary rpm package. The nxoffload utility maintains a list of rules that dictate which applications to offload. Each rule can take one of the following parameters: - Application name - Local TCP port number - Local and remote TCP port number A list of parameters can be obtained by typing nxoffload -help. usage: nxoffload options: -p Port number to be offloaded. -n Application name to be offloaded. -t TCP tuple to be offloaded. Format: local IP, local port, remote IP, remote port. -a Add an offload rule. -r Remove an offload rule. -z Enable zero copy. -s List all ports and applications offloaded. Examples: 1. To offload the application iperf type the following: nxoffload -a -n iperf 2. To offload the application that uses local TCP port 80 type the following: nxoffload -a -p80 3. To remove the application that uses local TCP port 80 type the following: nxoffload -r -p80 4. To list the current offload rules type the following: nxoffload -s 5. To offload an application with zero copy enabled then type the following: nxoffload -a -z -n LSA Statistics ============== LSA offloaded statistics can be viewed at /proc/net/nx_nic/lsa_x/stats where 'x' defines the port number. The following list defines each statistic. Statistic Explanation TcpMaxConn Number of connections since initial power up TcpActiveOpens Total number of connections opened via connect TcpPassiveOpens Total number of connections opened via accepts TcpAttemptFails Number of unsuccessful connection attempts TcpEstabResets Resets received by connections in the established state TcpCurrEstab Current number of offloaded connections TcpInSegs Number of received segments TcpOutSegs Number of transmitted segments TcpSlowOutSegs Number of transmit segments processed by the slow firmware path TcpRetransSegs Number of retransmitted segments TcpInErrs Number of illegal received segments TcpOutRsts Number of transmitted resets TcpOutCollapsed Number of collapsed transmitted segments TcpTimeWaitConns Number of connections currently in the timewait state 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. Caveats =========== 1. The nx_intercept module cannot be removed with rmmod. The object will be removed from the system when the nx_lsa package is removed with rpm -e nx_lsa. Reboot the system and the nx_intercept module will be completely removed. 2. There are build warnings when building the objects with rpmbuild. Please ignore them. 3. The user should have root access to configure offload rules using nxoffload. 4. Rules may be added or removed at any time. The addition or removal of a rule, however, will not affect connections that have already been established. For example, if the user starts a non-offloaded iperf application and then types ./nxoffload -a -n iperf, this instantiation of iperf will NOT be subsequently offloaded. Future instantiations, however, will be offloaded. 5. TCP tuple is not implemented in this release. 6. LSA does not support jumbo frames in this release. If the MTU is set to jumbo then LSA will fall back to 1500. 7. Newer versions of the Linux kernel will contain the netxen_nic driver which supports the same devices as nx_nic except without the LSA interface. This driver will have to be manually removed and nx_nic will need to be installed prior to installing nx_lsa. Please see nx_nic--src.txt for instructions on removing netxen_nic and installing nx_nic. Uninstalling the RPM Package ============================= The following command will uninstall the nx_lsa RPM. # rpm -e nx_lsa-