ionic.rst 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. .. SPDX-License-Identifier: GPL-2.0+
  2. ========================================================
  3. Linux Driver for the Pensando(R) Ethernet adapter family
  4. ========================================================
  5. Pensando Linux Ethernet driver.
  6. Copyright(c) 2019 Pensando Systems, Inc
  7. Contents
  8. ========
  9. - Identifying the Adapter
  10. - Enabling the driver
  11. - Configuring the driver
  12. - RDMA Support via Auxiliary Device
  13. - Statistics
  14. - Support
  15. Identifying the Adapter
  16. =======================
  17. To find if one or more Pensando PCI Ethernet devices are installed on the
  18. host, check for the PCI devices::
  19. $ lspci -d 1dd8:
  20. b5:00.0 Ethernet controller: Device 1dd8:1002
  21. b6:00.0 Ethernet controller: Device 1dd8:1002
  22. If such devices are listed as above, then the ionic.ko driver should find
  23. and configure them for use. There should be log entries in the kernel
  24. messages such as these::
  25. $ dmesg | grep ionic
  26. ionic 0000:b5:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
  27. ionic 0000:b5:00.0 enp181s0: renamed from eth0
  28. ionic 0000:b5:00.0 enp181s0: Link up - 100 Gbps
  29. ionic 0000:b6:00.0: 126.016 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x16 link)
  30. ionic 0000:b6:00.0 enp182s0: renamed from eth0
  31. ionic 0000:b6:00.0 enp182s0: Link up - 100 Gbps
  32. Driver and firmware version information can be gathered with either of
  33. ethtool or devlink tools::
  34. $ ethtool -i enp181s0
  35. driver: ionic
  36. version: 5.7.0
  37. firmware-version: 1.8.0-28
  38. ...
  39. $ devlink dev info pci/0000:b5:00.0
  40. pci/0000:b5:00.0:
  41. driver ionic
  42. serial_number FLM18420073
  43. versions:
  44. fixed:
  45. asic.id 0x0
  46. asic.rev 0x0
  47. running:
  48. fw 1.8.0-28
  49. See Documentation/networking/devlink/ionic.rst for more information
  50. on the devlink dev info data.
  51. Enabling the driver
  52. ===================
  53. The driver is enabled via the standard kernel configuration system,
  54. using the make command::
  55. make oldconfig/menuconfig/etc.
  56. The driver is located in the menu structure at:
  57. -> Device Drivers
  58. -> Network device support (NETDEVICES [=y])
  59. -> Ethernet driver support
  60. -> Pensando devices
  61. -> Pensando Ethernet IONIC Support
  62. Configuring the Driver
  63. ======================
  64. MTU
  65. ---
  66. Jumbo frame support is available with a maximum size of 9194 bytes.
  67. Interrupt coalescing
  68. --------------------
  69. Interrupt coalescing can be configured by changing the rx-usecs value with
  70. the "ethtool -C" command. The rx-usecs range is 0-190. The tx-usecs value
  71. reflects the rx-usecs value as they are tied together on the same interrupt.
  72. SR-IOV
  73. ------
  74. Minimal SR-IOV support is currently offered and can be enabled by setting
  75. the sysfs 'sriov_numvfs' value, if supported by your particular firmware
  76. configuration.
  77. XDP
  78. ---
  79. Support for XDP includes the basics, plus Jumbo frames, Redirect and
  80. ndo_xmit. There is no current support for zero-copy sockets or HW offload.
  81. RDMA Support via Auxiliary Device
  82. =================================
  83. The ionic driver supports RDMA (Remote Direct Memory Access) functionality
  84. through the Linux auxiliary device framework when advertised by the firmware.
  85. RDMA capability is detected during device initialization, and if supported,
  86. the ethernet driver will create an auxiliary device that allows the RDMA
  87. driver to bind and provide InfiniBand/RoCE functionality.
  88. Statistics
  89. ==========
  90. Basic hardware stats
  91. --------------------
  92. The commands ``netstat -i``, ``ip -s link show``, and ``ifconfig`` show
  93. a limited set of statistics taken directly from firmware. For example::
  94. $ ip -s link show enp181s0
  95. 7: enp181s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
  96. link/ether 00:ae:cd:00:07:68 brd ff:ff:ff:ff:ff:ff
  97. RX: bytes packets errors dropped overrun mcast
  98. 414 5 0 0 0 0
  99. TX: bytes packets errors dropped carrier collsns
  100. 1384 18 0 0 0 0
  101. ethtool -S
  102. ----------
  103. The statistics shown from the ``ethtool -S`` command includes a combination of
  104. driver counters and firmware counters, including port and queue specific values.
  105. The driver values are counters computed by the driver, and the firmware values
  106. are gathered by the firmware from the port hardware and passed through the
  107. driver with no further interpretation.
  108. Driver port specific::
  109. tx_packets: 12
  110. tx_bytes: 964
  111. rx_packets: 5
  112. rx_bytes: 414
  113. tx_tso: 0
  114. tx_tso_bytes: 0
  115. tx_csum_none: 12
  116. tx_csum: 0
  117. rx_csum_none: 0
  118. rx_csum_complete: 3
  119. rx_csum_error: 0
  120. xdp_drop: 0
  121. xdp_aborted: 0
  122. xdp_pass: 0
  123. xdp_tx: 0
  124. xdp_redirect: 0
  125. xdp_frames: 0
  126. Driver queue specific::
  127. tx_0_pkts: 3
  128. tx_0_bytes: 294
  129. tx_0_clean: 3
  130. tx_0_dma_map_err: 0
  131. tx_0_linearize: 0
  132. tx_0_frags: 0
  133. tx_0_tso: 0
  134. tx_0_tso_bytes: 0
  135. tx_0_hwstamp_valid: 0
  136. tx_0_hwstamp_invalid: 0
  137. tx_0_csum_none: 3
  138. tx_0_csum: 0
  139. tx_0_vlan_inserted: 0
  140. tx_0_xdp_frames: 0
  141. rx_0_pkts: 2
  142. rx_0_bytes: 120
  143. rx_0_dma_map_err: 0
  144. rx_0_alloc_err: 0
  145. rx_0_csum_none: 0
  146. rx_0_csum_complete: 0
  147. rx_0_csum_error: 0
  148. rx_0_hwstamp_valid: 0
  149. rx_0_hwstamp_invalid: 0
  150. rx_0_dropped: 0
  151. rx_0_vlan_stripped: 0
  152. rx_0_xdp_drop: 0
  153. rx_0_xdp_aborted: 0
  154. rx_0_xdp_pass: 0
  155. rx_0_xdp_tx: 0
  156. rx_0_xdp_redirect: 0
  157. Firmware port specific::
  158. hw_tx_dropped: 0
  159. hw_rx_dropped: 0
  160. hw_rx_over_errors: 0
  161. hw_rx_missed_errors: 0
  162. hw_tx_aborted_errors: 0
  163. frames_rx_ok: 15
  164. frames_rx_all: 15
  165. frames_rx_bad_fcs: 0
  166. frames_rx_bad_all: 0
  167. octets_rx_ok: 1290
  168. octets_rx_all: 1290
  169. frames_rx_unicast: 10
  170. frames_rx_multicast: 5
  171. frames_rx_broadcast: 0
  172. frames_rx_pause: 0
  173. frames_rx_bad_length: 0
  174. frames_rx_undersized: 0
  175. frames_rx_oversized: 0
  176. frames_rx_fragments: 0
  177. frames_rx_jabber: 0
  178. frames_rx_pripause: 0
  179. frames_rx_stomped_crc: 0
  180. frames_rx_too_long: 0
  181. frames_rx_vlan_good: 3
  182. frames_rx_dropped: 0
  183. frames_rx_less_than_64b: 0
  184. frames_rx_64b: 4
  185. frames_rx_65b_127b: 11
  186. frames_rx_128b_255b: 0
  187. frames_rx_256b_511b: 0
  188. frames_rx_512b_1023b: 0
  189. frames_rx_1024b_1518b: 0
  190. frames_rx_1519b_2047b: 0
  191. frames_rx_2048b_4095b: 0
  192. frames_rx_4096b_8191b: 0
  193. frames_rx_8192b_9215b: 0
  194. frames_rx_other: 0
  195. frames_tx_ok: 31
  196. frames_tx_all: 31
  197. frames_tx_bad: 0
  198. octets_tx_ok: 2614
  199. octets_tx_total: 2614
  200. frames_tx_unicast: 8
  201. frames_tx_multicast: 21
  202. frames_tx_broadcast: 2
  203. frames_tx_pause: 0
  204. frames_tx_pripause: 0
  205. frames_tx_vlan: 0
  206. frames_tx_less_than_64b: 0
  207. frames_tx_64b: 4
  208. frames_tx_65b_127b: 27
  209. frames_tx_128b_255b: 0
  210. frames_tx_256b_511b: 0
  211. frames_tx_512b_1023b: 0
  212. frames_tx_1024b_1518b: 0
  213. frames_tx_1519b_2047b: 0
  214. frames_tx_2048b_4095b: 0
  215. frames_tx_4096b_8191b: 0
  216. frames_tx_8192b_9215b: 0
  217. frames_tx_other: 0
  218. frames_tx_pri_0: 0
  219. frames_tx_pri_1: 0
  220. frames_tx_pri_2: 0
  221. frames_tx_pri_3: 0
  222. frames_tx_pri_4: 0
  223. frames_tx_pri_5: 0
  224. frames_tx_pri_6: 0
  225. frames_tx_pri_7: 0
  226. frames_rx_pri_0: 0
  227. frames_rx_pri_1: 0
  228. frames_rx_pri_2: 0
  229. frames_rx_pri_3: 0
  230. frames_rx_pri_4: 0
  231. frames_rx_pri_5: 0
  232. frames_rx_pri_6: 0
  233. frames_rx_pri_7: 0
  234. tx_pripause_0_1us_count: 0
  235. tx_pripause_1_1us_count: 0
  236. tx_pripause_2_1us_count: 0
  237. tx_pripause_3_1us_count: 0
  238. tx_pripause_4_1us_count: 0
  239. tx_pripause_5_1us_count: 0
  240. tx_pripause_6_1us_count: 0
  241. tx_pripause_7_1us_count: 0
  242. rx_pripause_0_1us_count: 0
  243. rx_pripause_1_1us_count: 0
  244. rx_pripause_2_1us_count: 0
  245. rx_pripause_3_1us_count: 0
  246. rx_pripause_4_1us_count: 0
  247. rx_pripause_5_1us_count: 0
  248. rx_pripause_6_1us_count: 0
  249. rx_pripause_7_1us_count: 0
  250. rx_pause_1us_count: 0
  251. frames_tx_truncated: 0
  252. Support
  253. =======
  254. For general Linux networking support, please use the netdev mailing
  255. list, which is monitored by Pensando personnel::
  256. netdev@vger.kernel.org
  257. For more specific support needs, please use the Pensando driver support
  258. email::
  259. drivers@pensando.io