FILE NAME: nx_lsa-3.4.263-5.src.rpm TITLE: HP Linux Socket Acceleration VERSION: 3.4.263 RELEASE: 5 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: 10/18/2007 SUPERSEDES: nx_lsa-3.4.114-6.src.rpm 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. TcpMaxConn The limit on the total number of TCP connections the entity can support. In entities where the maximum number of connections is dynamic, this object should contain the value -1. STATUS: Not Supported TcpActiveOpens The number of times TCP connections have made a direct transition to the SYN-SENT state from the CLOSED state. STATUS: Supported TcpPassiveOpens The number of times TCP connections have made a direct transition to the SYN-RCVD state from the LISTEN state. STATUS: Not Supported TcpAttemptFails The number of times TCP connections have made a direct transition to the CLOSED state from either the SYN-SENT state or the SYN-RCVD state, plus the number of times TCP connections have made a direct transition to the LISTEN state from the SYN-RCVD state. STATUS: Supported TcpEstabResets The number of times TCP connections have made a direct transition to the CLOSED state from either the ESTABLISHED state or the CLOSE-WAIT state. STATUS: Not Supported TcpCurrEstab The number of TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT. STATUS: Supported TcpInSegs The total number of segments received, including those received in error. This count includes segments received on currently established connections. STATUS: Supported TcpOutSegs The total number of segments sent, including those on current connections but excluding those containing only retransmitted octets. STATUS: Supported TcpSlowOutSegs This is a subset of TcpOutSegs. It is the total number of segments sent in the slow path. STATUS: Supported TcpRetransSegs The total number of segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets. STATUS: Supported TcpInErrs The total number of segments received in error (e.g., bad TCP header). Checksum errors are not included in this counter. STATUS: Supported TcpOutRsts The number of TCP segments sent containing the RST flag. STATUS: Supported TcpOutCollapsed The total number of times two outgoing packets were collapsed to form a single packet during retransmission. STATUS: Supported TcpTimeWaitConns The total number of connections currently in TIME_WAIT state. STATUS: Supported IpInReceives The total number of input datagrams received from interfaces, including those received in error. STATUS: Supported IpInHdrErrors The number of input datagrams discarded due to errors in their IP headers, including bad checksums, version number mismatch, other format errors, time-to-live exceeded, errors discovered in processing their IP options, etc. STATUS: Supported IpInAddrErrors The number of input datagrams discarded because the IP address in their IP header's destination field was not a valid address to be received at this entity. This count includes invalid addresses (e.g., 0.0.0.0) and addresses of unsupported Classes (e.g., Class E). For entities which are not IP routers and therefore do not forward datagrams, this counter includes datagrams discarded because the destination address was not a local address. STATUS: Not supported IpInNoRoutes (Not in ip-mib) Number of input datagrams discarded because there was a problem with either determination of inbound interface or a problem with determination of a route back to the source of the datagram. STATUS: Supported IpInDiscards The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but which were discarded (e.g., for lack of buffer space). Note that this counter does not include any datagrams discarded while awaiting re-assembly. STATUS: Not supported IpInDelivers The total number of input datagrams successfully delivered to IP user-protocols (including ICMP). STATUS: Supported IpOutRequests The total number of IP datagrams which local IP user- protocols (including ICMP) supplied to IP in requests for transmission. Note that this counter does not include any datagrams counted in ipForwDatagrams. STATUS: Supported IpOutDiscards The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but which were discarded (e.g., for lack of buffer space). Note that this counter would include datagrams counted in ipForwDatagrams if any such packets met this (discretionary) discard criterion. STATUS: Supported IpOutNoRoutes The number of IP datagrams discarded because no route could be found to transmit them to their destination. Note that this counter includes any packets counted in ipForwDatagrams which meet this `no-route' criterion. Note that this includes any datagrams which a host cannot route because all of its default routers are down. STATUS: Supported IpReasmTimeout The maximum number of seconds which received fragments are held while they are awaiting reassembly at this entity. STATUS: Not Supported IpReasmReqds The number of IP fragments received which needed to be reassembled at this entity. STATUS: Not Supported IpReasmOKs The number of IP datagrams successfully re-assembled. STATUS: Not Supported IpReasmFails The number of failures detected by the IP re-assembly algorithm (for whatever reason: timed out, errors, etc). Note that this is not necessarily a count of discarded IP fragments since some algorithms (notably the algorithm in RFC 815) can lose track of the number of fragments by combining them as they are received. STATUS: Not Supported IpFragOKs The number of IP datagrams that have been successfully fragmented at this entity. STATUS: Not Supported IpFragFails The number of IP datagrams that have been discarded because they needed to be fragmented at this entity but could not be, e.g., because their Don't Fragment flag was set. STATUS: Not Supported IpFragCreates The number of IP datagram fragments that have been generated as a result of fragmentation at this entity. STATUS: Not Supported 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. The user should have root access to configure offload rules using nxoffload. 3. 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. 4. TCP tuple is not implemented in this release. 5. LSA does not support jumbo frames in this release. If the MTU is set to jumbo then LSA will fall back to 1500. 6. 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-