xref: /freebsd/share/man/man4/ice.4 (revision f1c4c3daccbaf3820f0e2224de53df12fc952fcc)
1.\"-
2.\" SPDX-License-Identifier: BSD-3-Clause
3.\"
4.\" Copyright (c) 2019-2020, Intel Corporation
5.\" All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms of the Software, with or
8.\" without modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright notice,
11.\"    this list of conditions and the following disclaimer.
12.\"
13.\" 2. Redistributions in binary form must reproduce the above copyright notice,
14.\"    this list of conditions and the following disclaimer in the documentation
15.\"    and/or other materials provided with the distribution.
16.\"
17.\" 3. Neither the name of the Intel Corporation nor the names of its
18.\"    contributors may be used to endorse or promote products derived from
19.\"    this Software without specific prior written permission.
20.\"
21.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31.\" POSSIBILITY OF SUCH DAMAGE.
32.\"
33.\" * Other names and brands may be claimed as the property of others.
34.\"
35.Dd March 28, 2025
36.Dt ICE 4
37.Os
38.Sh NAME
39.Nm ice
40.Nd "Intel\(rg Ethernet 800 Series Driver"
41.Sh SYNOPSIS
42To compile this driver into the kernel, place the following lines in your
43kernel configuration file:
44.Bd -literal -offset indent
45.Cd device iflib
46.Cd device ice
47.Ed
48.Pp
49To load the driver as a module at boot time, place the following lines in
50.Xr loader.conf 5 :
51.Bd -literal -offset indent
52if_ice_load="YES"
53.Ed
54.Sh DESCRIPTION
55.Ss Features
56The
57.Nm
58driver provides support for any PCI Express adapter or LOM
59(LAN On Motherboard)
60in the Intel\(rg Ethernet 800 Series.
61As of this writing, the series includes devices with these model numbers:
62.Pp
63.Bl -bullet -compact
64.It
65Intel\(rg Ethernet Controller E810\-C
66.It
67Intel\(rg Ethernet Controller E810\-XXV
68.It
69Intel\(rg Ethernet Connection E822\-C
70.It
71Intel\(rg Ethernet Connection E822\-L
72.It
73Intel\(rg Ethernet Connection E823\-C
74.It
75Intel\(rg Ethernet Connection E823\-L
76.It
77Intel\(rg Ethernet Connection E825\-C
78.It
79Intel\(rg Ethernet Connection E830\-C
80.It
81Intel\(rg Ethernet Connection E830\-CC
82.It
83Intel\(rg Ethernet Connection E830\-L
84.It
85Intel\(rg Ethernet Connection E830\-XXV
86.El
87.Pp
88For questions related to hardware requirements, refer to the documentation
89supplied with your adapter.
90.Pp
91Support for Jumbo Frames is provided via the interface MTU setting.
92Selecting an MTU larger than 1500 bytes with the
93.Xr ifconfig 8
94utility configures the adapter to receive and transmit Jumbo Frames.
95The maximum MTU size for Jumbo Frames is 9706.
96For more information, see the
97.Sx Jumbo Frames
98section.
99.Pp
100This driver version supports VLANs.
101For information on enabling VLANs, see
102.Xr vlan 4 .
103For additional information on configuring VLANs, see
104.Xr ifconfig 8 Ap s
105.Dq VLAN Parameters
106section.
107.Pp
108Offloads are also controlled via the interface, for instance, checksumming for
109both IPv4 and IPv6 can be set and unset, TSO4 and/or TSO6, and finally LRO can
110be set and unset.
111.Pp
112For more information on configuring this device, see
113.Xr ifconfig 8 .
114.Pp
115The associated Virtual Function (VF) driver for this driver is
116.Xr iavf 4 .
117.Pp
118The associated RDMA driver for this driver is
119.Xr irdma 4 .
120.Ss Dynamic Device Personalization
121The DDP package loads during device initialization.
122The driver looks for the
123.Sy ice_ddp
124module and checks that it contains a valid DDP package file.
125.Pp
126If the driver is unable to load the DDP package, the device will enter Safe
127Mode.
128Safe Mode disables advanced and performance features and supports only
129basic traffic and minimal functionality, such as updating the NVM or
130downloading a new driver or DDP package.
131Safe Mode only applies to the affected physical function and does not impact
132any other PFs.
133See the
134.Dq Intel\(rg Ethernet Adapters and Devices User Guide
135for more details on DDP and Safe Mode.
136.Pp
137If you encounter issues with the DDP package file, you may need to download
138an updated driver or
139.Sy ice_ddp
140module.
141See the log messages for more information.
142.Pp
143You cannot update the DDP package if any PF drivers are already loaded.
144To overwrite a package, unload all PFs and then reload the driver with the
145new package.
146.Pp
147You can only use one DDP package per driver, even if you have more than one
148device installed that uses the driver.
149.Pp
150Only the first loaded PF per device can download a package for that device.
151.Ss Jumbo Frames
152Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
153to a value larger than the default value of 1500.
154.Pp
155Use
156.Xr ifconfig 8
157to increase the MTU size.
158.Pp
159The maximum MTU setting for jumbo frames is 9706.
160This corresponds to the maximum jumbo frame size of 9728 bytes.
161.Pp
162This driver will attempt to use multiple page sized buffers to receive
163each jumbo packet.
164This should help to avoid buffer starvation issues when allocating receive
165packets.
166.Pp
167Packet loss may have a greater impact on throughput when you use jumbo
168frames.
169If you observe a drop in performance after enabling jumbo frames, enabling
170flow control may mitigate the issue.
171.Ss Remote Direct Memory Access
172Remote Direct Memory Access, or RDMA, allows a network device to transfer data
173directly to and from application memory on another system, increasing
174throughput and lowering latency in certain networking environments.
175.Pp
176The ice driver supports both the iWARP (Internet Wide Area RDMA Protocol) and
177RoCEv2 (RDMA over Converged Ethernet) protocols.
178The major difference is that iWARP performs RDMA over TCP, while RoCEv2 uses
179UDP.
180.Pp
181Devices based on the Intel\(rg Ethernet 800 Series do not support RDMA when
182operating in multiport mode with more than 4 ports.
183.Pp
184For detailed installation and configuration information for RDMA, see
185.Xr irdma 4 .
186.Ss RDMA Monitoring
187For debugging/testing purposes, you can use sysctl to set up a mirroring
188interface on a port.
189The interface can receive mirrored RDMA traffic for packet
190analysis tools like
191.Xr tcpdump 1 .
192This mirroring may impact performance.
193.Pp
194To use RDMA monitoring, you may need to reserve more MSI\-X interrupts.
195Before the
196.Nm
197driver loads, configure the following tunable provided by
198.Xr iflib 4 :
199.Bd -literal -offset indent
200dev.ice.<interface #>.iflib.use_extra_msix_vectors=4
201.Ed
202.Pp
203You may need to adjust the number of extra MSI\-X interrupt vectors.
204.Pp
205To create/delete the interface:
206.Bd -literal -offset indent
207sysctl dev.ice.<interface #>.create_interface=1
208sysctl dev.ice.<interface #>.delete_interface=1
209.Ed
210.Pp
211The mirrored interface receives both LAN and RDMA traffic.
212Additional filters can be configured in tcpdump.
213.Pp
214To differentiate the mirrored interface from the primary interface, the network
215interface naming convention is:
216.Bd -literal -offset indent
217<driver name><port number><modifier><modifier unit number>
218.Ed
219.Pp
220For example,
221.Dq Li ice0m0
222is the first mirroring interface on
223.Dq Li ice0 .
224.Ss Data Center Bridging
225Data Center Bridging (DCB) is a configuration Quality of Service
226implementation in hardware.
227It uses the VLAN priority tag (802.1p) to filter traffic.
228That means that there are 8 different priorities that traffic can be filtered
229into.
230It also enables priority flow control (802.1Qbb) which can limit or eliminate
231the number of dropped packets during network stress.
232Bandwidth can be allocated to each of these priorities, which is enforced at
233the hardware level (802.1Qaz).
234.Pp
235DCB is normally configured on the network using the DCBX protocol (802.1Qaz), a
236specialization of LLDP (802.1AB). The
237.Nm
238driver supports the following mutually exclusive variants of DCBX support:
239.Bl -bullet -compact
240.It
241Firmware\-based LLDP Agent
242.It
243Software\-based LLDP Agent
244.El
245.Pp
246In firmware\-based mode, firmware intercepts all LLDP traffic and handles DCBX
247negotiation transparently for the user.
248In this mode, the adapter operates in
249.Dq willing
250DCBX mode, receiving DCB settings from the link partner (typically a
251switch).
252The local user can only query the negotiated DCB configuration.
253For information on configuring DCBX parameters on a switch, please consult the
254switch manufacturer'ss documentation.
255.Pp
256In software\-based mode, LLDP traffic is forwarded to the network stack and user
257space, where a software agent can handle it.
258In this mode, the adapter can operate in
259.Dq nonwilling
260DCBX mode and DCB configuration can be both queried and set locally.
261This mode requires the FW\-based LLDP Agent to be disabled.
262.Pp
263Firmware\-based mode and software\-based mode are controlled by the
264.Dq fw_lldp_agent
265sysctl.
266Refer to the Firmware Link Layer Discovery Protocol Agent section for more
267information.
268.Pp
269Link\-level flow control and priority flow control are mutually exclusive.
270The ice driver will disable link flow control when priority flow control
271is enabled on any traffic class (TC).
272It will disable priority flow control when link flow control is enabled.
273.Pp
274To enable/disable priority flow control in software\-based DCBX mode:
275.Bd -literal -offset indent
276sysctl dev.ice.<interface #>.pfc=1 (or 0 to disable)
277.Ed
278.Pp
279Enhanced Transmission Selection (ETS) allows you to assign bandwidth to certain
280TCs, to help ensure traffic reliability.
281To view the assigned ETS configuration, use the following:
282.Bd -literal -offset indent
283sysctl dev.ice.<interface #>.ets_min_rate
284.Ed
285.Pp
286To set the minimum ETS bandwidth per TC, separate the values by commas.
287All values must add up to 100.
288For example, to set all TCs to a minimum bandwidth of 10% and TC 7 to 30%,
289use the following:
290.Bd -literal -offset indent
291sysctl dev.ice.<interface #>.ets_min_rate=10,10,10,10,10,10,10,30
292.Ed
293.Pp
294To set the User Priority (UP) to a TC mapping for a port, separate the values
295by commas.
296For example, to map UP 0 and 1 to TC 0, UP 2 and 3 to TC 1, UP 4 and
2975 to TC 2, and UP 6 and 7 to TC 3, use the following:
298.Bd -literal -offset indent
299sysctl dev.ice.<interface #>.up2tc_map=0,0,1,1,2,2,3,3
300.Ed
301.Ss L3 QoS mode
302The
303.Nm
304driver supports setting DSCP\-based Layer 3 Quality of Service (L3 QoS)
305in the PF driver.
306The driver initializes in L2 QoS mode by default; L3 QoS is disabled by
307default.
308Use the following sysctl to enable or disable L3 QoS:
309.Bd -literal -offset indent
310sysctl dev.ice.<interface #>.pfc_mode=1 (or 0 to disable)
311.Ed
312.Pp
313If you disable L3 QoS mode, it returns to L2 QoS mode.
314.Pp
315To map a DSCP value to a traffic class, separate the values by commas.
316For example, to map DSCPs 0\-3 and DSCP 8 to DCB TCs 0\-3 and 4, respectively:
317.Bd -literal -offset indent
318sysctl dev.ice.<interface #>.dscp2tc_map.0\-7=0,1,2,3,0,0,0,0
319sysctl dev.ice.<interface #>.dscp2tc_map.8\-15=4,0,0,0,0,0,0,0
320.Ed
321.Pp
322To change the DSCP mapping back to the default traffic class, set all the
323values back to 0.
324.Pp
325To view the currently configured mappings, use the following:
326.Bd -literal -offset indent
327sysctl dev.ice.<interface #>.dscp2tc_map
328.Ed
329.Pp
330L3 QoS mode is not available when FW\-LLDP is enabled.
331.Pp
332You also cannot enable FW\-LLDP if L3 QoS mode is active.
333.Pp
334Disable FW\-LLDP before switching to L3 QoS mode.
335.Pp
336Refer to the
337.Sx Firmware Link Layer Discovery Protocol Agent
338section in this README for more information on disabling FW\-LLDP.
339.Ss Firmware Link Layer Discovery Protocol Agent
340Use sysctl to change FW\-LLDP settings.
341The FW\-LLDP setting is per port and persists across boots.
342.Pp
343To enable the FW\-LLDP Agent:
344.Bd -literal -offset indent
345sysctl dev.ice.<interface #>.fw_lldp_agent=1
346.Ed
347.Pp
348To disable the FW\-LLDP Agebt:
349.Bd -literal -offset indent
350sysctl dev.ice.<interface #>.fw_lldp_agent=0
351.Ed
352.Pp
353To check the current LLDP setting:
354.Bd -literal -offset indent
355sysctl dev.ice.<interface #>.fw_lldp_agent
356.Ed
357.Pp
358You must enable the UEFI HII LLDP Agent attribute for this setting
359to take effect.
360If the
361.Dq LLDP AGENT
362attribute is set to disabled, you cannot enable the FW\-LLDP Agent from the
363driver.
364.Ss Link\-Level Flow Control (LFC)
365Ethernet Flow Control (IEEE 802.3x) can be configured with sysctl to enable
366receiving and transmitting pause frames for
367.Nm .
368When transmit is enabled, pause frames are generated when the receive packet
369buffer crosses a predefined threshold.
370When receive is enabled, the transmit unit will halt for the time delay
371specified in the firmware when a pause frame is received.
372.Pp
373Flow Control is disabled by default.
374.Pp
375Use sysctl to change the flow control settings for a single interface without
376reloading the driver:
377.Bd -literal -offset indent
378sysctl dev.ice.<interface #>.fc
379.Ed
380.Pp
381The available values for flow control are:
382.Bd -literal -offset indent
3830 = Disable flow control
3841 = Enable Rx pause
3852 = Enable Tx pause
3863 = Enable Rx and Tx pause
387.Ed
388.Pp
389Verify that link flow control was negotiated on the link by checking the
390interface entry in
391.Xr ifconfig 8
392and looking for the flags
393.Dq txpause
394and/or
395.Dq rxpause
396in the
397.Dq media
398status.
399.Pp
400The
401.Nm
402driver requires flow control on both the port and link partner.
403If flow control is disabled on one of the sides, the port may appear to
404hang on heavy traffic.
405.Pp
406For more information on priority flow control, refer to the
407.Sx Data Center Bridging
408section.
409.Pp
410The VF driver does not have access to flow control.
411It must be managed from the host side.
412.Ss Forward Error Correction
413Forward Error Correction (FEC) improves link stability but increases latency.
414Many high quality optics, direct attach cables, and backplane channels can
415provide a stable link without FEC.
416.Pp
417For devices to benefit from this feature, link partners must have FEC enabled.
418.Pp
419If you enable the sysctl
420.Em allow_no_fec_modules_in_auto
421Auto FEC negotiation will include
422.Dq No FEC
423in case your link partner does not have FEC enabled or is not FEC capable:
424.Bd -literal -offset indent
425sysctl dev.ice.<interface #>.allow_no_fec_modules_in_auto=1
426.Ed
427.Pp
428NOTE: This flag is currently not supported on the Intel\(rg Ethernet 830
429Series.
430.Pp
431To show the current FEC settings that are negotiated on the link:
432.Bd -literal -offset indent
433sysctl dev.ice.<interface #>.negotiated_fec
434.Ed
435.Pp
436To view or set the FEC setting that was requested on the link:
437.Bd -literal -offset indent
438sysctl dev.ice.<interface #>.requested_fec
439.Ed
440.Pp
441To see the valid FEC modes for the link:
442.Bd -literal -offset indent
443sysctl \-d dev.ice.<interface #>.requested_fec
444.Ed
445.Ss Speed and Duplex Configuration
446You cannot set duplex or autonegotiation settings.
447.Pp
448To have your device change the speeds it will use in auto-negotiation or
449force link with:
450.Bd -literal -offset indent
451sysctl dev.ice.<interface #>.advertise_speed=<mask>
452.Ed
453.Pp
454Supported speeds will vary by device.
455Depending on the speeds your device supports, valid bits used in a speed mask
456could include:
457.Bd -literal -offset indent
4580x0 \- Auto
4590x2 \- 100 Mbps
4600x4 \- 1 Gbps
4610x8 \- 2.5 Gbps
4620x10 \- 5 Gbps
4630x20 \- 10 Gbps
4640x80 \- 25 Gbps
4650x100 \- 40 Gbps
4660x200 \- 50 Gbps
4670x400 \- 100 Gbps
4680x800 \- 200 Gbps
469.Ed
470.Ss Disabling physical link when the interface is brought down
471When the
472.Va link_active_on_if_down
473sysctl is set to
474.Dq 0 ,
475the port's link will go down when the interface is brought down.
476By default, link will stay up.
477.Pp
478To disable link when the interface is down:
479.Bd -literal -offset indent
480sysctl dev.ice.<interface #>.link_active_on_if_down=0
481.Ed
482.Ss Firmware Logging
483The
484.Nm
485driver allows for the generation of firmware logs for supported categories of
486events, to help debug issues with Customer Support.
487Refer to the
488.Dq Intel\(rg Ethernet Adapters and Devices User Guide
489for an overview of this feature and additional tips.
490.Pp
491At a high level, to capture a firmware log:
492.Bl -enum -compact
493.It
494Set the configuration for the firmware log.
495.It
496Perform the necessary steps to generate the issue you are trying to debug.
497.It
498Capture the firmware log.
499.It
500Stop capturing the firmware log.
501.It
502Reset your firmware log settings as needed.
503.It
504Work with Customer Support to debug the issue.
505.El
506.Pp
507NOTE: Firmware logs are generated in a binary format and must be decoded by
508Customer Support.
509Information collected is related only to firmware and hardware for debug
510purposes.
511.Pp
512Once the driver is loaded, it will create the
513.Va fw_log
514sysctl node under the debug section of the driver's sysctl list.
515The driver groups these events into categories, called
516.Dq modules .
517Supported modules include:
518.Pp
519.Bl -tag -offset indent -compact -width "task_dispatch"
520.It Va general
521General (Bit 0)
522.It Va ctrl
523Control (Bit 1)
524.It Va link
525Link Management (Bit 2)
526.It Va link_topo
527Link Topology Detection (Bit 3)
528.It Va dnl
529Link Control Technology (Bit 4)
530.It Va i2c
531I2C (Bit 5)
532.It Va sdp
533SDP (Bit 6)
534.It Va mdio
535MDIO (Bit 7)
536.It Va adminq
537Admin Queue (Bit 8)
538.It Va hdma
539Host DMA (Bit 9)
540.It Va lldp
541LLDP (Bit 10)
542.It Va dcbx
543DCBx (Bit 11)
544.It Va dcb
545DCB (Bit 12)
546.It Va xlr
547XLR (function\-level resets; Bit 13)
548.It Va nvm
549NVM (Bit 14)
550.It Va auth
551Authentication (Bit 15)
552.It Va vpd
553Vital Product Data (Bit 16)
554.It Va iosf
555Intel On\-Chip System Fabric (Bit 17)
556.It Va parser
557Parser (Bit 18)
558.It Va sw
559Switch (Bit 19)
560.It Va scheduler
561Scheduler (Bit 20)
562.It Va txq
563TX Queue Management (Bit 21)
564.It Va acl
565ACL (Access Control List; Bit 22)
566.It Va post
567Post (Bit 23)
568.It Va watchdog
569Watchdog (Bit 24)
570.It Va task_dispatch
571Task Dispatcher (Bit 25)
572.It Va mng
573Manageability (Bit 26)
574.It Va synce
575SyncE (Bit 27)
576.It Va health
577Health (Bit 28)
578.It Va tsdrv
579Time Sync (Bit 29)
580.It Va pfreg
581PF Registration (Bit 30)
582.It Va mdlver
583Module Version (Bit 31)
584.El
585.Pp
586You can change the verbosity level of the firmware logs.
587You can set only one log level per module, and each level includes the
588verbosity levels lower than it.
589For instance, setting the level to
590.Dq normal
591will also log warning and error messages.
592Available verbosity levels are:
593.Pp
594.Bl -item -offset indent -compact
595.It
5960 = none
597.It
5981 = error
599.It
6002 = warning
601.It
6023 = normal
603.It
6044 = verbose
605.El
606.Pp
607To set the desired verbosity level for a module, use the following sysctl
608command and then register it:
609.Bd -literal -offset indent
610sysctl dev.ice.<interface #>.debug.fw_log.severity.<module>=<level>
611.Ed
612.Pp
613For example:
614.Bd -literal -offset indent
615sysctl dev.ice.0.debug.fw_log.severity.link=1
616sysctl dev.ice.0.debug.fw_log.severity.link_topo=2
617sysctl dev.ice.0.debug.fw_log.register=1
618.Ed
619.Pp
620To log firmware messages after booting, but before the driver initializes, use
621.Xr kenv 1
622to set the tunable.
623The
624.Va on_load
625setting tells the device to register the variable as soon as possible during
626driver load.
627For example:
628.Bd -literal -offset indent
629kenv dev.ice.0.debug.fw_log.severity.link=1
630kenv dev.ice.0.debug.fw_log.severity.link_topo=2
631kenv dev.ice.0.debug.fw_log.on_load=1
632.Ed
633.Pp
634To view the firmware logs and redirect them to a file, use the following
635command:
636.Bd -literal -offset indent
637dmesg > log_output
638.Ed
639.Pp
640NOTE: Logging a large number of modules or too high of a verbosity level will
641add extraneous messages to dmesg and could hinder debug efforts.
642.Ss Debug Dump
643Intel\(rg Ethernet 800 Series devices support debug dump, which allows you to
644obtain runtime register values from the firmware for
645.Dq clusters
646of events and then write the results to a single dump file, for debugging
647complicated issues in the field.
648.Pp
649This debug dump contains a snapshot of the device and its existing hardware
650configuration, such as switch tables, transmit scheduler tables, and other
651information.
652Debug dump captures the current state of the specified cluster(s) and is a
653stateless snapshot of the whole device.
654.Pp
655NOTE: Like with firmware logs, the contents of the debug dump are not
656human\-readable.
657You must work with Customer Support to decode the file.
658.Pp
659Debug dump is per device, not per PF.
660.Pp
661Debug dump writes all information to a single file.
662.Pp
663To generate a debug dump file in
664.Fx
665do the following:
666.Pp
667Specify the cluster(s) to include in the dump file, using a bitmask and the
668following command:
669.Bd -literal -offset indent
670sysctl dev.ice.<interface #>.debug.dump.clusters=<bitmask>
671.Ed
672.Pp
673To print the complete cluster bitmask and parameter list to the screen,
674pass the
675.Fl d
676argument.
677For example:
678.Bd -literal -offset indent
679sysctl \-d dev.ice.0.debug.dump.clusters
680.Ed
681.Pp
682Possible bitmask values for
683.Va clusters
684are:
685.Bl -bullet -compact
686.It
6870 \- Dump all clusters (only supported on Intel\(rg Ethernet E810 Series and
688Intel\(rg Ethernet E830 Series)
689.It
6900x1 \- Switch
691.It
6920x2 \- ACL
693.It
6940x4 \- Tx Scheduler
695.It
6960x8 \- Profile Configuration
697.It
6980x20 \- Link
699.It
7000x80 \- DCB
701.It
7020x100 \- L2P
703.It
7040x400000 \- Manageability Transactions (only supported on Intel\(rg Ethernet
705E810 Series)
706.El
707.Pp
708For example, to dump the Switch, DCB, and L2P clusters, use the following:
709.Bd -literal -offset indent
710sysctl dev.ice.0.debug.dump.clusters=0x181
711.Ed
712.Pp
713To dump all clusters, use the following:
714.Bd -literal -offset indent
715sysctl dev.ice.0.debug.dump.clusters=0
716.Ed
717.Pp
718NOTE: Using 0 will skip Manageability Transactions data.
719.Pp
720If you don't specify a cluster, the driver will dump all clusters to a
721single file.
722Issue the debug dump command, using the following:
723.Bd -literal -offset indent
724sysctl \-b dev.ice.<interface #>.debug.dump.dump=1 > dump.bin
725.Ed
726.Pp
727NOTE: The driver will not receive the command if you do not write
728.Dq 1
729to the sysctl.
730.Pp
731Replace
732.Dq dump.bin
733above with the file name you want to use.
734.Pp
735To clear the
736.Va clusters
737mask before a subsequent debug dump and then do the dump:
738.Bd -literal -offset indent
739sysctl dev.ice.0.debug.dump.clusters=0
740sysctl dev.ice.0.debug.dump.dump=1
741.Ed
742.Ss Debugging PHY Statistics
743The ice driver supports the ability to obtain the values of the PHY registers
744from Intel(R) Ethernet 810 Series devices in order to debug link and
745connection issues during runtime.
746.Pp
747The driver allows you to obtain information about:
748.Bl -bullet
749.It
750Rx and Tx Equalization parameters
751.It
752RS FEC correctable and uncorrectable block counts
753.El
754.Pp
755Use the following sysctl to read the PHY registers:
756.Bd -literal -offset indent
757sysctl dev.ice.<interface #>.debug.phy_statistics
758.Ed
759.Pp
760NOTE: The contents of the registers are not human\-readable.
761Like with firmware logs and debug dump, you must work with Customer Support
762to decode the file.
763.Ss Transmit Balancing
764Some Intel(R) Ethernet 800 Series devices allow you to enable a transmit
765balancing feature to improve transmit performance under certain conditions.
766When the feature is enabled, you should experience more consistent transmit
767performance across queues and/or PFs and VFs.
768.Pp
769By default, transmit balancing is disabled in the NVM.
770To enable this feature, use one of the following to persistently change the
771setting for the device:
772.Bl -bullet
773.It
774Use the Ethernet Port Configuration Tool (EPCT) to enable the
775.Va tx_balancing
776option.
777Refer to the EPCT readme for more information.
778.It
779Enable the Transmit Balancing device setting in UEFI HII.
780.El
781.Pp
782When the driver loads, it reads the transmit balancing setting from the NVM and
783configures the device accordingly.
784.Pp
785NOTE: The user selection for transmit balancing in EPCT or HII is persistent
786across reboots.
787You must reboot the system for the selected setting to take effect.
788.Pp
789This setting is device wide.
790.Pp
791The driver, NVM, and DDP package must all support this functionality to
792enable the feature.
793.Ss Thermal Monitoring
794Intel(R) Ethernet 810 Series and Intel(R) Ethernet 830 Series devices can
795display temperature data (in degrees Celsius) via:
796.Bd -literal -offset indent
797sysctl dev.ice.<interface #>.temp
798.Ed
799.Ss Network Memory Buffer Allocation
800.Fx
801may have a low number of network memory buffers (mbufs) by default.
802If the number of mbufs available is too low, it may cause the driver to fail
803to initialize and/or cause the system to become unresponsive.
804You can check to see if the system is mbuf\-starved by running
805.Ic netstat Fl m .
806Increase the number of mbufs by editing the lines below in
807.Pa /etc/sysctl.conf :
808.Bd -literal -offset indent
809kern.ipc.nmbclusters
810kern.ipc.nmbjumbop
811kern.ipc.nmbjumbo9
812kern.ipc.nmbjumbo16
813kern.ipc.nmbufs
814.Ed
815.Pp
816The amount of memory that you allocate is system specific, and may require some
817trial and error.
818Also, increasing the following in
819.Pa /etc/sysctl.conf
820could help increase network performance:
821.Bd -literal -offset indent
822kern.ipc.maxsockbuf
823net.inet.tcp.sendspace
824net.inet.tcp.recvspace
825net.inet.udp.maxdgram
826net.inet.udp.recvspace
827.Ed
828.Ss Additional Utilities
829There are additional tools available from Intel to help configure and update
830the adapters covered by this driver.
831These tools can be downloaded directly from Intel at
832.Lk https://downloadcenter.intel.com ,
833by searching for their names:
834.Bl -bullet
835.It
836To change the behavior of the QSFP28 ports on E810-C adapters, use the Intel
837.Sy Ethernet Port Configuration Tool - FreeBSD .
838.It
839To update the firmware on an adapter, use the Intel
840.Sy Non-Volatile Memory (NVM) Update Utility for Intel Ethernet Network Adapters E810 series - FreeBSD
841.El
842.Sh HARDWARE
843The
844.Nm
845driver supports the Intel Ethernet 800 series.
846Some adapters in this series with SFP28/QSFP28 cages
847have firmware that requires that Intel qualified modules are used; these
848qualified modules are listed below.
849This qualification check cannot be disabled by the driver.
850.Pp
851The
852.Nm
853driver supports 100Gb Ethernet adapters with these QSFP28 modules:
854.Pp
855.Bl -bullet -compact
856.It
857Intel\(rg 100G QSFP28 100GBASE-SR4   E100GQSFPSR28SRX
858.It
859Intel\(rg 100G QSFP28 100GBASE-SR4   SPTMBP1PMCDF
860.It
861Intel\(rg 100G QSFP28 100GBASE-CWDM4 SPTSBP3CLCCO
862.It
863Intel\(rg 100G QSFP28 100GBASE-DR    SPTSLP2SLCDF
864.El
865.Pp
866The
867.Nm
868driver supports 25Gb and 10Gb Ethernet adapters with these SFP28 modules:
869.Pp
870.Bl -bullet -compact
871.It
872Intel\(rg 10G/25G SFP28 25GBASE-SR E25GSFP28SR
873.It
874Intel\(rg     25G SFP28 25GBASE-SR E25GSFP28SRX (Extended Temp)
875.It
876Intel\(rg     25G SFP28 25GBASE-LR E25GSFP28LRX (Extended Temp)
877.El
878.Pp
879The
880.Nm
881driver supports 10Gb and 1Gb Ethernet adapters with these SFP+ modules:
882.Pp
883.Bl -bullet -compact
884.It
885Intel\(rg 1G/10G SFP+ 10GBASE-SR E10GSFPSR
886.It
887Intel\(rg 1G/10G SFP+ 10GBASE-SR E10GSFPSRG1P5
888.It
889Intel\(rg 1G/10G SFP+ 10GBASE-SR E10GSFPSRG2P5
890.It
891Intel\(rg    10G SFP+ 10GBASE-SR E10GSFPSRX (Extended Temp)
892.It
893Intel\(rg 1G/10G SFP+ 10GBASE-LR E10GSFPLR
894.El
895.Pp
896Note that adapters also support all passive and active
897limiting direct attach cables that comply with SFF-8431 v4.1 and
898SFF-8472 v10.4 specifications.
899.Pp
900This is not an exhaustive list; please consult product documentation for an
901up-to-date list of supported media.
902.Ss Fiber optics and auto\-negotiation
903Modules based on 100GBASE\-SR4, active optical cable (AOC), and active copper
904cable (ACC) do not support auto\-negotiation per the IEEE specification.
905To obtain link with these modules, auto\-negotiation must be turned off on the
906link partner's switch ports.
907.Ss PCI-Express Slot Bandwidth
908Some PCIe x8 slots are actually configured as x4 slots.
909These slots have insufficient bandwidth for full line rate with dual port and
910quad port devices.
911In addition, if you put a PCIe v4.0 or v3.0\-capable adapter into a PCIe v2.x
912slot, you cannot get full bandwidth.
913.Pp
914The driver detects this situation and writes the following message in the
915system log:
916.Bd -literal -offset indent
917PCI\-Express bandwidth available for this device may be insufficient for
918optimal performance.
919Please move the device to a different PCI\-e link with more lanes and/or
920higher transfer rate.
921.Ed
922.Pp
923If this error occurs, moving your adapter to a true PCIe x8 or x16 slot will
924resolve the issue.
925For best performance, install devices in the following PCI slots:
926.Bl -bullet
927.It
928Any 100Gbps\-capable Intel(R) Ethernet 800 Series device: Install in a
929PCIe v4.0 x8 or v3.0 x16 slot
930.It
931A 200Gbps\-capable Intel(R) Ethernet 830 Series device: Install in a
932PCIe v5.0 x8 or v4.0 x16 slot
933.El
934.Sh LOADER TUNABLES
935Tunables can be set at the
936.Xr loader 8
937prompt before booting the kernel or stored in
938.Xr loader.conf 5 .
939See the
940.Xr iflib 4
941man page for more information on using iflib sysctl variables as tunables.
942.Bl -tag -width indent
943.It Va hw.ice.enable_health_events
944Set to 1 to enable firmware health event reporting across all devices.
945Enabled by default.
946.Pp
947If enabled, when the driver receives a firmware health event message, it will
948print out a description of the event to the kernel message buffer and if
949applicable, possible actions to take to remedy it.
950.It Va hw.ice.irdma
951Set to 1 to enable the RDMA client interface, required by the
952.Xr irdma 4
953driver.
954Enabled by default.
955.It Va hw.ice.rdma_max_msix
956Set the maximum number of per-device MSI-X vectors that are allocated for use
957by the
958.Xr irdma 4
959driver.
960Set to 64 by default.
961.It Va hw.ice.debug.enable_tx_fc_filter
962Set to 1 to enable the TX Flow Control filter across all devices.
963Enabled by default.
964.Pp
965If enabled, the hardware will drop any transmitted Ethertype 0x8808 control
966frames that do not originate from the hardware.
967.It Va hw.ice.debug.enable_tx_lldp_filter
968Set to 1 to enable the TX LLDP filter across all devices.
969Enabled by default.
970.Pp
971If enabled, the hardware will drop any transmitted Ethertype 0x88cc LLDP frames
972that do not originate from the hardware.
973This must be disabled in order to use LLDP daemon software such as
974.Xr lldpd 8 .
975.It Va hw.ice.debug.ice_tx_balance_en
976Set to 1 to allow the driver to use the 5-layer Tx Scheduler tree topology if
977configured by the DDP package.
978.Pp
979Enabled by default.
980.El
981.Sh SYSCTL VARIABLES
982.Bl -tag -width indent
983.It Va dev.ice.#.current_speed
984This is a display of the current link speed of the interface.
985This is expected to match the speed of the media type in-use displayed by
986.Xr ifconfig 8 .
987.It Va dev.ice.#.fw_version
988Displays the current firmware and NVM versions of the adapter.
989This information should be submitted along with any support requests.
990.It Va dev.ice.#.ddp_version
991Displays the current DDP package version downloaded to the adapter.
992This information should be submitted along with any support requests.
993.It Va dev.ice.#.pba_number
994Displays the Product Board Assembly Number.
995May be used to help identify the type of adapter in use.
996This sysctl may not exist depending on the adapter type.
997.It Va dev.ice.#.hw.mac.*
998This sysctl tree contains statistics collected by the hardware for the port.
999.El
1000.Sh INTERRUPT STORMS
1001It is important to note that 100G operation can generate high
1002numbers of interrupts, often incorrectly being interpreted as
1003a storm condition in the kernel.
1004It is suggested that this be resolved by setting
1005.Va hw.intr_storm_threshold
1006to 0.
1007.Sh IOVCTL OPTIONS
1008The driver supports additional optional parameters for created VFs
1009(Virtual Functions) when using
1010.Xr iovctl 8 :
1011.Bl -tag -width indent
1012.It mac-addr Pq unicast-mac
1013Set the Ethernet MAC address that the VF will use.
1014If unspecified, the VF will use a randomly generated MAC address and
1015.Dq allow-set-mac
1016will be set to true.
1017.It mac-anti-spoof Pq bool
1018Prevent the VF from sending Ethernet frames with a source address
1019that does not match its own.
1020Enabled by default.
1021.It allow-set-mac Pq bool
1022Allow the VF to set its own Ethernet MAC address.
1023Disallowed by default.
1024.It allow-promisc Pq bool
1025Allow the VF to inspect all of the traffic sent to the port that it is created
1026on.
1027Disabled by default.
1028.It num-queues Pq uint16_t
1029Specify the number of queues the VF will have.
1030By default, this is set to the number of MSI\-X vectors supported by the VF
1031minus one.
1032.It mirror-src-vsi Pq uint16_t
1033Specify which VSI the VF will mirror traffic from by setting this to a value
1034other than \-1.
1035All traffic from that VSI will be mirrored to this VF.
1036Can be used as an alternative method to mirror RDMA traffic to another
1037interface than the method described in the
1038.Sx RDMA Monitoring
1039section.
1040Not affected by the
1041.Dq allow-promisc
1042parameter.
1043.It max-vlan-allowed Pq uint16_t
1044Specify maximum number of VLAN filters that the VF can use.
1045Receiving traffic on a VLAN requires a hardware filter which are a finite
1046resource; this is used to prevent a VF from starving other VFs or the PF of
1047filter resources.
1048By default, this is set to 16.
1049.It max-mac-filters Pq uint16_t
1050Specify maximum number of MAC address filters that the VF can use.
1051Each allowed MAC address requires a hardware filter which are a finite
1052resource; this is used to prevent a VF from starving other VFs or the PF of
1053filter resources.
1054The VF's default mac address does not count towards this limit.
1055By default, this is set to 64.
1056.El
1057.Pp
1058An up to date list of parameters and their defaults can be found by using
1059.Xr iovctl 8
1060with the
1061.Fl S
1062option.
1063.Pp
1064For more information on standard and mandatory parameters, see
1065.Xr iovctl.conf 5 .
1066.Sh SUPPORT
1067For general information and support, go to the Intel support website at:
1068.Lk http://www.intel.com/support/ .
1069.Pp
1070If an issue is identified with this driver with a supported adapter,
1071email all the specific information related to the issue to
1072.Aq Mt freebsd@intel.com .
1073.Sh SEE ALSO
1074.Xr iflib 4 ,
1075.Xr vlan 4 ,
1076.Xr ifconfig 8 ,
1077.Xr sysctl 8
1078.Sh HISTORY
1079The
1080.Nm
1081device driver first appeared in
1082.Fx 12.2 .
1083.Sh AUTHORS
1084The
1085.Nm
1086driver was written by
1087.An Intel Corporation Aq Mt freebsd@intel.com .
1088