0001 .. SPDX-License-Identifier: GPL-2.0+
0002
0003 ========================================================
0004 Linux Driver for the Pensando(R) Ethernet adapter family
0005 ========================================================
0006
0007 Pensando Linux Ethernet driver.
0008 Copyright(c) 2019 Pensando Systems, Inc
0009
0010 Contents
0011 ========
0012
0013 - Identifying the Adapter
0014 - Enabling the driver
0015 - Configuring the driver
0016 - Statistics
0017 - Support
0018
0019 Identifying the Adapter
0020 =======================
0021
0022 To find if one or more Pensando PCI Ethernet devices are installed on the
0023 host, check for the PCI devices::
0024
0025 $ lspci -d 1dd8:
0026 b5:00.0 Ethernet controller: Device 1dd8:1002
0027 b6:00.0 Ethernet controller: Device 1dd8:1002
0028
0029 If such devices are listed as above, then the ionic.ko driver should find
0030 and configure them for use. There should be log entries in the kernel
0031 messages such as these::
0032
0033 $ dmesg | grep ionic
0034 ionic 0000:b5:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
0035 ionic 0000:b5:00.0 enp181s0: renamed from eth0
0036 ionic 0000:b5:00.0 enp181s0: Link up - 100 Gbps
0037 ionic 0000:b6:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
0038 ionic 0000:b6:00.0 enp182s0: renamed from eth0
0039 ionic 0000:b6:00.0 enp182s0: Link up - 100 Gbps
0040
0041 Driver and firmware version information can be gathered with either of
0042 ethtool or devlink tools::
0043
0044 $ ethtool -i enp181s0
0045 driver: ionic
0046 version: 5.7.0
0047 firmware-version: 1.8.0-28
0048 ...
0049
0050 $ devlink dev info pci/0000:b5:00.0
0051 pci/0000:b5:00.0:
0052 driver ionic
0053 serial_number FLM18420073
0054 versions:
0055 fixed:
0056 asic.id 0x0
0057 asic.rev 0x0
0058 running:
0059 fw 1.8.0-28
0060
0061 See Documentation/networking/devlink/ionic.rst for more information
0062 on the devlink dev info data.
0063
0064 Enabling the driver
0065 ===================
0066
0067 The driver is enabled via the standard kernel configuration system,
0068 using the make command::
0069
0070 make oldconfig/menuconfig/etc.
0071
0072 The driver is located in the menu structure at:
0073
0074 -> Device Drivers
0075 -> Network device support (NETDEVICES [=y])
0076 -> Ethernet driver support
0077 -> Pensando devices
0078 -> Pensando Ethernet IONIC Support
0079
0080 Configuring the Driver
0081 ======================
0082
0083 MTU
0084 ---
0085
0086 Jumbo frame support is available with a maximim size of 9194 bytes.
0087
0088 Interrupt coalescing
0089 --------------------
0090
0091 Interrupt coalescing can be configured by changing the rx-usecs value with
0092 the "ethtool -C" command. The rx-usecs range is 0-190. The tx-usecs value
0093 reflects the rx-usecs value as they are tied together on the same interrupt.
0094
0095 SR-IOV
0096 ------
0097
0098 Minimal SR-IOV support is currently offered and can be enabled by setting
0099 the sysfs 'sriov_numvfs' value, if supported by your particular firmware
0100 configuration.
0101
0102 Statistics
0103 ==========
0104
0105 Basic hardware stats
0106 --------------------
0107
0108 The commands ``netstat -i``, ``ip -s link show``, and ``ifconfig`` show
0109 a limited set of statistics taken directly from firmware. For example::
0110
0111 $ ip -s link show enp181s0
0112 7: enp181s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
0113 link/ether 00:ae:cd:00:07:68 brd ff:ff:ff:ff:ff:ff
0114 RX: bytes packets errors dropped overrun mcast
0115 414 5 0 0 0 0
0116 TX: bytes packets errors dropped carrier collsns
0117 1384 18 0 0 0 0
0118
0119 ethtool -S
0120 ----------
0121
0122 The statistics shown from the ``ethtool -S`` command includes a combination of
0123 driver counters and firmware counters, including port and queue specific values.
0124 The driver values are counters computed by the driver, and the firmware values
0125 are gathered by the firmware from the port hardware and passed through the
0126 driver with no further interpretation.
0127
0128 Driver port specific::
0129
0130 tx_packets: 12
0131 tx_bytes: 964
0132 rx_packets: 5
0133 rx_bytes: 414
0134 tx_tso: 0
0135 tx_tso_bytes: 0
0136 tx_csum_none: 12
0137 tx_csum: 0
0138 rx_csum_none: 0
0139 rx_csum_complete: 3
0140 rx_csum_error: 0
0141
0142 Driver queue specific::
0143
0144 tx_0_pkts: 3
0145 tx_0_bytes: 294
0146 tx_0_clean: 3
0147 tx_0_dma_map_err: 0
0148 tx_0_linearize: 0
0149 tx_0_frags: 0
0150 tx_0_tso: 0
0151 tx_0_tso_bytes: 0
0152 tx_0_csum_none: 3
0153 tx_0_csum: 0
0154 tx_0_vlan_inserted: 0
0155 rx_0_pkts: 2
0156 rx_0_bytes: 120
0157 rx_0_dma_map_err: 0
0158 rx_0_alloc_err: 0
0159 rx_0_csum_none: 0
0160 rx_0_csum_complete: 0
0161 rx_0_csum_error: 0
0162 rx_0_dropped: 0
0163 rx_0_vlan_stripped: 0
0164
0165 Firmware port specific::
0166
0167 hw_tx_dropped: 0
0168 hw_rx_dropped: 0
0169 hw_rx_over_errors: 0
0170 hw_rx_missed_errors: 0
0171 hw_tx_aborted_errors: 0
0172 frames_rx_ok: 15
0173 frames_rx_all: 15
0174 frames_rx_bad_fcs: 0
0175 frames_rx_bad_all: 0
0176 octets_rx_ok: 1290
0177 octets_rx_all: 1290
0178 frames_rx_unicast: 10
0179 frames_rx_multicast: 5
0180 frames_rx_broadcast: 0
0181 frames_rx_pause: 0
0182 frames_rx_bad_length: 0
0183 frames_rx_undersized: 0
0184 frames_rx_oversized: 0
0185 frames_rx_fragments: 0
0186 frames_rx_jabber: 0
0187 frames_rx_pripause: 0
0188 frames_rx_stomped_crc: 0
0189 frames_rx_too_long: 0
0190 frames_rx_vlan_good: 3
0191 frames_rx_dropped: 0
0192 frames_rx_less_than_64b: 0
0193 frames_rx_64b: 4
0194 frames_rx_65b_127b: 11
0195 frames_rx_128b_255b: 0
0196 frames_rx_256b_511b: 0
0197 frames_rx_512b_1023b: 0
0198 frames_rx_1024b_1518b: 0
0199 frames_rx_1519b_2047b: 0
0200 frames_rx_2048b_4095b: 0
0201 frames_rx_4096b_8191b: 0
0202 frames_rx_8192b_9215b: 0
0203 frames_rx_other: 0
0204 frames_tx_ok: 31
0205 frames_tx_all: 31
0206 frames_tx_bad: 0
0207 octets_tx_ok: 2614
0208 octets_tx_total: 2614
0209 frames_tx_unicast: 8
0210 frames_tx_multicast: 21
0211 frames_tx_broadcast: 2
0212 frames_tx_pause: 0
0213 frames_tx_pripause: 0
0214 frames_tx_vlan: 0
0215 frames_tx_less_than_64b: 0
0216 frames_tx_64b: 4
0217 frames_tx_65b_127b: 27
0218 frames_tx_128b_255b: 0
0219 frames_tx_256b_511b: 0
0220 frames_tx_512b_1023b: 0
0221 frames_tx_1024b_1518b: 0
0222 frames_tx_1519b_2047b: 0
0223 frames_tx_2048b_4095b: 0
0224 frames_tx_4096b_8191b: 0
0225 frames_tx_8192b_9215b: 0
0226 frames_tx_other: 0
0227 frames_tx_pri_0: 0
0228 frames_tx_pri_1: 0
0229 frames_tx_pri_2: 0
0230 frames_tx_pri_3: 0
0231 frames_tx_pri_4: 0
0232 frames_tx_pri_5: 0
0233 frames_tx_pri_6: 0
0234 frames_tx_pri_7: 0
0235 frames_rx_pri_0: 0
0236 frames_rx_pri_1: 0
0237 frames_rx_pri_2: 0
0238 frames_rx_pri_3: 0
0239 frames_rx_pri_4: 0
0240 frames_rx_pri_5: 0
0241 frames_rx_pri_6: 0
0242 frames_rx_pri_7: 0
0243 tx_pripause_0_1us_count: 0
0244 tx_pripause_1_1us_count: 0
0245 tx_pripause_2_1us_count: 0
0246 tx_pripause_3_1us_count: 0
0247 tx_pripause_4_1us_count: 0
0248 tx_pripause_5_1us_count: 0
0249 tx_pripause_6_1us_count: 0
0250 tx_pripause_7_1us_count: 0
0251 rx_pripause_0_1us_count: 0
0252 rx_pripause_1_1us_count: 0
0253 rx_pripause_2_1us_count: 0
0254 rx_pripause_3_1us_count: 0
0255 rx_pripause_4_1us_count: 0
0256 rx_pripause_5_1us_count: 0
0257 rx_pripause_6_1us_count: 0
0258 rx_pripause_7_1us_count: 0
0259 rx_pause_1us_count: 0
0260 frames_tx_truncated: 0
0261
0262
0263 Support
0264 =======
0265
0266 For general Linux networking support, please use the netdev mailing
0267 list, which is monitored by Pensando personnel::
0268
0269 netdev@vger.kernel.org
0270
0271 For more specific support needs, please use the Pensando driver support
0272 email::
0273
0274 drivers@pensando.io