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 maximim 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 102Statistics 103========== 104 105Basic hardware stats 106-------------------- 107 108The commands ``netstat -i``, ``ip -s link show``, and ``ifconfig`` show 109a limited set of statistics taken directly from firmware. For example:: 110 111 $ ip -s link show enp181s0 112 7: enp181s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 113 link/ether 00:ae:cd:00:07:68 brd ff:ff:ff:ff:ff:ff 114 RX: bytes packets errors dropped overrun mcast 115 414 5 0 0 0 0 116 TX: bytes packets errors dropped carrier collsns 117 1384 18 0 0 0 0 118 119ethtool -S 120---------- 121 122The statistics shown from the ``ethtool -S`` command includes a combination of 123driver counters and firmware counters, including port and queue specific values. 124The driver values are counters computed by the driver, and the firmware values 125are gathered by the firmware from the port hardware and passed through the 126driver with no further interpretation. 127 128Driver port specific:: 129 130 tx_packets: 12 131 tx_bytes: 964 132 rx_packets: 5 133 rx_bytes: 414 134 tx_tso: 0 135 tx_tso_bytes: 0 136 tx_csum_none: 12 137 tx_csum: 0 138 rx_csum_none: 0 139 rx_csum_complete: 3 140 rx_csum_error: 0 141 142Driver queue specific:: 143 144 tx_0_pkts: 3 145 tx_0_bytes: 294 146 tx_0_clean: 3 147 tx_0_dma_map_err: 0 148 tx_0_linearize: 0 149 tx_0_frags: 0 150 tx_0_tso: 0 151 tx_0_tso_bytes: 0 152 tx_0_csum_none: 3 153 tx_0_csum: 0 154 tx_0_vlan_inserted: 0 155 rx_0_pkts: 2 156 rx_0_bytes: 120 157 rx_0_dma_map_err: 0 158 rx_0_alloc_err: 0 159 rx_0_csum_none: 0 160 rx_0_csum_complete: 0 161 rx_0_csum_error: 0 162 rx_0_dropped: 0 163 rx_0_vlan_stripped: 0 164 165Firmware port specific:: 166 167 hw_tx_dropped: 0 168 hw_rx_dropped: 0 169 hw_rx_over_errors: 0 170 hw_rx_missed_errors: 0 171 hw_tx_aborted_errors: 0 172 frames_rx_ok: 15 173 frames_rx_all: 15 174 frames_rx_bad_fcs: 0 175 frames_rx_bad_all: 0 176 octets_rx_ok: 1290 177 octets_rx_all: 1290 178 frames_rx_unicast: 10 179 frames_rx_multicast: 5 180 frames_rx_broadcast: 0 181 frames_rx_pause: 0 182 frames_rx_bad_length: 0 183 frames_rx_undersized: 0 184 frames_rx_oversized: 0 185 frames_rx_fragments: 0 186 frames_rx_jabber: 0 187 frames_rx_pripause: 0 188 frames_rx_stomped_crc: 0 189 frames_rx_too_long: 0 190 frames_rx_vlan_good: 3 191 frames_rx_dropped: 0 192 frames_rx_less_than_64b: 0 193 frames_rx_64b: 4 194 frames_rx_65b_127b: 11 195 frames_rx_128b_255b: 0 196 frames_rx_256b_511b: 0 197 frames_rx_512b_1023b: 0 198 frames_rx_1024b_1518b: 0 199 frames_rx_1519b_2047b: 0 200 frames_rx_2048b_4095b: 0 201 frames_rx_4096b_8191b: 0 202 frames_rx_8192b_9215b: 0 203 frames_rx_other: 0 204 frames_tx_ok: 31 205 frames_tx_all: 31 206 frames_tx_bad: 0 207 octets_tx_ok: 2614 208 octets_tx_total: 2614 209 frames_tx_unicast: 8 210 frames_tx_multicast: 21 211 frames_tx_broadcast: 2 212 frames_tx_pause: 0 213 frames_tx_pripause: 0 214 frames_tx_vlan: 0 215 frames_tx_less_than_64b: 0 216 frames_tx_64b: 4 217 frames_tx_65b_127b: 27 218 frames_tx_128b_255b: 0 219 frames_tx_256b_511b: 0 220 frames_tx_512b_1023b: 0 221 frames_tx_1024b_1518b: 0 222 frames_tx_1519b_2047b: 0 223 frames_tx_2048b_4095b: 0 224 frames_tx_4096b_8191b: 0 225 frames_tx_8192b_9215b: 0 226 frames_tx_other: 0 227 frames_tx_pri_0: 0 228 frames_tx_pri_1: 0 229 frames_tx_pri_2: 0 230 frames_tx_pri_3: 0 231 frames_tx_pri_4: 0 232 frames_tx_pri_5: 0 233 frames_tx_pri_6: 0 234 frames_tx_pri_7: 0 235 frames_rx_pri_0: 0 236 frames_rx_pri_1: 0 237 frames_rx_pri_2: 0 238 frames_rx_pri_3: 0 239 frames_rx_pri_4: 0 240 frames_rx_pri_5: 0 241 frames_rx_pri_6: 0 242 frames_rx_pri_7: 0 243 tx_pripause_0_1us_count: 0 244 tx_pripause_1_1us_count: 0 245 tx_pripause_2_1us_count: 0 246 tx_pripause_3_1us_count: 0 247 tx_pripause_4_1us_count: 0 248 tx_pripause_5_1us_count: 0 249 tx_pripause_6_1us_count: 0 250 tx_pripause_7_1us_count: 0 251 rx_pripause_0_1us_count: 0 252 rx_pripause_1_1us_count: 0 253 rx_pripause_2_1us_count: 0 254 rx_pripause_3_1us_count: 0 255 rx_pripause_4_1us_count: 0 256 rx_pripause_5_1us_count: 0 257 rx_pripause_6_1us_count: 0 258 rx_pripause_7_1us_count: 0 259 rx_pause_1us_count: 0 260 frames_tx_truncated: 0 261 262 263Support 264======= 265 266For general Linux networking support, please use the netdev mailing 267list, which is monitored by Pensando personnel:: 268 269 netdev@vger.kernel.org 270 271For more specific support needs, please use the Pensando driver support 272email:: 273 274 drivers@pensando.io 275