Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########################################################################
- # Release notes for the BSD NIC driver for OneConnect CNA using SLI-4.
- ########################################################################
- OCE Release: "806:2.0.1:145"
- #
- #-
- # Copyright (C) 2013 Emulex
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are met:
- #
- # 1. Redistributions of source code must retain the above copyright notice,
- # this list of conditions and the following disclaimer.
- #
- # 2. Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in the
- # documentation and/or other materials provided with the distribution.
- #
- # 3. Neither the name of the Emulex Corporation nor the names of its
- # contributors may be used to endorse or promote products derived from
- # this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- # POSSIBILITY OF SUCH DAMAGE.
- #
- # Contact Information:
- #
- # Emulex
- # 3333 Susan Street
- # Costa Mesa, CA 92626
- #
- ########################################################################
- # Getting started
- ########################################################################
- System requirements (recommended):
- OS: FreeBSD 8.2
- Arch: AMD64
- PCI-X: MSI-x support
- CPU: Dual-core or better
- This is a SOURCE release. Extract the files into a work directory on
- a BSD system capable of performing kernel builds.
- Files in this release are as follows:
- dev/oce/README
- dev/oce/loadit
- dev/oce/oce_buf.h
- dev/oce/oce_hw.c
- dev/oce/oce_hw.h
- dev/oce/oce_hw_eth.h
- dev/oce/oce_if.c
- dev/oce/oce_if.h
- dev/oce/oce_info.c
- dev/oce/oce_info.h
- dev/oce/oce_info_data.h
- dev/oce/oce_io.h
- dev/oce/oce_mbox.c
- dev/oce/oce_queue.c
- dev/oce/oce_rx.c
- dev/oce/oce_tx.c
- dev/oce/oce_util.c
- dev/oce/Makefile
- dev/oce/doc/Makefile
- dev/oce/doc/Config.doxy
- dev/oce/doc/Copyright
- ########################################################################
- # Driver Documentation
- ########################################################################
- To build driver documentation, change directory to dev/oce/doc and type:
- make
- firefox html/index.html
- Note: Requires doxygen, graphviz, mscgen packages:
- sudo pkg_add -r doxygen
- sudo pkg_add -r graphviz
- sudo pkg_add -r mscgen
- If mscgen package not found then build and install it from source.
- Source for FreeBSD packages can be found here:
- ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/
- ########################################################################
- # Driver Build
- ########################################################################
- To build the kernel module, change directory to dev/oce and type:
- make oce.ko
- This will build the oce.ko loadable kernel object module.
- This command must be exectued in the same directory as the
- oce.ko file, or the complete path to the oce.ko file must
- be provided instead of ./oce.ko.
- ########################################################################
- # Driver Load/Unload
- ########################################################################
- To load the kernel module type:
- sudo kldload ./oce.ko
- To unload the kernel module type:
- sudo kldunload oce
- Or simply use the "dev/oce/loadit" script. See script for
- setting options.
- ########################################################################
- # Driver Statistics
- ########################################################################
- To view device driver statistics simply type:
- sysctl -a | grep oce
- To view function call statistics simply type:
- ifconfig
- Note: OCE_TRACE_FUNC must be enabled (see 'loadit' script).
- ########################################################################
- # Driver Exercises
- ########################################################################
- The ping, ttcp and netperf programs can be usefull for
- exercising adaptor interface traffic.
- On the 1st host machine type:
- ./loadit 1
- Note: assigns 192.168.100.1 to oce0, 192.168.101.1 to oce1
- On the 2nd host machine type:
- ./loadit 2
- Note: assigns 192.168.100.2 to oce0, 192.168.101.2 to oce1
- For 'ping' on host1 type:
- ping 192.168.100.2
- ping 192.168.101.2
- For 'ping' on host2 type:
- ping 192.168.100.1
- ping 192.168.101.1
- For 'ttcp' RX on host1 type:
- ttcp -r -s -n 54321
- For 'ttcp' TX on host2 type:
- ttcp -t -s -n 44444 192.168.100.1
- For 'netperf' server on host1 type:
- netserver -L 192.168.100.1,inet
- For 'netperf' client on host2 type:
- netperf -L 192.168.100.2,inet -H 192.168.100.1,inet
- ########################################################################
- # Driver Parameters
- ########################################################################
- Kernel module parameters:
- disable_msix:
- kenv name: hw.oce.disable_msix
- sysctl name: <NOT APPLICABLE>
- default: 0
- allowed values: 0, 1
- 0 allows MSIx interrupts to be used, if available.
- 1 will cause the INTx interrupt to be used, even
- if MSIx is available.
- This parameter is not available via sysctl.
- max_rsp_handled:
- kenv name: hw.oce.max_rsp_handled
- sysctl name: dev.oceX.max_rsp_handled
- default: 512
- allowed values: 1 - 1024
- The maximum number of receive frames that will be
- processed during a single receive frame interrupt.
- enable_csum:
- kenv name: hw.oce.enable_csum
- sysctl name: <NOT APPLICABLE>
- default: 1
- allowd values: 0, 1
- A setting of 1 will cause the driver to indicate
- to the network layers above that the adapter is capable
- of performing TCP, UDP, and IP checksum offload.
- A setting of 0 will disable this feature.
- trace_enable:
- kenv name: hw.oce.trace_enable
- sysctl name: dev.oceX.trace_enable
- default: 0x00000001
- allowed values: 0-0xffffffff
- Each bit corresponds to a trace flag. Each trace flag
- turns on a separate set of trace messages. Bit 0
- corresponds to ERROR, so it should always be enabled
- to show unexpeced errors. Trace messages are emitted
- to the console and the /var/log/messages file.
- The different sets of trace messages are indicated below:
- OCE_TRACE_ERROR 0x00000001
- OCE_TRACE_ENTRY_EXIT 0x00000002
- OCE_TRACE_IOCTL 0x00000004
- OCE_TRACE_MAILBOX 0x00000008
- OCE_TRACE_INIT 0x00000010
- OCE_TRACE_INTR 0x00000020
- OCE_TRACE_FAST_INTR 0x00000040
- OCE_TRACE_TX 0x00000080
- OCE_TRACE_RX 0x00000100
- OCE_TRACE_PCI 0x00000200
- OCE_TRACE_UNHANDLED 0x00000400
- OCE_TRACE_IF 0x00000800
- OCE_TRACE_RING_BUF 0x00001000
- OCE_TRACE_FUNC 0x00002000
- OCE_TRACE_STRUCT 0x00004000
- OCE_TRACE_STATS 0x00008000
- OCE_TRACE_HEXDUMPS 0x00010000
- OCE_TRACE_FLAGS 0x00020000
- OCE_TRACE_NONE 0x00000000
- OCE_TRACE_ALL 0xFFFFFFFF
- Note: see 'loadit' script for setting trace_enable parameters.
- ########################################################################
- # Driver Statistics Instrumentation
- ########################################################################
- Accessing Statistics:
- For FreeBSD the mechanism to access device driver adaptor
- statistics and instrumenation counters is the "sysctl"
- command:
- For a list of all OCE device driver statistics type:
- sysctl -a | grep oce
- ########################################################################
- # Driver Supported Features
- ########################################################################
- This is a "basic" target mode NIC driver release and therefore
- does not (as yet) include support for advanced EMULEX driver
- features such as SR-IOV, MR-IOV, QGroups, HDS and VMQ.
- This driver spupports *both* the EMULEX BE3 (Tomcat) and
- EMULEX XE201 (Lancer) converged network adapters. Please
- contact EMULEX concerning availablity of updates to this driver.
- The following table lists the current disposition of features
- for the EMULEX FreeBSD OneConnect 10Gb Ethernet (OCE) device
- driver for BE3 and Lacer adpaptors:
- --------------------------------------------------------
- Features Support: Emulex FreeBSD OCE device driver.
- --------------------------------------------------------
- OS FreeBSD 8.2
- Architecture AMD64
- --------------------- ---------------------------
- Feature Support
- --------------------- ---------------------------
- BE3/Tomcat Yes
- XE201/Lancer Yes
- Lancer A0-chip errata Yes
- 2-port Yes
- 4-port Planned
- Multicore Yes
- Multiprocessor Yes
- PCI-E Yes
- Statistics Yes
- Jumbo Packets Yes
- VLAN Yes
- Multicast Yes
- RSS Yes (4RQ/port, >4 planned)
- TSO/LSO Yes
- Software LRO Yes
- CSO Yes
- SR IOV Planned
- MR IOV Planned
- Bonding Yes
- PXE Yes
- MSI-x Yes (32/BE3, 1024/XE201)
- Debug Yes
- Diagnostics Planned
- Promiscuous-mode Yes
- ########################################################################
- # Driver Errata and workarounds:
- ########################################################################
- The following lists known errata pertinate to this release of the
- BSD NIC driver for OneConnect BE3 and XE201 CNA's using SLI-4.
- 1) Disabling MSI-x is not supported.
- 2) The FreeBSD "ifconfig" command includes capabilities
- or dynamically modifying and setting TSO offload and
- IP, UDP and TCP checksum offload. Dynamically modifing these
- options is not supported. The driver supports static (driver
- load tunable and sysctl CSO parameters.
- 3) Device driver performance has not been optimized.
- Optimizations will be addressed in future releases.
- Lancer A0 is the first generation chipset. Emulex has performed
- an engineering analysis of A0 chipset errata from the FreeBSD
- device driver perspective. The following outlines the results of
- the analysis as well and pending work planned for implementation.
- 1) RQ entry starvation may cause port blocking resulting in
- dropping of packets/frames.
- -> Driver implements policy for dropping packets on stalled
- RX queues.
- 2) MSI/MSI-X interrupt is received in the driver before related
- Event Queue entry.
- -> Implemented lost interrupt EQ workaround.
- 3) IOC XE201 does not generate an interrupt until the coalesce
- count is reached.
- 4) Zero-length BDEs may generate invalid DMA commands.
- -> Reasonable behavior, driver should avoid setting the
- length of valid DMA buffer data descriptors to zero
- (a non-nonsensical value).
- 5) SLI Port issues DMA requests inappropriately.
- -> Driver implement DMA mappings release delay.
- 6) NIC packets always drop with L3/L4 checksum errors.
- -> Driver implemented SLI-4 option default as no-L3/L4 error
- notification.
- 7) Unnecessary padding added to 64B packets in some fields.
- -> Non-issue: not visible over link or to the driver.
- 8) Short TCP IPv4 packets (<60 bytes) with TCP checksum
- offload transmitted with an incorrect TCP checksum.
- -> Workqueue packet length must reflect data, not padding
- for checksum to be correct.
- 9) Receive packets must not have two (or more) VNTAGs.
- -> Normal behavior, driver statistics will note dropped packets.
- 10) Hardware Large Receive Offload (LRO) is not supported.
- -> Implemented software LRO in the driver.
- 12) Transmit restrictions in Ethernet packet headers.
- -> Driver implement Tx packet length tracking.
- 13) Incorrect indication in CQE on TCP/IDP IPv4/IPv6 checksums.
- -> Driver implements recommended workaround given in errata.
- 14) The IOC XE201 indicates incorrect number of fragments in
- the completion for an HDS packet.
- -> Driver implements recommended workaround given in errata.
- 15) The IOC XE201 does not forward packets with L3/L4 illegal
- or truncated headers.
- -> Normal expected behavior, adaptor statistics do reflect
- dropped packets.
- 16) The NIC driver may not be informed of truncated L4 payload.
- -> Normal expected behavior is L4 layer catches and correctly
- processes.
- 17) Ethernet packets may be misprocessed if the L2 header
- contains too many tag bytes.
- -> Normal expected behavior for non-standard frames.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement