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