xref: /openbmc/linux/Documentation/networking/device_drivers/ethernet/pensando/ionic.rst (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1132db935SJakub Kicinski.. SPDX-License-Identifier: GPL-2.0+
2132db935SJakub Kicinski
3132db935SJakub Kicinski========================================================
4132db935SJakub KicinskiLinux Driver for the Pensando(R) Ethernet adapter family
5132db935SJakub Kicinski========================================================
6132db935SJakub Kicinski
7132db935SJakub KicinskiPensando Linux Ethernet driver.
8132db935SJakub KicinskiCopyright(c) 2019 Pensando Systems, Inc
9132db935SJakub Kicinski
10132db935SJakub KicinskiContents
11132db935SJakub Kicinski========
12132db935SJakub Kicinski
13132db935SJakub Kicinski- Identifying the Adapter
14132db935SJakub Kicinski- Enabling the driver
15132db935SJakub Kicinski- Configuring the driver
16132db935SJakub Kicinski- Statistics
17132db935SJakub Kicinski- Support
18132db935SJakub Kicinski
19132db935SJakub KicinskiIdentifying the Adapter
20132db935SJakub Kicinski=======================
21132db935SJakub Kicinski
22132db935SJakub KicinskiTo find if one or more Pensando PCI Ethernet devices are installed on the
23132db935SJakub Kicinskihost, check for the PCI devices::
24132db935SJakub Kicinski
25132db935SJakub Kicinski  $ lspci -d 1dd8:
26132db935SJakub Kicinski  b5:00.0 Ethernet controller: Device 1dd8:1002
27132db935SJakub Kicinski  b6:00.0 Ethernet controller: Device 1dd8:1002
28132db935SJakub Kicinski
29132db935SJakub KicinskiIf such devices are listed as above, then the ionic.ko driver should find
30132db935SJakub Kicinskiand configure them for use.  There should be log entries in the kernel
31132db935SJakub Kicinskimessages such as these::
32132db935SJakub Kicinski
33132db935SJakub Kicinski  $ dmesg | grep ionic
34132db935SJakub Kicinski  ionic 0000:b5:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
35132db935SJakub Kicinski  ionic 0000:b5:00.0 enp181s0: renamed from eth0
36132db935SJakub Kicinski  ionic 0000:b5:00.0 enp181s0: Link up - 100 Gbps
37132db935SJakub Kicinski  ionic 0000:b6:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
38132db935SJakub Kicinski  ionic 0000:b6:00.0 enp182s0: renamed from eth0
39132db935SJakub Kicinski  ionic 0000:b6:00.0 enp182s0: Link up - 100 Gbps
40132db935SJakub Kicinski
41132db935SJakub KicinskiDriver and firmware version information can be gathered with either of
42132db935SJakub Kicinskiethtool or devlink tools::
43132db935SJakub Kicinski
44132db935SJakub Kicinski  $ ethtool -i enp181s0
45132db935SJakub Kicinski  driver: ionic
46132db935SJakub Kicinski  version: 5.7.0
47132db935SJakub Kicinski  firmware-version: 1.8.0-28
48132db935SJakub Kicinski  ...
49132db935SJakub Kicinski
50132db935SJakub Kicinski  $ devlink dev info pci/0000:b5:00.0
51132db935SJakub Kicinski  pci/0000:b5:00.0:
52132db935SJakub Kicinski    driver ionic
53132db935SJakub Kicinski    serial_number FLM18420073
54132db935SJakub Kicinski    versions:
55132db935SJakub Kicinski        fixed:
56132db935SJakub Kicinski          asic.id 0x0
57132db935SJakub Kicinski          asic.rev 0x0
58132db935SJakub Kicinski        running:
59132db935SJakub Kicinski          fw 1.8.0-28
60132db935SJakub Kicinski
61132db935SJakub KicinskiSee Documentation/networking/devlink/ionic.rst for more information
62132db935SJakub Kicinskion the devlink dev info data.
63132db935SJakub Kicinski
64132db935SJakub KicinskiEnabling the driver
65132db935SJakub Kicinski===================
66132db935SJakub Kicinski
67132db935SJakub KicinskiThe driver is enabled via the standard kernel configuration system,
68132db935SJakub Kicinskiusing the make command::
69132db935SJakub Kicinski
70132db935SJakub Kicinski  make oldconfig/menuconfig/etc.
71132db935SJakub Kicinski
72132db935SJakub KicinskiThe driver is located in the menu structure at:
73132db935SJakub Kicinski
74132db935SJakub Kicinski  -> Device Drivers
75132db935SJakub Kicinski    -> Network device support (NETDEVICES [=y])
76132db935SJakub Kicinski      -> Ethernet driver support
77132db935SJakub Kicinski        -> Pensando devices
78132db935SJakub Kicinski          -> Pensando Ethernet IONIC Support
79132db935SJakub Kicinski
80132db935SJakub KicinskiConfiguring the Driver
81132db935SJakub Kicinski======================
82132db935SJakub Kicinski
83132db935SJakub KicinskiMTU
84132db935SJakub Kicinski---
85132db935SJakub Kicinski
86*a266ef69SRandy DunlapJumbo frame support is available with a maximum size of 9194 bytes.
87132db935SJakub Kicinski
88132db935SJakub KicinskiInterrupt coalescing
89132db935SJakub Kicinski--------------------
90132db935SJakub Kicinski
91132db935SJakub KicinskiInterrupt coalescing can be configured by changing the rx-usecs value with
92132db935SJakub Kicinskithe "ethtool -C" command.  The rx-usecs range is 0-190.  The tx-usecs value
93132db935SJakub Kicinskireflects the rx-usecs value as they are tied together on the same interrupt.
94132db935SJakub Kicinski
95132db935SJakub KicinskiSR-IOV
96132db935SJakub Kicinski------
97132db935SJakub Kicinski
98132db935SJakub KicinskiMinimal SR-IOV support is currently offered and can be enabled by setting
99132db935SJakub Kicinskithe sysfs 'sriov_numvfs' value, if supported by your particular firmware
100132db935SJakub Kicinskiconfiguration.
101132db935SJakub Kicinski
102132db935SJakub KicinskiStatistics
103132db935SJakub Kicinski==========
104132db935SJakub Kicinski
105132db935SJakub KicinskiBasic hardware stats
106132db935SJakub Kicinski--------------------
107132db935SJakub Kicinski
108132db935SJakub KicinskiThe commands ``netstat -i``, ``ip -s link show``, and ``ifconfig`` show
109132db935SJakub Kicinskia limited set of statistics taken directly from firmware.  For example::
110132db935SJakub Kicinski
111132db935SJakub Kicinski  $ ip -s link show enp181s0
112132db935SJakub Kicinski  7: enp181s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
113132db935SJakub Kicinski      link/ether 00:ae:cd:00:07:68 brd ff:ff:ff:ff:ff:ff
114132db935SJakub Kicinski      RX: bytes  packets  errors  dropped overrun mcast
115132db935SJakub Kicinski      414        5        0       0       0       0
116132db935SJakub Kicinski      TX: bytes  packets  errors  dropped carrier collsns
117132db935SJakub Kicinski      1384       18       0       0       0       0
118132db935SJakub Kicinski
119132db935SJakub Kicinskiethtool -S
120132db935SJakub Kicinski----------
121132db935SJakub Kicinski
122132db935SJakub KicinskiThe statistics shown from the ``ethtool -S`` command includes a combination of
123132db935SJakub Kicinskidriver counters and firmware counters, including port and queue specific values.
124132db935SJakub KicinskiThe driver values are counters computed by the driver, and the firmware values
125132db935SJakub Kicinskiare gathered by the firmware from the port hardware and passed through the
126132db935SJakub Kicinskidriver with no further interpretation.
127132db935SJakub Kicinski
128132db935SJakub KicinskiDriver port specific::
129132db935SJakub Kicinski
130132db935SJakub Kicinski     tx_packets: 12
131132db935SJakub Kicinski     tx_bytes: 964
132132db935SJakub Kicinski     rx_packets: 5
133132db935SJakub Kicinski     rx_bytes: 414
134132db935SJakub Kicinski     tx_tso: 0
135132db935SJakub Kicinski     tx_tso_bytes: 0
136132db935SJakub Kicinski     tx_csum_none: 12
137132db935SJakub Kicinski     tx_csum: 0
138132db935SJakub Kicinski     rx_csum_none: 0
139132db935SJakub Kicinski     rx_csum_complete: 3
140132db935SJakub Kicinski     rx_csum_error: 0
141132db935SJakub Kicinski
142132db935SJakub KicinskiDriver queue specific::
143132db935SJakub Kicinski
144132db935SJakub Kicinski     tx_0_pkts: 3
145132db935SJakub Kicinski     tx_0_bytes: 294
146132db935SJakub Kicinski     tx_0_clean: 3
147132db935SJakub Kicinski     tx_0_dma_map_err: 0
148132db935SJakub Kicinski     tx_0_linearize: 0
149132db935SJakub Kicinski     tx_0_frags: 0
150132db935SJakub Kicinski     tx_0_tso: 0
151132db935SJakub Kicinski     tx_0_tso_bytes: 0
152132db935SJakub Kicinski     tx_0_csum_none: 3
153132db935SJakub Kicinski     tx_0_csum: 0
154132db935SJakub Kicinski     tx_0_vlan_inserted: 0
155132db935SJakub Kicinski     rx_0_pkts: 2
156132db935SJakub Kicinski     rx_0_bytes: 120
157132db935SJakub Kicinski     rx_0_dma_map_err: 0
158132db935SJakub Kicinski     rx_0_alloc_err: 0
159132db935SJakub Kicinski     rx_0_csum_none: 0
160132db935SJakub Kicinski     rx_0_csum_complete: 0
161132db935SJakub Kicinski     rx_0_csum_error: 0
162132db935SJakub Kicinski     rx_0_dropped: 0
163132db935SJakub Kicinski     rx_0_vlan_stripped: 0
164132db935SJakub Kicinski
165132db935SJakub KicinskiFirmware port specific::
166132db935SJakub Kicinski
167132db935SJakub Kicinski     hw_tx_dropped: 0
168132db935SJakub Kicinski     hw_rx_dropped: 0
169132db935SJakub Kicinski     hw_rx_over_errors: 0
170132db935SJakub Kicinski     hw_rx_missed_errors: 0
171132db935SJakub Kicinski     hw_tx_aborted_errors: 0
172132db935SJakub Kicinski     frames_rx_ok: 15
173132db935SJakub Kicinski     frames_rx_all: 15
174132db935SJakub Kicinski     frames_rx_bad_fcs: 0
175132db935SJakub Kicinski     frames_rx_bad_all: 0
176132db935SJakub Kicinski     octets_rx_ok: 1290
177132db935SJakub Kicinski     octets_rx_all: 1290
178132db935SJakub Kicinski     frames_rx_unicast: 10
179132db935SJakub Kicinski     frames_rx_multicast: 5
180132db935SJakub Kicinski     frames_rx_broadcast: 0
181132db935SJakub Kicinski     frames_rx_pause: 0
182132db935SJakub Kicinski     frames_rx_bad_length: 0
183132db935SJakub Kicinski     frames_rx_undersized: 0
184132db935SJakub Kicinski     frames_rx_oversized: 0
185132db935SJakub Kicinski     frames_rx_fragments: 0
186132db935SJakub Kicinski     frames_rx_jabber: 0
187132db935SJakub Kicinski     frames_rx_pripause: 0
188132db935SJakub Kicinski     frames_rx_stomped_crc: 0
189132db935SJakub Kicinski     frames_rx_too_long: 0
190132db935SJakub Kicinski     frames_rx_vlan_good: 3
191132db935SJakub Kicinski     frames_rx_dropped: 0
192132db935SJakub Kicinski     frames_rx_less_than_64b: 0
193132db935SJakub Kicinski     frames_rx_64b: 4
194132db935SJakub Kicinski     frames_rx_65b_127b: 11
195132db935SJakub Kicinski     frames_rx_128b_255b: 0
196132db935SJakub Kicinski     frames_rx_256b_511b: 0
197132db935SJakub Kicinski     frames_rx_512b_1023b: 0
198132db935SJakub Kicinski     frames_rx_1024b_1518b: 0
199132db935SJakub Kicinski     frames_rx_1519b_2047b: 0
200132db935SJakub Kicinski     frames_rx_2048b_4095b: 0
201132db935SJakub Kicinski     frames_rx_4096b_8191b: 0
202132db935SJakub Kicinski     frames_rx_8192b_9215b: 0
203132db935SJakub Kicinski     frames_rx_other: 0
204132db935SJakub Kicinski     frames_tx_ok: 31
205132db935SJakub Kicinski     frames_tx_all: 31
206132db935SJakub Kicinski     frames_tx_bad: 0
207132db935SJakub Kicinski     octets_tx_ok: 2614
208132db935SJakub Kicinski     octets_tx_total: 2614
209132db935SJakub Kicinski     frames_tx_unicast: 8
210132db935SJakub Kicinski     frames_tx_multicast: 21
211132db935SJakub Kicinski     frames_tx_broadcast: 2
212132db935SJakub Kicinski     frames_tx_pause: 0
213132db935SJakub Kicinski     frames_tx_pripause: 0
214132db935SJakub Kicinski     frames_tx_vlan: 0
215132db935SJakub Kicinski     frames_tx_less_than_64b: 0
216132db935SJakub Kicinski     frames_tx_64b: 4
217132db935SJakub Kicinski     frames_tx_65b_127b: 27
218132db935SJakub Kicinski     frames_tx_128b_255b: 0
219132db935SJakub Kicinski     frames_tx_256b_511b: 0
220132db935SJakub Kicinski     frames_tx_512b_1023b: 0
221132db935SJakub Kicinski     frames_tx_1024b_1518b: 0
222132db935SJakub Kicinski     frames_tx_1519b_2047b: 0
223132db935SJakub Kicinski     frames_tx_2048b_4095b: 0
224132db935SJakub Kicinski     frames_tx_4096b_8191b: 0
225132db935SJakub Kicinski     frames_tx_8192b_9215b: 0
226132db935SJakub Kicinski     frames_tx_other: 0
227132db935SJakub Kicinski     frames_tx_pri_0: 0
228132db935SJakub Kicinski     frames_tx_pri_1: 0
229132db935SJakub Kicinski     frames_tx_pri_2: 0
230132db935SJakub Kicinski     frames_tx_pri_3: 0
231132db935SJakub Kicinski     frames_tx_pri_4: 0
232132db935SJakub Kicinski     frames_tx_pri_5: 0
233132db935SJakub Kicinski     frames_tx_pri_6: 0
234132db935SJakub Kicinski     frames_tx_pri_7: 0
235132db935SJakub Kicinski     frames_rx_pri_0: 0
236132db935SJakub Kicinski     frames_rx_pri_1: 0
237132db935SJakub Kicinski     frames_rx_pri_2: 0
238132db935SJakub Kicinski     frames_rx_pri_3: 0
239132db935SJakub Kicinski     frames_rx_pri_4: 0
240132db935SJakub Kicinski     frames_rx_pri_5: 0
241132db935SJakub Kicinski     frames_rx_pri_6: 0
242132db935SJakub Kicinski     frames_rx_pri_7: 0
243132db935SJakub Kicinski     tx_pripause_0_1us_count: 0
244132db935SJakub Kicinski     tx_pripause_1_1us_count: 0
245132db935SJakub Kicinski     tx_pripause_2_1us_count: 0
246132db935SJakub Kicinski     tx_pripause_3_1us_count: 0
247132db935SJakub Kicinski     tx_pripause_4_1us_count: 0
248132db935SJakub Kicinski     tx_pripause_5_1us_count: 0
249132db935SJakub Kicinski     tx_pripause_6_1us_count: 0
250132db935SJakub Kicinski     tx_pripause_7_1us_count: 0
251132db935SJakub Kicinski     rx_pripause_0_1us_count: 0
252132db935SJakub Kicinski     rx_pripause_1_1us_count: 0
253132db935SJakub Kicinski     rx_pripause_2_1us_count: 0
254132db935SJakub Kicinski     rx_pripause_3_1us_count: 0
255132db935SJakub Kicinski     rx_pripause_4_1us_count: 0
256132db935SJakub Kicinski     rx_pripause_5_1us_count: 0
257132db935SJakub Kicinski     rx_pripause_6_1us_count: 0
258132db935SJakub Kicinski     rx_pripause_7_1us_count: 0
259132db935SJakub Kicinski     rx_pause_1us_count: 0
260132db935SJakub Kicinski     frames_tx_truncated: 0
261132db935SJakub Kicinski
262132db935SJakub Kicinski
263132db935SJakub KicinskiSupport
264132db935SJakub Kicinski=======
265132db935SJakub Kicinski
266132db935SJakub KicinskiFor general Linux networking support, please use the netdev mailing
267132db935SJakub Kicinskilist, which is monitored by Pensando personnel::
268132db935SJakub Kicinski
269132db935SJakub Kicinski  netdev@vger.kernel.org
270132db935SJakub Kicinski
271132db935SJakub KicinskiFor more specific support needs, please use the Pensando driver support
272132db935SJakub Kicinskiemail::
273132db935SJakub Kicinski
274132db935SJakub Kicinski  drivers@pensando.io
275