1.. SPDX-License-Identifier: GPL-2.0+
2
3========================================================
4Linux Driver for the Pensando(R) Ethernet adapter family
5========================================================
6
7Pensando Linux Ethernet driver.
8Copyright(c) 2019 Pensando Systems, Inc
9
10Contents
11========
12
13- Identifying the Adapter
14- Enabling the driver
15- Configuring the driver
16- Statistics
17- Support
18
19Identifying the Adapter
20=======================
21
22To find if one or more Pensando PCI Ethernet devices are installed on the
23host, 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
29If such devices are listed as above, then the ionic.ko driver should find
30and configure them for use.  There should be log entries in the kernel
31messages 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
41Driver and firmware version information can be gathered with either of
42ethtool 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
61See Documentation/networking/devlink/ionic.rst for more information
62on the devlink dev info data.
63
64Enabling the driver
65===================
66
67The driver is enabled via the standard kernel configuration system,
68using the make command::
69
70  make oldconfig/menuconfig/etc.
71
72The 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
80Configuring the Driver
81======================
82
83MTU
84---
85
86Jumbo frame support is available with a maximum size of 9194 bytes.
87
88Interrupt coalescing
89--------------------
90
91Interrupt coalescing can be configured by changing the rx-usecs value with
92the "ethtool -C" command.  The rx-usecs range is 0-190.  The tx-usecs value
93reflects the rx-usecs value as they are tied together on the same interrupt.
94
95SR-IOV
96------
97
98Minimal SR-IOV support is currently offered and can be enabled by setting
99the sysfs 'sriov_numvfs' value, if supported by your particular firmware
100configuration.
101
102XDP
103---
104
105Support for XDP includes the basics, plus Jumbo frames, Redirect and
106ndo_xmit.  There is no current support for zero-copy sockets or HW offload.
107
108Statistics
109==========
110
111Basic hardware stats
112--------------------
113
114The commands ``netstat -i``, ``ip -s link show``, and ``ifconfig`` show
115a 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
125ethtool -S
126----------
127
128The statistics shown from the ``ethtool -S`` command includes a combination of
129driver counters and firmware counters, including port and queue specific values.
130The driver values are counters computed by the driver, and the firmware values
131are gathered by the firmware from the port hardware and passed through the
132driver with no further interpretation.
133
134Driver 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
154Driver 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
187Firmware 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
285Support
286=======
287
288For general Linux networking support, please use the netdev mailing
289list, which is monitored by Pensando personnel::
290
291  netdev@vger.kernel.org
292
293For more specific support needs, please use the Pensando driver support
294email::
295
296  drivers@pensando.io
297