ice.rst 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219
  1. .. SPDX-License-Identifier: GPL-2.0+
  2. =================================================================
  3. Linux Base Driver for the Intel(R) Ethernet Controller 800 Series
  4. =================================================================
  5. Intel ice Linux driver.
  6. Copyright(c) 2018-2021 Intel Corporation.
  7. Contents
  8. ========
  9. - Overview
  10. - Identifying Your Adapter
  11. - Important Notes
  12. - Additional Features & Configurations
  13. - Performance Optimization
  14. The associated Virtual Function (VF) driver for this driver is iavf.
  15. Driver information can be obtained using ethtool and lspci.
  16. For questions related to hardware requirements, refer to the documentation
  17. supplied with your Intel adapter. All hardware requirements listed apply to use
  18. with Linux.
  19. This driver supports XDP (Express Data Path) and AF_XDP zero-copy. Note that
  20. XDP is blocked for frame sizes larger than 3KB.
  21. Identifying Your Adapter
  22. ========================
  23. For information on how to identify your adapter, and for the latest Intel
  24. network drivers, refer to the Intel Support website:
  25. https://www.intel.com/support
  26. Important Notes
  27. ===============
  28. Packet drops may occur under receive stress
  29. -------------------------------------------
  30. Devices based on the Intel(R) Ethernet Controller 800 Series are designed to
  31. tolerate a limited amount of system latency during PCIe and DMA transactions.
  32. If these transactions take longer than the tolerated latency, it can impact the
  33. length of time the packets are buffered in the device and associated memory,
  34. which may result in dropped packets. These packets drops typically do not have
  35. a noticeable impact on throughput and performance under standard workloads.
  36. If these packet drops appear to affect your workload, the following may improve
  37. the situation:
  38. 1) Make sure that your system's physical memory is in a high-performance
  39. configuration, as recommended by the platform vendor. A common
  40. recommendation is for all channels to be populated with a single DIMM
  41. module.
  42. 2) In your system's BIOS/UEFI settings, select the "Performance" profile.
  43. 3) Your distribution may provide tools like "tuned," which can help tweak
  44. kernel settings to achieve better standard settings for different workloads.
  45. Configuring SR-IOV for improved network security
  46. ------------------------------------------------
  47. In a virtualized environment, on Intel(R) Ethernet Network Adapters that
  48. support SR-IOV, the virtual function (VF) may be subject to malicious behavior.
  49. Software-generated layer two frames, like IEEE 802.3x (link flow control), IEEE
  50. 802.1Qbb (priority based flow-control), and others of this type, are not
  51. expected and can throttle traffic between the host and the virtual switch,
  52. reducing performance. To resolve this issue, and to ensure isolation from
  53. unintended traffic streams, configure all SR-IOV enabled ports for VLAN tagging
  54. from the administrative interface on the PF. This configuration allows
  55. unexpected, and potentially malicious, frames to be dropped.
  56. See "Configuring VLAN Tagging on SR-IOV Enabled Adapter Ports" later in this
  57. README for configuration instructions.
  58. Do not unload port driver if VF with active VM is bound to it
  59. -------------------------------------------------------------
  60. Do not unload a port's driver if a Virtual Function (VF) with an active Virtual
  61. Machine (VM) is bound to it. Doing so will cause the port to appear to hang.
  62. Once the VM shuts down, or otherwise releases the VF, the command will
  63. complete.
  64. Additional Features and Configurations
  65. ======================================
  66. ethtool
  67. -------
  68. The driver utilizes the ethtool interface for driver configuration and
  69. diagnostics, as well as displaying statistical information. The latest ethtool
  70. version is required for this functionality. Download it at:
  71. https://kernel.org/pub/software/network/ethtool/
  72. NOTE: The rx_bytes value of ethtool does not match the rx_bytes value of
  73. Netdev, due to the 4-byte CRC being stripped by the device. The difference
  74. between the two rx_bytes values will be 4 x the number of Rx packets. For
  75. example, if Rx packets are 10 and Netdev (software statistics) displays
  76. rx_bytes as "X", then ethtool (hardware statistics) will display rx_bytes as
  77. "X+40" (4 bytes CRC x 10 packets).
  78. ethtool reset
  79. -------------
  80. The driver supports 3 types of resets:
  81. - PF reset - resets only components associated with the given PF, does not
  82. impact other PFs
  83. - CORE reset - whole adapter is affected, reset all PFs
  84. - GLOBAL reset - same as CORE but mac and phy components are also reinitialized
  85. These are mapped to ethtool reset flags as follow:
  86. - PF reset:
  87. # ethtool --reset <ethX> irq dma filter offload
  88. - CORE reset:
  89. # ethtool --reset <ethX> irq-shared dma-shared filter-shared offload-shared \
  90. ram-shared
  91. - GLOBAL reset:
  92. # ethtool --reset <ethX> irq-shared dma-shared filter-shared offload-shared \
  93. mac-shared phy-shared ram-shared
  94. In switchdev mode you can reset a VF using port representor:
  95. # ethtool --reset <repr> irq dma filter offload
  96. Viewing Link Messages
  97. ---------------------
  98. Link messages will not be displayed to the console if the distribution is
  99. restricting system messages. In order to see network driver link messages on
  100. your console, set dmesg to eight by entering the following::
  101. # dmesg -n 8
  102. NOTE: This setting is not saved across reboots.
  103. Dynamic Device Personalization
  104. ------------------------------
  105. Dynamic Device Personalization (DDP) allows you to change the packet processing
  106. pipeline of a device by applying a profile package to the device at runtime.
  107. Profiles can be used to, for example, add support for new protocols, change
  108. existing protocols, or change default settings. DDP profiles can also be rolled
  109. back without rebooting the system.
  110. The DDP package loads during device initialization. The driver looks for
  111. ``intel/ice/ddp/ice.pkg`` in your firmware root (typically ``/lib/firmware/``
  112. or ``/lib/firmware/updates/``) and checks that it contains a valid DDP package
  113. file.
  114. NOTE: Your distribution should likely have provided the latest DDP file, but if
  115. ice.pkg is missing, you can find it in the linux-firmware repository or from
  116. intel.com.
  117. If the driver is unable to load the DDP package, the device will enter Safe
  118. Mode. Safe Mode disables advanced and performance features and supports only
  119. basic traffic and minimal functionality, such as updating the NVM or
  120. downloading a new driver or DDP package. Safe Mode only applies to the affected
  121. physical function and does not impact any other PFs. See the "Intel(R) Ethernet
  122. Adapters and Devices User Guide" for more details on DDP and Safe Mode.
  123. NOTES:
  124. - If you encounter issues with the DDP package file, you may need to download
  125. an updated driver or DDP package file. See the log messages for more
  126. information.
  127. - The ice.pkg file is a symbolic link to the default DDP package file.
  128. - You cannot update the DDP package if any PF drivers are already loaded. To
  129. overwrite a package, unload all PFs and then reload the driver with the new
  130. package.
  131. - Only the first loaded PF per device can download a package for that device.
  132. You can install specific DDP package files for different physical devices in
  133. the same system. To install a specific DDP package file:
  134. 1. Download the DDP package file you want for your device.
  135. 2. Rename the file ice-xxxxxxxxxxxxxxxx.pkg, where 'xxxxxxxxxxxxxxxx' is the
  136. unique 64-bit PCI Express device serial number (in hex) of the device you
  137. want the package downloaded on. The filename must include the complete
  138. serial number (including leading zeros) and be all lowercase. For example,
  139. if the 64-bit serial number is b887a3ffffca0568, then the file name would be
  140. ice-b887a3ffffca0568.pkg.
  141. To find the serial number from the PCI bus address, you can use the
  142. following command::
  143. # lspci -vv -s af:00.0 | grep -i Serial
  144. Capabilities: [150 v1] Device Serial Number b8-87-a3-ff-ff-ca-05-68
  145. You can use the following command to format the serial number without the
  146. dashes::
  147. # lspci -vv -s af:00.0 | grep -i Serial | awk '{print $7}' | sed s/-//g
  148. b887a3ffffca0568
  149. 3. Copy the renamed DDP package file to
  150. ``/lib/firmware/updates/intel/ice/ddp/``. If the directory does not yet
  151. exist, create it before copying the file.
  152. 4. Unload all of the PFs on the device.
  153. 5. Reload the driver with the new package.
  154. NOTE: The presence of a device-specific DDP package file overrides the loading
  155. of the default DDP package file (ice.pkg).
  156. Intel(R) Ethernet Flow Director
  157. -------------------------------
  158. The Intel Ethernet Flow Director performs the following tasks:
  159. - Directs receive packets according to their flows to different queues
  160. - Enables tight control on routing a flow in the platform
  161. - Matches flows and CPU cores for flow affinity
  162. NOTE: This driver supports the following flow types:
  163. - IPv4
  164. - TCPv4
  165. - UDPv4
  166. - SCTPv4
  167. - IPv6
  168. - TCPv6
  169. - UDPv6
  170. - SCTPv6
  171. Each flow type supports valid combinations of IP addresses (source or
  172. destination) and UDP/TCP/SCTP ports (source and destination). You can supply
  173. only a source IP address, a source IP address and a destination port, or any
  174. combination of one or more of these four parameters.
  175. NOTE: This driver allows you to filter traffic based on a user-defined flexible
  176. two-byte pattern and offset by using the ethtool user-def and mask fields. Only
  177. L3 and L4 flow types are supported for user-defined flexible filters. For a
  178. given flow type, you must clear all Intel Ethernet Flow Director filters before
  179. changing the input set (for that flow type).
  180. Flow Director Filters
  181. ---------------------
  182. Flow Director filters are used to direct traffic that matches specified
  183. characteristics. They are enabled through ethtool's ntuple interface. To enable
  184. or disable the Intel Ethernet Flow Director and these filters::
  185. # ethtool -K <ethX> ntuple <off|on>
  186. NOTE: When you disable ntuple filters, all the user programmed filters are
  187. flushed from the driver cache and hardware. All needed filters must be re-added
  188. when ntuple is re-enabled.
  189. To display all of the active filters::
  190. # ethtool -u <ethX>
  191. To add a new filter::
  192. # ethtool -U <ethX> flow-type <type> src-ip <ip> [m <ip_mask>] dst-ip <ip>
  193. [m <ip_mask>] src-port <port> [m <port_mask>] dst-port <port> [m <port_mask>]
  194. action <queue>
  195. Where:
  196. <ethX> - the Ethernet device to program
  197. <type> - can be ip4, tcp4, udp4, sctp4, ip6, tcp6, udp6, sctp6
  198. <ip> - the IP address to match on
  199. <ip_mask> - the IPv4 address to mask on
  200. NOTE: These filters use inverted masks.
  201. <port> - the port number to match on
  202. <port_mask> - the 16-bit integer for masking
  203. NOTE: These filters use inverted masks.
  204. <queue> - the queue to direct traffic toward (-1 discards the
  205. matched traffic)
  206. To delete a filter::
  207. # ethtool -U <ethX> delete <N>
  208. Where <N> is the filter ID displayed when printing all the active filters,
  209. and may also have been specified using "loc <N>" when adding the filter.
  210. EXAMPLES:
  211. To add a filter that directs packet to queue 2::
  212. # ethtool -U <ethX> flow-type tcp4 src-ip 192.168.10.1 dst-ip \
  213. 192.168.10.2 src-port 2000 dst-port 2001 action 2 [loc 1]
  214. To set a filter using only the source and destination IP address::
  215. # ethtool -U <ethX> flow-type tcp4 src-ip 192.168.10.1 dst-ip \
  216. 192.168.10.2 action 2 [loc 1]
  217. To set a filter based on a user-defined pattern and offset::
  218. # ethtool -U <ethX> flow-type tcp4 src-ip 192.168.10.1 dst-ip \
  219. 192.168.10.2 user-def 0x4FFFF action 2 [loc 1]
  220. where the value of the user-def field contains the offset (4 bytes) and
  221. the pattern (0xffff).
  222. To match TCP traffic sent from 192.168.0.1, port 5300, directed to 192.168.0.5,
  223. port 80, and then send it to queue 7::
  224. # ethtool -U enp130s0 flow-type tcp4 src-ip 192.168.0.1 dst-ip 192.168.0.5
  225. src-port 5300 dst-port 80 action 7
  226. To add a TCPv4 filter with a partial mask for a source IP subnet::
  227. # ethtool -U <ethX> flow-type tcp4 src-ip 192.168.0.0 m 0.255.255.255 dst-ip
  228. 192.168.5.12 src-port 12600 dst-port 31 action 12
  229. NOTES:
  230. For each flow-type, the programmed filters must all have the same matching
  231. input set. For example, issuing the following two commands is acceptable::
  232. # ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
  233. # ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.5 src-port 55 action 10
  234. Issuing the next two commands, however, is not acceptable, since the first
  235. specifies src-ip and the second specifies dst-ip::
  236. # ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
  237. # ethtool -U enp130s0 flow-type ip4 dst-ip 192.168.0.5 src-port 55 action 10
  238. The second command will fail with an error. You may program multiple filters
  239. with the same fields, using different values, but, on one device, you may not
  240. program two tcp4 filters with different matching fields.
  241. The ice driver does not support matching on a subportion of a field, thus
  242. partial mask fields are not supported.
  243. Flex Byte Flow Director Filters
  244. -------------------------------
  245. The driver also supports matching user-defined data within the packet payload.
  246. This flexible data is specified using the "user-def" field of the ethtool
  247. command in the following way:
  248. .. table::
  249. ============================== ============================
  250. ``31 28 24 20 16`` ``15 12 8 4 0``
  251. ``offset into packet payload`` ``2 bytes of flexible data``
  252. ============================== ============================
  253. For example,
  254. ::
  255. ... user-def 0x4FFFF ...
  256. tells the filter to look 4 bytes into the payload and match that value against
  257. 0xFFFF. The offset is based on the beginning of the payload, and not the
  258. beginning of the packet. Thus
  259. ::
  260. flow-type tcp4 ... user-def 0x8BEAF ...
  261. would match TCP/IPv4 packets which have the value 0xBEAF 8 bytes into the
  262. TCP/IPv4 payload.
  263. Note that ICMP headers are parsed as 4 bytes of header and 4 bytes of payload.
  264. Thus to match the first byte of the payload, you must actually add 4 bytes to
  265. the offset. Also note that ip4 filters match both ICMP frames as well as raw
  266. (unknown) ip4 frames, where the payload will be the L3 payload of the IP4
  267. frame.
  268. The maximum offset is 64. The hardware will only read up to 64 bytes of data
  269. from the payload. The offset must be even because the flexible data is 2 bytes
  270. long and must be aligned to byte 0 of the packet payload.
  271. The user-defined flexible offset is also considered part of the input set and
  272. cannot be programmed separately for multiple filters of the same type. However,
  273. the flexible data is not part of the input set and multiple filters may use the
  274. same offset but match against different data.
  275. RSS Hash Flow
  276. -------------
  277. Allows you to set the hash bytes per flow type and any combination of one or
  278. more options for Receive Side Scaling (RSS) hash byte configuration.
  279. ::
  280. # ethtool -N <ethX> rx-flow-hash <type> <option>
  281. Where <type> is:
  282. tcp4 signifying TCP over IPv4
  283. udp4 signifying UDP over IPv4
  284. gtpc4 signifying GTP-C over IPv4
  285. gtpc4t signifying GTP-C (include TEID) over IPv4
  286. gtpu4 signifying GTP-U over IPV4
  287. gtpu4e signifying GTP-U and Extension Header over IPV4
  288. gtpu4u signifying GTP-U PSC Uplink over IPV4
  289. gtpu4d signifying GTP-U PSC Downlink over IPV4
  290. tcp6 signifying TCP over IPv6
  291. udp6 signifying UDP over IPv6
  292. gtpc6 signifying GTP-C over IPv6
  293. gtpc6t signifying GTP-C (include TEID) over IPv6
  294. gtpu6 signifying GTP-U over IPV6
  295. gtpu6e signifying GTP-U and Extension Header over IPV6
  296. gtpu6u signifying GTP-U PSC Uplink over IPV6
  297. gtpu6d signifying GTP-U PSC Downlink over IPV6
  298. And <option> is one or more of:
  299. s Hash on the IP source address of the Rx packet.
  300. d Hash on the IP destination address of the Rx packet.
  301. f Hash on bytes 0 and 1 of the Layer 4 header of the Rx packet.
  302. n Hash on bytes 2 and 3 of the Layer 4 header of the Rx packet.
  303. e Hash on GTP Packet on TEID (4bytes) of the Rx packet.
  304. Accelerated Receive Flow Steering (aRFS)
  305. ----------------------------------------
  306. Devices based on the Intel(R) Ethernet Controller 800 Series support
  307. Accelerated Receive Flow Steering (aRFS) on the PF. aRFS is a load-balancing
  308. mechanism that allows you to direct packets to the same CPU where an
  309. application is running or consuming the packets in that flow.
  310. NOTES:
  311. - aRFS requires that ntuple filtering is enabled via ethtool.
  312. - aRFS support is limited to the following packet types:
  313. - TCP over IPv4 and IPv6
  314. - UDP over IPv4 and IPv6
  315. - Nonfragmented packets
  316. - aRFS only supports Flow Director filters, which consist of the
  317. source/destination IP addresses and source/destination ports.
  318. - aRFS and ethtool's ntuple interface both use the device's Flow Director. aRFS
  319. and ntuple features can coexist, but you may encounter unexpected results if
  320. there's a conflict between aRFS and ntuple requests. See "Intel(R) Ethernet
  321. Flow Director" for additional information.
  322. To set up aRFS:
  323. 1. Enable the Intel Ethernet Flow Director and ntuple filters using ethtool.
  324. ::
  325. # ethtool -K <ethX> ntuple on
  326. 2. Set up the number of entries in the global flow table. For example:
  327. ::
  328. # NUM_RPS_ENTRIES=16384
  329. # echo $NUM_RPS_ENTRIES > /proc/sys/net/core/rps_sock_flow_entries
  330. 3. Set up the number of entries in the per-queue flow table. For example:
  331. ::
  332. # NUM_RX_QUEUES=64
  333. # for file in /sys/class/net/$IFACE/queues/rx-*/rps_flow_cnt; do
  334. # echo $(($NUM_RPS_ENTRIES/$NUM_RX_QUEUES)) > $file;
  335. # done
  336. 4. Disable the IRQ balance daemon (this is only a temporary stop of the service
  337. until the next reboot).
  338. ::
  339. # systemctl stop irqbalance
  340. 5. Configure the interrupt affinity.
  341. See ``/Documentation/core-api/irq/irq-affinity.rst``
  342. To disable aRFS using ethtool::
  343. # ethtool -K <ethX> ntuple off
  344. NOTE: This command will disable ntuple filters and clear any aRFS filters in
  345. software and hardware.
  346. Example Use Case:
  347. 1. Set the server application on the desired CPU (e.g., CPU 4).
  348. ::
  349. # taskset -c 4 netserver
  350. 2. Use netperf to route traffic from the client to CPU 4 on the server with
  351. aRFS configured. This example uses TCP over IPv4.
  352. ::
  353. # netperf -H <Host IPv4 Address> -t TCP_STREAM
  354. Enabling Virtual Functions (VFs)
  355. --------------------------------
  356. Use sysfs to enable virtual functions (VF).
  357. For example, you can create 4 VFs as follows::
  358. # echo 4 > /sys/class/net/<ethX>/device/sriov_numvfs
  359. To disable VFs, write 0 to the same file::
  360. # echo 0 > /sys/class/net/<ethX>/device/sriov_numvfs
  361. The maximum number of VFs for the ice driver is 256 total (all ports). To check
  362. how many VFs each PF supports, use the following command::
  363. # cat /sys/class/net/<ethX>/device/sriov_totalvfs
  364. Note: You cannot use SR-IOV when link aggregation (LAG)/bonding is active, and
  365. vice versa. To enforce this, the driver checks for this mutual exclusion.
  366. Displaying VF Statistics on the PF
  367. ----------------------------------
  368. Use the following command to display the statistics for the PF and its VFs::
  369. # ip -s link show dev <ethX>
  370. NOTE: The output of this command can be very large due to the maximum number of
  371. possible VFs.
  372. The PF driver will display a subset of the statistics for the PF and for all
  373. VFs that are configured. The PF will always print a statistics block for each
  374. of the possible VFs, and it will show zero for all unconfigured VFs.
  375. Configuring VLAN Tagging on SR-IOV Enabled Adapter Ports
  376. --------------------------------------------------------
  377. To configure VLAN tagging for the ports on an SR-IOV enabled adapter, use the
  378. following command. The VLAN configuration should be done before the VF driver
  379. is loaded or the VM is booted. The VF is not aware of the VLAN tag being
  380. inserted on transmit and removed on received frames (sometimes called "port
  381. VLAN" mode).
  382. ::
  383. # ip link set dev <ethX> vf <id> vlan <vlan id>
  384. For example, the following will configure PF eth0 and the first VF on VLAN 10::
  385. # ip link set dev eth0 vf 0 vlan 10
  386. Enabling a VF link if the port is disconnected
  387. ----------------------------------------------
  388. If the physical function (PF) link is down, you can force link up (from the
  389. host PF) on any virtual functions (VF) bound to the PF.
  390. For example, to force link up on VF 0 bound to PF eth0::
  391. # ip link set eth0 vf 0 state enable
  392. Note: If the command does not work, it may not be supported by your system.
  393. Setting the MAC Address for a VF
  394. --------------------------------
  395. To change the MAC address for the specified VF::
  396. # ip link set <ethX> vf 0 mac <address>
  397. For example::
  398. # ip link set <ethX> vf 0 mac 00:01:02:03:04:05
  399. This setting lasts until the PF is reloaded.
  400. NOTE: Assigning a MAC address for a VF from the host will disable any
  401. subsequent requests to change the MAC address from within the VM. This is a
  402. security feature. The VM is not aware of this restriction, so if this is
  403. attempted in the VM, it will trigger MDD events.
  404. Trusted VFs and VF Promiscuous Mode
  405. -----------------------------------
  406. This feature allows you to designate a particular VF as trusted and allows that
  407. trusted VF to request selective promiscuous mode on the Physical Function (PF).
  408. To set a VF as trusted or untrusted, enter the following command in the
  409. Hypervisor::
  410. # ip link set dev <ethX> vf 1 trust [on|off]
  411. NOTE: It's important to set the VF to trusted before setting promiscuous mode.
  412. If the VM is not trusted, the PF will ignore promiscuous mode requests from the
  413. VF. If the VM becomes trusted after the VF driver is loaded, you must make a
  414. new request to set the VF to promiscuous.
  415. Once the VF is designated as trusted, use the following commands in the VM to
  416. set the VF to promiscuous mode.
  417. For promiscuous all::
  418. # ip link set <ethX> promisc on
  419. Where <ethX> is a VF interface in the VM
  420. For promiscuous Multicast::
  421. # ip link set <ethX> allmulticast on
  422. Where <ethX> is a VF interface in the VM
  423. NOTE: By default, the ethtool private flag vf-true-promisc-support is set to
  424. "off," meaning that promiscuous mode for the VF will be limited. To set the
  425. promiscuous mode for the VF to true promiscuous and allow the VF to see all
  426. ingress traffic, use the following command::
  427. # ethtool --set-priv-flags <ethX> vf-true-promisc-support on
  428. The vf-true-promisc-support private flag does not enable promiscuous mode;
  429. rather, it designates which type of promiscuous mode (limited or true) you will
  430. get when you enable promiscuous mode using the ip link commands above. Note
  431. that this is a global setting that affects the entire device. However, the
  432. vf-true-promisc-support private flag is only exposed to the first PF of the
  433. device. The PF remains in limited promiscuous mode regardless of the
  434. vf-true-promisc-support setting.
  435. Next, add a VLAN interface on the VF interface. For example::
  436. # ip link add link eth2 name eth2.100 type vlan id 100
  437. Note that the order in which you set the VF to promiscuous mode and add the
  438. VLAN interface does not matter (you can do either first). The result in this
  439. example is that the VF will get all traffic that is tagged with VLAN 100.
  440. Malicious Driver Detection (MDD) for VFs
  441. ----------------------------------------
  442. Some Intel Ethernet devices use Malicious Driver Detection (MDD) to detect
  443. malicious traffic from the VF and disable Tx/Rx queues or drop the offending
  444. packet until a VF driver reset occurs. You can view MDD messages in the PF's
  445. system log using the dmesg command.
  446. - If the PF driver logs MDD events from the VF, confirm that the correct VF
  447. driver is installed.
  448. - To restore functionality, you can manually reload the VF or VM or enable
  449. automatic VF resets.
  450. - When automatic VF resets are enabled, the PF driver will immediately reset
  451. the VF and reenable queues when it detects MDD events on the receive path.
  452. - If automatic VF resets are disabled, the PF will not automatically reset the
  453. VF when it detects MDD events.
  454. To enable or disable automatic VF resets, use the following command::
  455. # ethtool --set-priv-flags <ethX> mdd-auto-reset-vf on|off
  456. MAC and VLAN Anti-Spoofing Feature for VFs
  457. ------------------------------------------
  458. When a malicious driver on a Virtual Function (VF) interface attempts to send a
  459. spoofed packet, it is dropped by the hardware and not transmitted.
  460. NOTE: This feature can be disabled for a specific VF::
  461. # ip link set <ethX> vf <vf id> spoofchk {off|on}
  462. Jumbo Frames
  463. ------------
  464. Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
  465. to a value larger than the default value of 1500.
  466. Use the ifconfig command to increase the MTU size. For example, enter the
  467. following where <ethX> is the interface number::
  468. # ifconfig <ethX> mtu 9000 up
  469. Alternatively, you can use the ip command as follows::
  470. # ip link set mtu 9000 dev <ethX>
  471. # ip link set up dev <ethX>
  472. This setting is not saved across reboots.
  473. NOTE: The maximum MTU setting for jumbo frames is 9702. This corresponds to the
  474. maximum jumbo frame size of 9728 bytes.
  475. NOTE: This driver will attempt to use multiple page sized buffers to receive
  476. each jumbo packet. This should help to avoid buffer starvation issues when
  477. allocating receive packets.
  478. NOTE: Packet loss may have a greater impact on throughput when you use jumbo
  479. frames. If you observe a drop in performance after enabling jumbo frames,
  480. enabling flow control may mitigate the issue.
  481. Speed and Duplex Configuration
  482. ------------------------------
  483. In addressing speed and duplex configuration issues, you need to distinguish
  484. between copper-based adapters and fiber-based adapters.
  485. In the default mode, an Intel(R) Ethernet Network Adapter using copper
  486. connections will attempt to auto-negotiate with its link partner to determine
  487. the best setting. If the adapter cannot establish link with the link partner
  488. using auto-negotiation, you may need to manually configure the adapter and link
  489. partner to identical settings to establish link and pass packets. This should
  490. only be needed when attempting to link with an older switch that does not
  491. support auto-negotiation or one that has been forced to a specific speed or
  492. duplex mode. Your link partner must match the setting you choose. 1 Gbps speeds
  493. and higher cannot be forced. Use the autonegotiation advertising setting to
  494. manually set devices for 1 Gbps and higher.
  495. Speed, duplex, and autonegotiation advertising are configured through the
  496. ethtool utility. For the latest version, download and install ethtool from the
  497. following website:
  498. https://kernel.org/pub/software/network/ethtool/
  499. To see the speed configurations your device supports, run the following::
  500. # ethtool <ethX>
  501. Caution: Only experienced network administrators should force speed and duplex
  502. or change autonegotiation advertising manually. The settings at the switch must
  503. always match the adapter settings. Adapter performance may suffer or your
  504. adapter may not operate if you configure the adapter differently from your
  505. switch.
  506. Data Center Bridging (DCB)
  507. --------------------------
  508. NOTE: The kernel assumes that TC0 is available, and will disable Priority Flow
  509. Control (PFC) on the device if TC0 is not available. To fix this, ensure TC0 is
  510. enabled when setting up DCB on your switch.
  511. DCB is a configuration Quality of Service implementation in hardware. It uses
  512. the VLAN priority tag (802.1p) to filter traffic. That means that there are 8
  513. different priorities that traffic can be filtered into. It also enables
  514. priority flow control (802.1Qbb) which can limit or eliminate the number of
  515. dropped packets during network stress. Bandwidth can be allocated to each of
  516. these priorities, which is enforced at the hardware level (802.1Qaz).
  517. DCB is normally configured on the network using the DCBX protocol (802.1Qaz), a
  518. specialization of LLDP (802.1AB). The ice driver supports the following
  519. mutually exclusive variants of DCBX support:
  520. 1) Firmware-based LLDP Agent
  521. 2) Software-based LLDP Agent
  522. In firmware-based mode, firmware intercepts all LLDP traffic and handles DCBX
  523. negotiation transparently for the user. In this mode, the adapter operates in
  524. "willing" DCBX mode, receiving DCB settings from the link partner (typically a
  525. switch). The local user can only query the negotiated DCB configuration. For
  526. information on configuring DCBX parameters on a switch, please consult the
  527. switch manufacturer's documentation.
  528. In software-based mode, LLDP traffic is forwarded to the network stack and user
  529. space, where a software agent can handle it. In this mode, the adapter can
  530. operate in either "willing" or "nonwilling" DCBX mode and DCB configuration can
  531. be both queried and set locally. This mode requires the FW-based LLDP Agent to
  532. be disabled.
  533. NOTE:
  534. - You can enable and disable the firmware-based LLDP Agent using an ethtool
  535. private flag. Refer to the "FW-LLDP (Firmware Link Layer Discovery Protocol)"
  536. section in this README for more information.
  537. - In software-based DCBX mode, you can configure DCB parameters using software
  538. LLDP/DCBX agents that interface with the Linux kernel's DCB Netlink API. We
  539. recommend using OpenLLDP as the DCBX agent when running in software mode. For
  540. more information, see the OpenLLDP man pages and
  541. https://github.com/intel/openlldp.
  542. - The driver implements the DCB netlink interface layer to allow the user space
  543. to communicate with the driver and query DCB configuration for the port.
  544. - iSCSI with DCB is not supported.
  545. FW-LLDP (Firmware Link Layer Discovery Protocol)
  546. ------------------------------------------------
  547. Use ethtool to change FW-LLDP settings. The FW-LLDP setting is per port and
  548. persists across boots.
  549. To enable LLDP::
  550. # ethtool --set-priv-flags <ethX> fw-lldp-agent on
  551. To disable LLDP::
  552. # ethtool --set-priv-flags <ethX> fw-lldp-agent off
  553. To check the current LLDP setting::
  554. # ethtool --show-priv-flags <ethX>
  555. NOTE: You must enable the UEFI HII "LLDP Agent" attribute for this setting to
  556. take effect. If "LLDP AGENT" is set to disabled, you cannot enable it from the
  557. OS.
  558. Flow Control
  559. ------------
  560. Ethernet Flow Control (IEEE 802.3x) can be configured with ethtool to enable
  561. receiving and transmitting pause frames for ice. When transmit is enabled,
  562. pause frames are generated when the receive packet buffer crosses a predefined
  563. threshold. When receive is enabled, the transmit unit will halt for the time
  564. delay specified when a pause frame is received.
  565. NOTE: You must have a flow control capable link partner.
  566. Flow Control is disabled by default.
  567. Use ethtool to change the flow control settings.
  568. To enable or disable Rx or Tx Flow Control::
  569. # ethtool -A <ethX> rx <on|off> tx <on|off>
  570. Note: This command only enables or disables Flow Control if auto-negotiation is
  571. disabled. If auto-negotiation is enabled, this command changes the parameters
  572. used for auto-negotiation with the link partner.
  573. Note: Flow Control auto-negotiation is part of link auto-negotiation. Depending
  574. on your device, you may not be able to change the auto-negotiation setting.
  575. NOTE:
  576. - The ice driver requires flow control on both the port and link partner. If
  577. flow control is disabled on one of the sides, the port may appear to hang on
  578. heavy traffic.
  579. - You may encounter issues with link-level flow control (LFC) after disabling
  580. DCB. The LFC status may show as enabled but traffic is not paused. To resolve
  581. this issue, disable and reenable LFC using ethtool::
  582. # ethtool -A <ethX> rx off tx off
  583. # ethtool -A <ethX> rx on tx on
  584. NAPI
  585. ----
  586. This driver supports NAPI (Rx polling mode).
  587. See :ref:`Documentation/networking/napi.rst <napi>` for more information.
  588. MACVLAN
  589. -------
  590. This driver supports MACVLAN. Kernel support for MACVLAN can be tested by
  591. checking if the MACVLAN driver is loaded. You can run 'lsmod | grep macvlan' to
  592. see if the MACVLAN driver is loaded or run 'modprobe macvlan' to try to load
  593. the MACVLAN driver.
  594. NOTE:
  595. - In passthru mode, you can only set up one MACVLAN device. It will inherit the
  596. MAC address of the underlying PF (Physical Function) device.
  597. IEEE 802.1ad (QinQ) Support
  598. ---------------------------
  599. The IEEE 802.1ad standard, informally known as QinQ, allows for multiple VLAN
  600. IDs within a single Ethernet frame. VLAN IDs are sometimes referred to as
  601. "tags," and multiple VLAN IDs are thus referred to as a "tag stack." Tag stacks
  602. allow L2 tunneling and the ability to segregate traffic within a particular
  603. VLAN ID, among other uses.
  604. NOTES:
  605. - Receive checksum offloads and VLAN acceleration are not supported for 802.1ad
  606. (QinQ) packets.
  607. - 0x88A8 traffic will not be received unless VLAN stripping is disabled with
  608. the following command::
  609. # ethtool -K <ethX> rxvlan off
  610. - 0x88A8/0x8100 double VLANs cannot be used with 0x8100 or 0x8100/0x8100 VLANS
  611. configured on the same port. 0x88a8/0x8100 traffic will not be received if
  612. 0x8100 VLANs are configured.
  613. - The VF can only transmit 0x88A8/0x8100 (i.e., 802.1ad/802.1Q) traffic if:
  614. 1) The VF is not assigned a port VLAN.
  615. 2) spoofchk is disabled from the PF. If you enable spoofchk, the VF will
  616. not transmit 0x88A8/0x8100 traffic.
  617. - The VF may not receive all network traffic based on the Inner VLAN header
  618. when VF true promiscuous mode (vf-true-promisc-support) and double VLANs are
  619. enabled in SR-IOV mode.
  620. The following are examples of how to configure 802.1ad (QinQ)::
  621. # ip link add link eth0 eth0.24 type vlan proto 802.1ad id 24
  622. # ip link add link eth0.24 eth0.24.371 type vlan proto 802.1Q id 371
  623. Where "24" and "371" are example VLAN IDs.
  624. Tunnel/Overlay Stateless Offloads
  625. ---------------------------------
  626. Supported tunnels and overlays include VXLAN, GENEVE, and others depending on
  627. hardware and software configuration. Stateless offloads are enabled by default.
  628. To view the current state of all offloads::
  629. # ethtool -k <ethX>
  630. UDP Segmentation Offload
  631. ------------------------
  632. Allows the adapter to offload transmit segmentation of UDP packets with
  633. payloads up to 64K into valid Ethernet frames. Because the adapter hardware is
  634. able to complete data segmentation much faster than operating system software,
  635. this feature may improve transmission performance.
  636. In addition, the adapter may use fewer CPU resources.
  637. NOTE:
  638. - The application sending UDP packets must support UDP segmentation offload.
  639. To enable/disable UDP Segmentation Offload, issue the following command::
  640. # ethtool -K <ethX> tx-udp-segmentation [off|on]
  641. PTP pin interface
  642. -----------------
  643. All adapters support standard PTP pin interface. SDPs (Software Definable Pin)
  644. are single ended pins with both periodic output and external timestamp
  645. supported. There are also specific differential input/output pins (TIME_SYNC,
  646. 1PPS) with only one of the functions supported.
  647. There are adapters with DPLL, where pins are connected to the DPLL instead of
  648. being exposed on the board. You have to be aware that in those configurations,
  649. only SDP pins are exposed and each pin has its own fixed direction.
  650. To see input signal on those PTP pins, you need to configure DPLL properly.
  651. Output signal is only visible on DPLL and to send it to the board SMA/U.FL pins,
  652. DPLL output pins have to be manually configured.
  653. GNSS module
  654. -----------
  655. Requires kernel compiled with CONFIG_GNSS=y or CONFIG_GNSS=m.
  656. Allows user to read messages from the GNSS hardware module and write supported
  657. commands. If the module is physically present, a GNSS device is spawned:
  658. ``/dev/gnss<id>``.
  659. The protocol of write command is dependent on the GNSS hardware module as the
  660. driver writes raw bytes by the GNSS object to the receiver through i2c. Please
  661. refer to the hardware GNSS module documentation for configuration details.
  662. Firmware (FW) logging
  663. ---------------------
  664. The driver supports FW logging via the debugfs interface on PF 0 only. The FW
  665. running on the NIC must support FW logging; if the FW doesn't support FW logging
  666. the 'fwlog' file will not get created in the ice debugfs directory.
  667. Module configuration
  668. ~~~~~~~~~~~~~~~~~~~~
  669. Firmware logging is configured on a per module basis. Each module can be set to
  670. a value independent of the other modules (unless the module 'all' is specified).
  671. The modules will be instantiated under the 'fwlog/modules' directory.
  672. The user can set the log level for a module by writing to the module file like
  673. this::
  674. # echo <log_level> > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/<module>
  675. where
  676. * log_level is a name as described below. Each level includes the
  677. messages from the previous/lower level
  678. * none
  679. * error
  680. * warning
  681. * normal
  682. * verbose
  683. * module is a name that represents the module to receive events for. The
  684. module names are
  685. * general
  686. * ctrl
  687. * link
  688. * link_topo
  689. * dnl
  690. * i2c
  691. * sdp
  692. * mdio
  693. * adminq
  694. * hdma
  695. * lldp
  696. * dcbx
  697. * dcb
  698. * xlr
  699. * nvm
  700. * auth
  701. * vpd
  702. * iosf
  703. * parser
  704. * sw
  705. * scheduler
  706. * txq
  707. * rsvd
  708. * post
  709. * watchdog
  710. * task_dispatch
  711. * mng
  712. * synce
  713. * health
  714. * tsdrv
  715. * pfreg
  716. * mdlver
  717. * all
  718. The name 'all' is special and allows the user to set all of the modules to the
  719. specified log_level or to read the log_level of all of the modules.
  720. Example usage to configure the modules
  721. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  722. To set a single module to 'verbose'::
  723. # echo verbose > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/link
  724. To set multiple modules then issue the command multiple times::
  725. # echo verbose > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/link
  726. # echo warning > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/ctrl
  727. # echo none > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/dcb
  728. To set all the modules to the same value::
  729. # echo normal > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/all
  730. To read the log_level of a specific module (e.g. module 'general')::
  731. # cat /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/general
  732. To read the log_level of all the modules::
  733. # cat /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules/all
  734. Enabling FW log
  735. ~~~~~~~~~~~~~~~
  736. Configuring the modules indicates to the FW that the configured modules should
  737. generate events that the driver is interested in, but it **does not** send the
  738. events to the driver until the enable message is sent to the FW. To do this
  739. the user can write a 1 (enable) or 0 (disable) to 'fwlog/enable'. An example
  740. is::
  741. # echo 1 > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/enable
  742. Retrieving FW log data
  743. ~~~~~~~~~~~~~~~~~~~~~~
  744. The FW log data can be retrieved by reading from 'fwlog/data'. The user can
  745. write any value to 'fwlog/data' to clear the data. The data can only be cleared
  746. when FW logging is disabled. The FW log data is a binary file that is sent to
  747. Intel and used to help debug user issues.
  748. An example to read the data is::
  749. # cat /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/data > fwlog.bin
  750. An example to clear the data is::
  751. # echo 0 > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/data
  752. Changing how often the log events are sent to the driver
  753. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  754. The driver receives FW log data from the Admin Receive Queue (ARQ). The
  755. frequency that the FW sends the ARQ events can be configured by writing to
  756. 'fwlog/nr_messages'. The range is 1-128 (1 means push every log message, 128
  757. means push only when the max AQ command buffer is full). The suggested value is
  758. 10. The user can see what the value is configured to by reading
  759. 'fwlog/nr_messages'. An example to set the value is::
  760. # echo 50 > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/nr_messages
  761. Configuring the amount of memory used to store FW log data
  762. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  763. The driver stores FW log data within the driver. The default size of the memory
  764. used to store the data is 1MB. Some use cases may require more or less data so
  765. the user can change the amount of memory that is allocated for FW log data.
  766. To change the amount of memory then write to 'fwlog/log_size'. The value must be
  767. one of: 128K, 256K, 512K, 1M, or 2M. FW logging must be disabled to change the
  768. value. An example of changing the value is::
  769. # echo 128K > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/log_size
  770. Performance Optimization
  771. ========================
  772. Driver defaults are meant to fit a wide variety of workloads, but if further
  773. optimization is required, we recommend experimenting with the following
  774. settings.
  775. Rx Descriptor Ring Size
  776. -----------------------
  777. To reduce the number of Rx packet discards, increase the number of Rx
  778. descriptors for each Rx ring using ethtool.
  779. Check if the interface is dropping Rx packets due to buffers being full
  780. (rx_dropped.nic can mean that there is no PCIe bandwidth)::
  781. # ethtool -S <ethX> | grep "rx_dropped"
  782. If the previous command shows drops on queues, it may help to increase
  783. the number of descriptors using 'ethtool -G'::
  784. # ethtool -G <ethX> rx <N>
  785. Where <N> is the desired number of ring entries/descriptors
  786. This can provide temporary buffering for issues that create latency while
  787. the CPUs process descriptors.
  788. Interrupt Rate Limiting
  789. -----------------------
  790. This driver supports an adaptive interrupt throttle rate (ITR) mechanism that
  791. is tuned for general workloads. The user can customize the interrupt rate
  792. control for specific workloads, via ethtool, adjusting the number of
  793. microseconds between interrupts.
  794. To set the interrupt rate manually, you must disable adaptive mode::
  795. # ethtool -C <ethX> adaptive-rx off adaptive-tx off
  796. For lower CPU utilization:
  797. Disable adaptive ITR and lower Rx and Tx interrupts. The examples below
  798. affect every queue of the specified interface.
  799. Setting rx-usecs and tx-usecs to 80 will limit interrupts to about
  800. 12,500 interrupts per second per queue::
  801. # ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 80 tx-usecs 80
  802. For reduced latency:
  803. Disable adaptive ITR and ITR by setting rx-usecs and tx-usecs to 0
  804. using ethtool::
  805. # ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
  806. Per-queue interrupt rate settings:
  807. The following examples are for queues 1 and 3, but you can adjust other
  808. queues.
  809. To disable Rx adaptive ITR and set static Rx ITR to 10 microseconds or
  810. about 100,000 interrupts/second, for queues 1 and 3::
  811. # ethtool --per-queue <ethX> queue_mask 0xa --coalesce adaptive-rx off
  812. rx-usecs 10
  813. To show the current coalesce settings for queues 1 and 3::
  814. # ethtool --per-queue <ethX> queue_mask 0xa --show-coalesce
  815. Bounding interrupt rates using rx-usecs-high:
  816. :Valid Range: 0-236 (0=no limit)
  817. The range of 0-236 microseconds provides an effective range of 4,237 to
  818. 250,000 interrupts per second. The value of rx-usecs-high can be set
  819. independently of rx-usecs and tx-usecs in the same ethtool command, and is
  820. also independent of the adaptive interrupt moderation algorithm. The
  821. underlying hardware supports granularity in 4-microsecond intervals, so
  822. adjacent values may result in the same interrupt rate.
  823. The following command would disable adaptive interrupt moderation, and allow
  824. a maximum of 5 microseconds before indicating a receive or transmit was
  825. complete. However, instead of resulting in as many as 200,000 interrupts per
  826. second, it limits total interrupts per second to 50,000 via the rx-usecs-high
  827. parameter.
  828. ::
  829. # ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs-high 20
  830. rx-usecs 5 tx-usecs 5
  831. Virtualized Environments
  832. ------------------------
  833. In addition to the other suggestions in this section, the following may be
  834. helpful to optimize performance in VMs.
  835. Using the appropriate mechanism (vcpupin) in the VM, pin the CPUs to
  836. individual LCPUs, making sure to use a set of CPUs included in the
  837. device's local_cpulist: ``/sys/class/net/<ethX>/device/local_cpulist``.
  838. Configure as many Rx/Tx queues in the VM as available. (See the iavf driver
  839. documentation for the number of queues supported.) For example::
  840. # ethtool -L <virt_interface> rx <max> tx <max>
  841. Support
  842. =======
  843. For general information, go to the Intel support website at:
  844. https://www.intel.com/support/
  845. If an issue is identified with the released source code on a supported kernel
  846. with a supported adapter, email the specific information related to the issue
  847. to intel-wired-lan@lists.osuosl.org.
  848. Trademarks
  849. ==========
  850. Intel is a trademark or registered trademark of Intel Corporation or its
  851. subsidiaries in the United States and/or other countries.
  852. * Other names and brands may be claimed as the property of others.