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