ionic: update documentation for XDP support
[sfrench/cifs-2.6.git] / Documentation / networking / device_drivers / ethernet / pensando / ionic.rst
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 ========================================================
4 Linux Driver for the Pensando(R) Ethernet adapter family
5 ========================================================
6
7 Pensando Linux Ethernet driver.
8 Copyright(c) 2019 Pensando Systems, Inc
9
10 Contents
11 ========
12
13 - Identifying the Adapter
14 - Enabling the driver
15 - Configuring the driver
16 - Statistics
17 - Support
18
19 Identifying the Adapter
20 =======================
21
22 To find if one or more Pensando PCI Ethernet devices are installed on the
23 host, check for the PCI devices::
24
25   $ lspci -d 1dd8:
26   b5:00.0 Ethernet controller: Device 1dd8:1002
27   b6:00.0 Ethernet controller: Device 1dd8:1002
28
29 If such devices are listed as above, then the ionic.ko driver should find
30 and configure them for use.  There should be log entries in the kernel
31 messages such as these::
32
33   $ dmesg | grep ionic
34   ionic 0000:b5:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
35   ionic 0000:b5:00.0 enp181s0: renamed from eth0
36   ionic 0000:b5:00.0 enp181s0: Link up - 100 Gbps
37   ionic 0000:b6:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
38   ionic 0000:b6:00.0 enp182s0: renamed from eth0
39   ionic 0000:b6:00.0 enp182s0: Link up - 100 Gbps
40
41 Driver and firmware version information can be gathered with either of
42 ethtool or devlink tools::
43
44   $ ethtool -i enp181s0
45   driver: ionic
46   version: 5.7.0
47   firmware-version: 1.8.0-28
48   ...
49
50   $ devlink dev info pci/0000:b5:00.0
51   pci/0000:b5:00.0:
52     driver ionic
53     serial_number FLM18420073
54     versions:
55         fixed:
56           asic.id 0x0
57           asic.rev 0x0
58         running:
59           fw 1.8.0-28
60
61 See Documentation/networking/devlink/ionic.rst for more information
62 on the devlink dev info data.
63
64 Enabling the driver
65 ===================
66
67 The driver is enabled via the standard kernel configuration system,
68 using the make command::
69
70   make oldconfig/menuconfig/etc.
71
72 The driver is located in the menu structure at:
73
74   -> Device Drivers
75     -> Network device support (NETDEVICES [=y])
76       -> Ethernet driver support
77         -> Pensando devices
78           -> Pensando Ethernet IONIC Support
79
80 Configuring the Driver
81 ======================
82
83 MTU
84 ---
85
86 Jumbo frame support is available with a maximum size of 9194 bytes.
87
88 Interrupt coalescing
89 --------------------
90
91 Interrupt coalescing can be configured by changing the rx-usecs value with
92 the "ethtool -C" command.  The rx-usecs range is 0-190.  The tx-usecs value
93 reflects the rx-usecs value as they are tied together on the same interrupt.
94
95 SR-IOV
96 ------
97
98 Minimal SR-IOV support is currently offered and can be enabled by setting
99 the sysfs 'sriov_numvfs' value, if supported by your particular firmware
100 configuration.
101
102 XDP
103 ---
104
105 Support for XDP includes the basics, plus Jumbo frames, Redirect and
106 ndo_xmit.  There is no current support for zero-copy sockets or HW offload.
107
108 Statistics
109 ==========
110
111 Basic hardware stats
112 --------------------
113
114 The commands ``netstat -i``, ``ip -s link show``, and ``ifconfig`` show
115 a limited set of statistics taken directly from firmware.  For example::
116
117   $ ip -s link show enp181s0
118   7: enp181s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
119       link/ether 00:ae:cd:00:07:68 brd ff:ff:ff:ff:ff:ff
120       RX: bytes  packets  errors  dropped overrun mcast
121       414        5        0       0       0       0
122       TX: bytes  packets  errors  dropped carrier collsns
123       1384       18       0       0       0       0
124
125 ethtool -S
126 ----------
127
128 The statistics shown from the ``ethtool -S`` command includes a combination of
129 driver counters and firmware counters, including port and queue specific values.
130 The driver values are counters computed by the driver, and the firmware values
131 are gathered by the firmware from the port hardware and passed through the
132 driver with no further interpretation.
133
134 Driver port specific::
135
136      tx_packets: 12
137      tx_bytes: 964
138      rx_packets: 5
139      rx_bytes: 414
140      tx_tso: 0
141      tx_tso_bytes: 0
142      tx_csum_none: 12
143      tx_csum: 0
144      rx_csum_none: 0
145      rx_csum_complete: 3
146      rx_csum_error: 0
147      xdp_drop: 0
148      xdp_aborted: 0
149      xdp_pass: 0
150      xdp_tx: 0
151      xdp_redirect: 0
152      xdp_frames: 0
153
154 Driver queue specific::
155
156      tx_0_pkts: 3
157      tx_0_bytes: 294
158      tx_0_clean: 3
159      tx_0_dma_map_err: 0
160      tx_0_linearize: 0
161      tx_0_frags: 0
162      tx_0_tso: 0
163      tx_0_tso_bytes: 0
164      tx_0_hwstamp_valid: 0
165      tx_0_hwstamp_invalid: 0
166      tx_0_csum_none: 3
167      tx_0_csum: 0
168      tx_0_vlan_inserted: 0
169      tx_0_xdp_frames: 0
170      rx_0_pkts: 2
171      rx_0_bytes: 120
172      rx_0_dma_map_err: 0
173      rx_0_alloc_err: 0
174      rx_0_csum_none: 0
175      rx_0_csum_complete: 0
176      rx_0_csum_error: 0
177      rx_0_hwstamp_valid: 0
178      rx_0_hwstamp_invalid: 0
179      rx_0_dropped: 0
180      rx_0_vlan_stripped: 0
181      rx_0_xdp_drop: 0
182      rx_0_xdp_aborted: 0
183      rx_0_xdp_pass: 0
184      rx_0_xdp_tx: 0
185      rx_0_xdp_redirect: 0
186
187 Firmware port specific::
188
189      hw_tx_dropped: 0
190      hw_rx_dropped: 0
191      hw_rx_over_errors: 0
192      hw_rx_missed_errors: 0
193      hw_tx_aborted_errors: 0
194      frames_rx_ok: 15
195      frames_rx_all: 15
196      frames_rx_bad_fcs: 0
197      frames_rx_bad_all: 0
198      octets_rx_ok: 1290
199      octets_rx_all: 1290
200      frames_rx_unicast: 10
201      frames_rx_multicast: 5
202      frames_rx_broadcast: 0
203      frames_rx_pause: 0
204      frames_rx_bad_length: 0
205      frames_rx_undersized: 0
206      frames_rx_oversized: 0
207      frames_rx_fragments: 0
208      frames_rx_jabber: 0
209      frames_rx_pripause: 0
210      frames_rx_stomped_crc: 0
211      frames_rx_too_long: 0
212      frames_rx_vlan_good: 3
213      frames_rx_dropped: 0
214      frames_rx_less_than_64b: 0
215      frames_rx_64b: 4
216      frames_rx_65b_127b: 11
217      frames_rx_128b_255b: 0
218      frames_rx_256b_511b: 0
219      frames_rx_512b_1023b: 0
220      frames_rx_1024b_1518b: 0
221      frames_rx_1519b_2047b: 0
222      frames_rx_2048b_4095b: 0
223      frames_rx_4096b_8191b: 0
224      frames_rx_8192b_9215b: 0
225      frames_rx_other: 0
226      frames_tx_ok: 31
227      frames_tx_all: 31
228      frames_tx_bad: 0
229      octets_tx_ok: 2614
230      octets_tx_total: 2614
231      frames_tx_unicast: 8
232      frames_tx_multicast: 21
233      frames_tx_broadcast: 2
234      frames_tx_pause: 0
235      frames_tx_pripause: 0
236      frames_tx_vlan: 0
237      frames_tx_less_than_64b: 0
238      frames_tx_64b: 4
239      frames_tx_65b_127b: 27
240      frames_tx_128b_255b: 0
241      frames_tx_256b_511b: 0
242      frames_tx_512b_1023b: 0
243      frames_tx_1024b_1518b: 0
244      frames_tx_1519b_2047b: 0
245      frames_tx_2048b_4095b: 0
246      frames_tx_4096b_8191b: 0
247      frames_tx_8192b_9215b: 0
248      frames_tx_other: 0
249      frames_tx_pri_0: 0
250      frames_tx_pri_1: 0
251      frames_tx_pri_2: 0
252      frames_tx_pri_3: 0
253      frames_tx_pri_4: 0
254      frames_tx_pri_5: 0
255      frames_tx_pri_6: 0
256      frames_tx_pri_7: 0
257      frames_rx_pri_0: 0
258      frames_rx_pri_1: 0
259      frames_rx_pri_2: 0
260      frames_rx_pri_3: 0
261      frames_rx_pri_4: 0
262      frames_rx_pri_5: 0
263      frames_rx_pri_6: 0
264      frames_rx_pri_7: 0
265      tx_pripause_0_1us_count: 0
266      tx_pripause_1_1us_count: 0
267      tx_pripause_2_1us_count: 0
268      tx_pripause_3_1us_count: 0
269      tx_pripause_4_1us_count: 0
270      tx_pripause_5_1us_count: 0
271      tx_pripause_6_1us_count: 0
272      tx_pripause_7_1us_count: 0
273      rx_pripause_0_1us_count: 0
274      rx_pripause_1_1us_count: 0
275      rx_pripause_2_1us_count: 0
276      rx_pripause_3_1us_count: 0
277      rx_pripause_4_1us_count: 0
278      rx_pripause_5_1us_count: 0
279      rx_pripause_6_1us_count: 0
280      rx_pripause_7_1us_count: 0
281      rx_pause_1us_count: 0
282      frames_tx_truncated: 0
283
284
285 Support
286 =======
287
288 For general Linux networking support, please use the netdev mailing
289 list, which is monitored by Pensando personnel::
290
291   netdev@vger.kernel.org
292
293 For more specific support needs, please use the Pensando driver support
294 email::
295
296   drivers@pensando.io