1.. SPDX-License-Identifier: GPL-2.0
2
3=========================================================
4Neterion's (Formerly S2io) Xframe I/II PCI-X 10GbE driver
5=========================================================
6
7Release notes for Neterion's (Formerly S2io) Xframe I/II PCI-X 10GbE driver.
8
9.. Contents
10  - 1.  Introduction
11  - 2.  Identifying the adapter/interface
12  - 3.  Features supported
13  - 4.  Command line parameters
14  - 5.  Performance suggestions
15  - 6.  Available Downloads
16
17
181. Introduction
19===============
20This Linux driver supports Neterion's Xframe I PCI-X 1.0 and
21Xframe II PCI-X 2.0 adapters. It supports several features
22such as jumbo frames, MSI/MSI-X, checksum offloads, TSO, UFO and so on.
23See below for complete list of features.
24
25All features are supported for both IPv4 and IPv6.
26
272. Identifying the adapter/interface
28====================================
29
30a. Insert the adapter(s) in your system.
31b. Build and load driver::
32
33	# insmod s2io.ko
34
35c. View log messages::
36
37	# dmesg | tail -40
38
39You will see messages similar to::
40
41	eth3: Neterion Xframe I 10GbE adapter (rev 3), Version 2.0.9.1, Intr type INTA
42	eth4: Neterion Xframe II 10GbE adapter (rev 2), Version 2.0.9.1, Intr type INTA
43	eth4: Device is on 64 bit 133MHz PCIX(M1) bus
44
45The above messages identify the adapter type(Xframe I/II), adapter revision,
46driver version, interface name(eth3, eth4), Interrupt type(INTA, MSI, MSI-X).
47In case of Xframe II, the PCI/PCI-X bus width and frequency are displayed
48as well.
49
50To associate an interface with a physical adapter use "ethtool -p <ethX>".
51The corresponding adapter's LED will blink multiple times.
52
533. Features supported
54=====================
55a. Jumbo frames. Xframe I/II supports MTU up to 9600 bytes,
56   modifiable using ip command.
57
58b. Offloads. Supports checksum offload(TCP/UDP/IP) on transmit
59   and receive, TSO.
60
61c. Multi-buffer receive mode. Scattering of packet across multiple
62   buffers. Currently driver supports 2-buffer mode which yields
63   significant performance improvement on certain platforms(SGI Altix,
64   IBM xSeries).
65
66d. MSI/MSI-X. Can be enabled on platforms which support this feature
67   (IA64, Xeon) resulting in noticeable performance improvement(up to 7%
68   on certain platforms).
69
70e. Statistics. Comprehensive MAC-level and software statistics displayed
71   using "ethtool -S" option.
72
73f. Multi-FIFO/Ring. Supports up to 8 transmit queues and receive rings,
74   with multiple steering options.
75
764. Command line parameters
77==========================
78
79a. tx_fifo_num
80	Number of transmit queues
81
82Valid range: 1-8
83
84Default: 1
85
86b. rx_ring_num
87	Number of receive rings
88
89Valid range: 1-8
90
91Default: 1
92
93c. tx_fifo_len
94	Size of each transmit queue
95
96Valid range: Total length of all queues should not exceed 8192
97
98Default: 4096
99
100d. rx_ring_sz
101	Size of each receive ring(in 4K blocks)
102
103Valid range: Limited by memory on system
104
105Default: 30
106
107e. intr_type
108	Specifies interrupt type. Possible values 0(INTA), 2(MSI-X)
109
110Valid values: 0, 2
111
112Default: 2
113
1145. Performance suggestions
115==========================
116
117General:
118
119a. Set MTU to maximum(9000 for switch setup, 9600 in back-to-back configuration)
120b. Set TCP windows size to optimal value.
121
122For instance, for MTU=1500 a value of 210K has been observed to result in
123good performance::
124
125	# sysctl -w net.ipv4.tcp_rmem="210000 210000 210000"
126	# sysctl -w net.ipv4.tcp_wmem="210000 210000 210000"
127
128For MTU=9000, TCP window size of 10 MB is recommended::
129
130	# sysctl -w net.ipv4.tcp_rmem="10000000 10000000 10000000"
131	# sysctl -w net.ipv4.tcp_wmem="10000000 10000000 10000000"
132
133Transmit performance:
134
135a. By default, the driver respects BIOS settings for PCI bus parameters.
136   However, you may want to experiment with PCI bus parameters
137   max-split-transactions(MOST) and MMRBC (use setpci command).
138
139   A MOST value of 2 has been found optimal for Opterons and 3 for Itanium.
140
141   It could be different for your hardware.
142
143   Set MMRBC to 4K**.
144
145   For example you can set
146
147   For opteron::
148
149	#setpci -d 17d5:* 62=1d
150
151   For Itanium::
152
153	#setpci -d 17d5:* 62=3d
154
155   For detailed description of the PCI registers, please see Xframe User Guide.
156
157b. Ensure Transmit Checksum offload is enabled. Use ethtool to set/verify this
158   parameter.
159
160c. Turn on TSO(using "ethtool -K")::
161
162	# ethtool -K <ethX> tso on
163
164Receive performance:
165
166a. By default, the driver respects BIOS settings for PCI bus parameters.
167   However, you may want to set PCI latency timer to 248::
168
169	#setpci -d 17d5:* LATENCY_TIMER=f8
170
171   For detailed description of the PCI registers, please see Xframe User Guide.
172
173b. Use 2-buffer mode. This results in large performance boost on
174   certain platforms(eg. SGI Altix, IBM xSeries).
175
176c. Ensure Receive Checksum offload is enabled. Use "ethtool -K ethX" command to
177   set/verify this option.
178
179d. Enable NAPI feature(in kernel configuration Device Drivers ---> Network
180   device support --->  Ethernet (10000 Mbit) ---> S2IO 10Gbe Xframe NIC) to
181   bring down CPU utilization.
182
183.. note::
184
185   For AMD opteron platforms with 8131 chipset, MMRBC=1 and MOST=1 are
186   recommended as safe parameters.
187
188For more information, please review the AMD8131 errata at
189http://vip.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/
19026310_AMD-8131_HyperTransport_PCI-X_Tunnel_Revision_Guide_rev_3_18.pdf
191
1926. Support
193==========
194
195For further support please contact either your 10GbE Xframe NIC vendor (IBM,
196HP, SGI etc.)
197