summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ice.4 3.html
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:43 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:43 -0400
commitac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (patch)
tree9367490586c84cba28652e443e3166d66c33b0d9 /static/freebsd/man4/ice.4 3.html
parent253e67c8b3a72b3a4757fdbc5845297628db0a4a (diff)
docs: Added All FreeBSD Manuals
Diffstat (limited to 'static/freebsd/man4/ice.4 3.html')
-rw-r--r--static/freebsd/man4/ice.4 3.html969
1 files changed, 969 insertions, 0 deletions
diff --git a/static/freebsd/man4/ice.4 3.html b/static/freebsd/man4/ice.4 3.html
new file mode 100644
index 00000000..0ea4686e
--- /dev/null
+++ b/static/freebsd/man4/ice.4 3.html
@@ -0,0 +1,969 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">ICE(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">ICE(4)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<p class="Pp"><code class="Nm">ice</code> &#x2014; <span class="Nd">Intel
+ Ethernet 800 Series 1GbE to 200GbE driver</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<p class="Pp"><code class="Cd">device iflib</code>
+ <br/>
+ <code class="Cd">device ice</code></p>
+<p class="Pp">In <a class="Xr">loader.conf(5)</a>:
+ <br/>
+ <code class="Cd">if_ice_load</code>
+ <br/>
+ <code class="Cd">hw.ice.enable_health_events</code>
+ <br/>
+ <code class="Cd">hw.ice.irdma</code>
+ <br/>
+ <code class="Cd">hw.ice.irdma_max_msix</code>
+ <br/>
+ <code class="Cd">hw.ice.debug.enable_tx_fc_filter</code>
+ <br/>
+ <code class="Cd">hw.ice.debug.enable_tx_lldp_filter</code>
+ <br/>
+ <code class="Cd">hw.ice.debug.ice_tx_balance_en</code></p>
+<p class="Pp">In <a class="Xr">sysctl.conf(5)</a> or
+ <a class="Xr">loader.conf(5)</a>:
+ <br/>
+ <code class="Cd">dev.ice.#.current_speed</code>
+ <br/>
+ <code class="Cd">dev.ice.#.fw_version</code>
+ <br/>
+ <code class="Cd">dev.ice.#.ddp_version</code>
+ <br/>
+ <code class="Cd">dev.ice.#.pba_number</code>
+ <br/>
+ <code class="Cd">dev.ice.#.hw.mac.*</code></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The <code class="Nm">ice</code> driver provides support for any
+ PCI Express adapter or LOM (LAN On Motherboard) in the Intel Ethernet 800
+ Series.</p>
+<p class="Pp">The following topics are covered in this manual:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li><a class="Sx" href="#Features">Features</a></li>
+ <li><a class="Sx" href="#Dynamic_Device_Personalization">Dynamic Device
+ Personalization</a></li>
+ <li><a class="Sx" href="#Jumbo_Frames">Jumbo Frames</a></li>
+ <li><a class="Sx" href="#Remote_Direct_Memory_Access">Remote Direct Memory
+ Access</a></li>
+ <li><a class="Sx" href="#RDMA_Monitoring">RDMA Monitoring</a></li>
+ <li><a class="Sx" href="#Data_Center_Bridging">Data Center Bridging</a></li>
+ <li><a class="Sx" href="#L3_QoS_Mode">L3 QoS Mode</a></li>
+ <li><a class="Sx" href="#Firmware_Link_Layer_Discovery_Protocol_Agent">Firmware
+ Link Layer Discovery Protocol Agent</a></li>
+ <li><a class="Sx" href="#Link_Level_Flow_Control">Link-Level Flow
+ Control</a></li>
+ <li><a class="Sx" href="#Forward_Error_Correction">Forward Error
+ Correction</a></li>
+ <li><a class="Sx" href="#Speed_and_Duplex_Configuration">Speed and Duplex
+ Configuration</a></li>
+ <li><a class="Sx" href="#Disabling_physical_link_when_the_interface_is_brought_down">Disabling
+ physical link when the interface is brought down</a></li>
+ <li><a class="Sx" href="#Firmware_Logging">Firmware Logging</a></li>
+ <li><a class="Sx" href="#Debug_Dump">Debug Dump</a></li>
+ <li><a class="Sx" href="#Debugging_PHY_Statistics">Debugging PHY
+ Statistics</a></li>
+ <li><a class="Sx" href="#Transmit_Balancing">Transmit Balancing</a></li>
+ <li><a class="Sx" href="#Thermal_Monitoring">Thermal Monitoring</a></li>
+ <li><a class="Sx" href="#Network_Memory_Buffer_Allocation">Network Memory
+ Buffer Allocation</a></li>
+ <li><a class="Sx" href="#Additional_Utilities">Additional Utilities</a></li>
+ <li><a class="Sx" href="#Optics_and_auto_negotiation">Optics and
+ auto-negotiation</a></li>
+ <li><a class="Sx" href="#PCI_Express_Slot_Bandwidth">PCI-Express Slot
+ Bandwidth</a></li>
+ <li><a class="Sx" href="#HARDWARE">HARDWARE</a></li>
+ <li><a class="Sx" href="#LOADER_TUNABLES">LOADER TUNABLES</a></li>
+ <li><a class="Sx" href="#SYSCTL_VARIABLES">SYSCTL VARIABLES</a></li>
+ <li><a class="Sx" href="#INTERRUPT_STORMS">INTERRUPT STORMS</a></li>
+ <li><a class="Sx" href="#IOVCTL_OPTIONS">IOVCTL OPTIONS</a></li>
+ <li><a class="Sx" href="#SUPPORT">SUPPORT</a></li>
+ <li><a class="Sx" href="#SEE_ALSO">SEE ALSO</a></li>
+ <li><a class="Sx" href="#HISTORY">HISTORY</a></li>
+</ul>
+<section class="Ss">
+<h2 class="Ss" id="Features"><a class="permalink" href="#Features">Features</a></h2>
+<p class="Pp">Support for Jumbo Frames is provided via the interface MTU
+ setting. Selecting an MTU larger than 1500 bytes with the
+ <a class="Xr">ifconfig(8)</a> utility configures the adapter to receive and
+ transmit Jumbo Frames. The maximum MTU size for Jumbo Frames is 9706. For
+ more information, see the <a class="Sx" href="#Jumbo_Frames">Jumbo
+ Frames</a> section.</p>
+<p class="Pp">This driver version supports VLANs. For information on enabling
+ VLANs, see <a class="Xr">vlan(4)</a>. For additional information on
+ configuring VLANs, see <a class="Xr">ifconfig(8)</a>'s &#x201C;VLAN
+ Parameters&#x201D; section.</p>
+<p class="Pp">Offloads are also controlled via the interface, for instance,
+ checksumming for both IPv4 and IPv6 can be set and unset, TSO4 and/or TSO6,
+ and finally LRO can be set and unset.</p>
+<p class="Pp">For more information on configuring this device, see
+ <a class="Xr">ifconfig(8)</a>.</p>
+<p class="Pp">The associated Virtual Function (VF) driver for this driver is
+ <a class="Xr">iavf(4)</a>.</p>
+<p class="Pp">The associated RDMA driver for this driver is
+ <a class="Xr">irdma(4)</a>.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Dynamic_Device_Personalization"><a class="permalink" href="#Dynamic_Device_Personalization">Dynamic
+ Device Personalization</a></h2>
+<p class="Pp">The DDP package loads during device initialization. The driver
+ looks for the <b class="Sy">ice_ddp</b> module and checks that it contains a
+ valid DDP package file.</p>
+<p class="Pp">If the driver is unable to load the DDP package, the device will
+ enter Safe Mode. Safe Mode disables advanced and performance features and
+ supports only basic traffic and minimal functionality, such as updating the
+ NVM or downloading a new driver or DDP package. Safe Mode only applies to
+ the affected physical function and does not impact any other PFs. See the
+ &#x201C;Intel Ethernet Adapters and Devices User Guide&#x201D; for more
+ details on DDP and Safe Mode.</p>
+<p class="Pp">If issues are encountered with the DDP package file, an updated
+ driver or <b class="Sy">ice_ddp</b> module may need to be downloaded. See
+ the log messages for more information.</p>
+<p class="Pp">The DDP package cannot be updated if any PF drivers are already
+ loaded. To overwrite a package, unload all PFs and then reload the driver
+ with the new package.</p>
+<p class="Pp">Only one DDP package can be used per driver, even if more than one
+ installed device uses the driver.</p>
+<p class="Pp">Only the first loaded PF per device can download a package for
+ that device.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Jumbo_Frames"><a class="permalink" href="#Jumbo_Frames">Jumbo
+ Frames</a></h2>
+<p class="Pp">Jumbo Frames support is enabled by changing the Maximum
+ Transmission Unit (MTU) to a value larger than the default value of
+ 1500.</p>
+<p class="Pp">Use <a class="Xr">ifconfig(8)</a> to increase the MTU size.</p>
+<p class="Pp">The maximum MTU setting for jumbo frames is 9706. This corresponds
+ to the maximum jumbo frame size of 9728 bytes.</p>
+<p class="Pp">This driver will attempt to use multiple page sized buffers to
+ receive each jumbo packet. This should help to avoid buffer starvation
+ issues when allocating receive packets.</p>
+<p class="Pp">Packet loss may have a greater impact on throughput when jumbo
+ frames are in use. If a drop in performance is observed after enabling jumbo
+ frames, enabling flow control may mitigate the issue.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Remote_Direct_Memory_Access"><a class="permalink" href="#Remote_Direct_Memory_Access">Remote
+ Direct Memory Access</a></h2>
+<p class="Pp">Remote Direct Memory Access, or RDMA, allows a network device to
+ transfer data directly to and from application memory on another system,
+ increasing throughput and lowering latency in certain networking
+ environments.</p>
+<p class="Pp">The ice driver supports both the iWARP (Internet Wide Area RDMA
+ Protocol) and RoCEv2 (RDMA over Converged Ethernet) protocols. The major
+ difference is that iWARP performs RDMA over TCP, while RoCEv2 uses UDP.</p>
+<p class="Pp">Devices based on the Intel Ethernet 800 Series do not support RDMA
+ when operating in multiport mode with more than 4 ports.</p>
+<p class="Pp">For detailed installation and configuration information for RDMA,
+ see <a class="Xr">irdma(4)</a>.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="RDMA_Monitoring"><a class="permalink" href="#RDMA_Monitoring">RDMA
+ Monitoring</a></h2>
+<p class="Pp">For debugging/testing purposes, a sysctl can be used to set up a
+ mirroring interface on a port. The interface can receive mirrored RDMA
+ traffic for packet analysis tools like <a class="Xr">tcpdump(1)</a>. This
+ mirroring may impact performance.</p>
+<p class="Pp">To use RDMA monitoring, more MSI-X interrupts may need to be
+ reserved. Before the <code class="Nm">ice</code> driver loads, configure the
+ following tunable provided by <a class="Xr">iflib(4)</a>:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>dev.ice.&lt;interface #&gt;.iflib.use_extra_msix_vectors=4</pre>
+</div>
+<p class="Pp">The number of extra MSI-X interrupt vectors may need to be
+ adjusted.</p>
+<p class="Pp">To create/delete the interface:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.create_interface=1
+sysctl dev.ice.&lt;interface #&gt;.delete_interface=1</pre>
+</div>
+<p class="Pp">The mirrored interface receives both LAN and RDMA traffic.
+ Additional filters can be configured in tcpdump.</p>
+<p class="Pp">To differentiate the mirrored interface from the primary
+ interface, the network interface naming convention is:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>&lt;driver name&gt;&lt;port number&gt;&lt;modifier&gt;&lt;modifier unit number&gt;</pre>
+</div>
+<p class="Pp">For example, &#x201C;<code class="Li">ice0m0</code>&#x201D; is the
+ first mirroring interface on
+ &#x201C;<code class="Li">ice0</code>&#x201D;.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Data_Center_Bridging"><a class="permalink" href="#Data_Center_Bridging">Data
+ Center Bridging</a></h2>
+<p class="Pp">Data Center Bridging (DCB) is a configuration Quality of Service
+ implementation in hardware. It uses the VLAN priority tag (802.1p) to filter
+ traffic. That means that there are 8 different priorities that traffic can
+ be filtered into. It also enables priority flow control (802.1Qbb) which can
+ limit or eliminate the number of dropped packets during network stress.
+ Bandwidth can be allocated to each of these priorities, which is enforced at
+ the hardware level (802.1Qaz).</p>
+<p class="Pp">DCB is normally configured on the network using the DCBX protocol
+ (802.1Qaz), a specialization of LLDP (802.1AB). The
+ <code class="Nm">ice</code> driver supports the following mutually exclusive
+ variants of DCBX support:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li>Firmware-based LLDP Agent</li>
+ <li>Software-based LLDP Agent</li>
+</ul>
+<p class="Pp">In firmware-based mode, firmware intercepts all LLDP traffic and
+ handles DCBX negotiation transparently for the user. In this mode, the
+ adapter operates in &#x201C;willing&#x201D; DCBX mode, receiving DCB
+ settings from the link partner (typically a switch). The local user can only
+ query the negotiated DCB configuration. For information on configuring DCBX
+ parameters on a switch, please consult the switch manufacturer'ss
+ documentation.</p>
+<p class="Pp">In software-based mode, LLDP traffic is forwarded to the network
+ stack and user space, where a software agent can handle it. In this mode,
+ the adapter can operate in &#x201C;nonwilling&#x201D; DCBX mode and DCB
+ configuration can be both queried and set locally. This mode requires the
+ FW-based LLDP Agent to be disabled.</p>
+<p class="Pp">Firmware-based mode and software-based mode are controlled by the
+ &#x201C;fw_lldp_agent&#x201D; sysctl. Refer to the Firmware Link Layer
+ Discovery Protocol Agent section for more information.</p>
+<p class="Pp">Link-level flow control and priority flow control are mutually
+ exclusive. The ice driver will disable link flow control when priority flow
+ control is enabled on any traffic class (TC). It will disable priority flow
+ control when link flow control is enabled.</p>
+<p class="Pp">To enable/disable priority flow control in software-based DCBX
+ mode:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.pfc=1 (or 0 to disable)</pre>
+</div>
+<p class="Pp">Enhanced Transmission Selection (ETS) allows bandwidth to be
+ assigned to certain TCs, to help ensure traffic reliability. To view the
+ assigned ETS configuration, use the following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.ets_min_rate</pre>
+</div>
+<p class="Pp">To set the minimum ETS bandwidth per TC, separate the values by
+ commas. All values must add up to 100. For example, to set all TCs to a
+ minimum bandwidth of 10% and TC 7 to 30%, use the following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.ets_min_rate=10,10,10,10,10,10,10,30</pre>
+</div>
+<p class="Pp">To set the User Priority (UP) to a TC mapping for a port, separate
+ the values by commas. For example, to map UP 0 and 1 to TC 0, UP 2 and 3 to
+ TC 1, UP 4 and 5 to TC 2, and UP 6 and 7 to TC 3, use the following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.up2tc_map=0,0,1,1,2,2,3,3</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="L3_QoS_Mode"><a class="permalink" href="#L3_QoS_Mode">L3 QoS
+ Mode</a></h2>
+<p class="Pp">The <code class="Nm">ice</code> driver supports setting DSCP-based
+ Layer 3 Quality of Service (L3 QoS) in the PF driver. The driver initializes
+ in L2 QoS mode by default; L3 QoS is disabled by default. Use the following
+ sysctl to enable or disable L3 QoS:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.pfc_mode=1 (or 0 to disable)</pre>
+</div>
+<p class="Pp">If L3 QoS mode is disabled, it returns to L2 QoS mode.</p>
+<p class="Pp">To map a DSCP value to a traffic class, separate the values by
+ commas. For example, to map DSCPs 0-3 and DSCP 8 to DCB TCs 0-3 and 4,
+ respectively:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.dscp2tc_map.0-7=0,1,2,3,0,0,0,0
+sysctl dev.ice.&lt;interface #&gt;.dscp2tc_map.8-15=4,0,0,0,0,0,0,0</pre>
+</div>
+<p class="Pp">To change the DSCP mapping back to the default traffic class, set
+ all the values back to 0.</p>
+<p class="Pp">To view the currently configured mappings, use the following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.dscp2tc_map</pre>
+</div>
+<p class="Pp">L3 QoS mode is not available when FW-LLDP is enabled.</p>
+<p class="Pp">FW-LLDP cannot be enabled if L3 QoS mode is active.</p>
+<p class="Pp">Disable FW-LLDP before switching to L3 QoS mode.</p>
+<p class="Pp">Refer to the
+ <a class="Sx" href="#Firmware_Link_Layer_Discovery_Protocol_Agent">Firmware
+ Link Layer Discovery Protocol Agent</a> section in this README for more
+ information on disabling FW-LLDP.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Firmware_Link_Layer_Discovery_Protocol_Agent"><a class="permalink" href="#Firmware_Link_Layer_Discovery_Protocol_Agent">Firmware
+ Link Layer Discovery Protocol Agent</a></h2>
+<p class="Pp">Use sysctl to change FW-LLDP settings. The FW-LLDP setting is per
+ port and persists across boots.</p>
+<p class="Pp">To enable the FW-LLDP Agent:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.fw_lldp_agent=1</pre>
+</div>
+<p class="Pp">To disable the FW-LLDP Agebt:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.fw_lldp_agent=0</pre>
+</div>
+<p class="Pp">To check the current LLDP setting:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.fw_lldp_agent</pre>
+</div>
+<p class="Pp">The UEFI HII LLDP Agent attribute must be enabled for this setting
+ to take effect. If the &#x201C;LLDP AGENT&#x201D; attribute is set to
+ disabled, the FW-LLDP Agent cannot be enabled from the driver.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Link-Level_Flow_Control"><a class="permalink" href="#Link-Level_Flow_Control">Link-Level
+ Flow Control</a></h2>
+<p class="Pp">Ethernet Flow Control (IEEE 802.3x or LFC) can be configured with
+ <a class="Xr">sysctl(8)</a> to enable receiving and transmitting pause
+ frames for <code class="Nm">ice</code>. When transmit is enabled, pause
+ frames are generated when the receive packet buffer crosses a predefined
+ threshold. When receive is enabled, the transmit unit will halt for the time
+ delay specified in the firmware when a pause frame is received.</p>
+<p class="Pp">Flow Control is disabled by default.</p>
+<p class="Pp">Use sysctl to change the flow control settings for a single
+ interface without reloading the driver:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.fc</pre>
+</div>
+<p class="Pp">The available values for flow control are:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>0 = Disable flow control
+1 = Enable Rx pause
+2 = Enable Tx pause
+3 = Enable Rx and Tx pause</pre>
+</div>
+<p class="Pp">Verify that link flow control was negotiated on the link by
+ checking the interface entry in <a class="Xr">ifconfig(8)</a> and looking
+ for the flags &#x201C;txpause&#x201D; and/or &#x201C;rxpause&#x201D; in the
+ &#x201C;media&#x201D; status.</p>
+<p class="Pp">The <code class="Nm">ice</code> driver requires flow control on
+ both the port and link partner. If flow control is disabled on one of the
+ sides, the port may appear to hang on heavy traffic.</p>
+<p class="Pp">For more information on priority flow control, refer to the
+ <a class="Sx" href="#Data_Center_Bridging">Data Center Bridging</a>
+ section.</p>
+<p class="Pp">The VF driver does not have access to flow control. It must be
+ managed from the host side.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Forward_Error_Correction"><a class="permalink" href="#Forward_Error_Correction">Forward
+ Error Correction</a></h2>
+<p class="Pp">Forward Error Correction (FEC) improves link stability but
+ increases latency. Many high quality optics, direct attach cables, and
+ backplane channels can provide a stable link without FEC.</p>
+<p class="Pp">For devices to benefit from this feature, link partners must have
+ FEC enabled.</p>
+<p class="Pp">If the <var class="Va">allow_no_fec_modules_in_auto</var> sysctl
+ is enabled Auto FEC negotiation will include
+ &#x201C;<span class="No">FEC</span>&#x201D; in case the link partner does
+ not have FEC enabled or is not FEC capable:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.allow_no_fec_modules_in_auto=1</pre>
+</div>
+<p class="Pp">NOTE: This flag is currently not supported on the Intel Ethernet
+ 830 Series.</p>
+<p class="Pp">To show the current FEC settings that are negotiated on the
+ link:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.negotiated_fec</pre>
+</div>
+<p class="Pp">To view or set the FEC setting that was requested on the link:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.requested_fec</pre>
+</div>
+<p class="Pp">To see the valid FEC modes for the link:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl -d dev.ice.&lt;interface #&gt;.requested_fec</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Speed_and_Duplex_Configuration"><a class="permalink" href="#Speed_and_Duplex_Configuration">Speed
+ and Duplex Configuration</a></h2>
+<p class="Pp">The speed and duplex settings cannot be hard set.</p>
+<p class="Pp">To have the device change the speeds it will use in
+ auto-negotiation or force link with:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.advertise_speed=&lt;mask&gt;</pre>
+</div>
+<p class="Pp">Supported speeds will vary by device. Depending on the speeds the
+ device supports, valid bits used in a speed mask could include:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>0x0 - Auto
+0x2 - 100 Mbps
+0x4 - 1 Gbps
+0x8 - 2.5 Gbps
+0x10 - 5 Gbps
+0x20 - 10 Gbps
+0x80 - 25 Gbps
+0x100 - 40 Gbps
+0x200 - 50 Gbps
+0x400 - 100 Gbps
+0x800 - 200 Gbps</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Disabling_physical_link_when_the_interface_is_brought_down"><a class="permalink" href="#Disabling_physical_link_when_the_interface_is_brought_down">Disabling
+ physical link when the interface is brought down</a></h2>
+<p class="Pp">When the <var class="Va">link_active_on_if_down</var> sysctl is
+ set to &#x201C;0&#x201D;, the port's link will go down when the interface is
+ brought down. By default, link will stay up.</p>
+<p class="Pp">To disable link when the interface is down:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.link_active_on_if_down=0</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Firmware_Logging"><a class="permalink" href="#Firmware_Logging">Firmware
+ Logging</a></h2>
+<p class="Pp">The <code class="Nm">ice</code> driver allows for the generation
+ of firmware logs for supported categories of events, to help debug issues
+ with Customer Support. Refer to the &#x201C;Intel Ethernet Adapters and
+ Devices User Guide&#x201D; for an overview of this feature and additional
+ tips.</p>
+<p class="Pp">At a high level, to capture a firmware log:</p>
+<ol class="Bl-enum Bl-compact">
+ <li>Set the configuration for the firmware log.</li>
+ <li>Perform the necessary steps to reproduce the issue.</li>
+ <li>Capture the firmware log.</li>
+ <li>Stop capturing the firmware log.</li>
+ <li>Reset the firmware log settings as needed.</li>
+ <li>Work with Customer Support to debug the issue.</li>
+</ol>
+<p class="Pp">NOTE: Firmware logs are generated in a binary format and must be
+ decoded by Customer Support. Information collected is related only to
+ firmware and hardware for debug purposes.</p>
+<p class="Pp">Once the driver is loaded, it will create the
+ <var class="Va">fw_log</var> sysctl node under the debug section of the
+ driver's sysctl list. The driver groups these events into categories, called
+ &#x201C;modules&#x201D;. Supported modules include:</p>
+<p class="Pp"></p>
+<div class="Bd-indent">
+<dl class="Bl-tag Bl-compact">
+ <dt id="general"><var class="Va">general</var></dt>
+ <dd>General (Bit 0)</dd>
+ <dt id="ctrl"><var class="Va">ctrl</var></dt>
+ <dd>Control (Bit 1)</dd>
+ <dt id="link"><var class="Va">link</var></dt>
+ <dd>Link Management (Bit 2)</dd>
+ <dt id="link_topo"><var class="Va">link_topo</var></dt>
+ <dd>Link Topology Detection (Bit 3)</dd>
+ <dt id="dnl"><var class="Va">dnl</var></dt>
+ <dd>Link Control Technology (Bit 4)</dd>
+ <dt id="i2c"><var class="Va">i2c</var></dt>
+ <dd>I2C (Bit 5)</dd>
+ <dt id="sdp"><var class="Va">sdp</var></dt>
+ <dd>SDP (Bit 6)</dd>
+ <dt id="mdio"><var class="Va">mdio</var></dt>
+ <dd>MDIO (Bit 7)</dd>
+ <dt id="adminq"><var class="Va">adminq</var></dt>
+ <dd>Admin Queue (Bit 8)</dd>
+ <dt id="hdma"><var class="Va">hdma</var></dt>
+ <dd>Host DMA (Bit 9)</dd>
+ <dt id="lldp"><var class="Va">lldp</var></dt>
+ <dd>LLDP (Bit 10)</dd>
+ <dt id="dcbx"><var class="Va">dcbx</var></dt>
+ <dd>DCBx (Bit 11)</dd>
+ <dt id="dcb"><var class="Va">dcb</var></dt>
+ <dd>DCB (Bit 12)</dd>
+ <dt id="xlr"><var class="Va">xlr</var></dt>
+ <dd>XLR (function-level resets; Bit 13)</dd>
+ <dt id="nvm"><var class="Va">nvm</var></dt>
+ <dd>NVM (Bit 14)</dd>
+ <dt id="auth"><var class="Va">auth</var></dt>
+ <dd>Authentication (Bit 15)</dd>
+ <dt id="vpd"><var class="Va">vpd</var></dt>
+ <dd>Vital Product Data (Bit 16)</dd>
+ <dt id="iosf"><var class="Va">iosf</var></dt>
+ <dd>Intel On-Chip System Fabric (Bit 17)</dd>
+ <dt id="parser"><var class="Va">parser</var></dt>
+ <dd>Parser (Bit 18)</dd>
+ <dt id="sw"><var class="Va">sw</var></dt>
+ <dd>Switch (Bit 19)</dd>
+ <dt id="scheduler"><var class="Va">scheduler</var></dt>
+ <dd>Scheduler (Bit 20)</dd>
+ <dt id="txq"><var class="Va">txq</var></dt>
+ <dd>TX Queue Management (Bit 21)</dd>
+ <dt id="acl"><var class="Va">acl</var></dt>
+ <dd>ACL (Access Control List; Bit 22)</dd>
+ <dt id="post"><var class="Va">post</var></dt>
+ <dd>Post (Bit 23)</dd>
+ <dt id="watchdog"><var class="Va">watchdog</var></dt>
+ <dd>Watchdog (Bit 24)</dd>
+ <dt id="task_dispatch"><var class="Va">task_dispatch</var></dt>
+ <dd>Task Dispatcher (Bit 25)</dd>
+ <dt id="mng"><var class="Va">mng</var></dt>
+ <dd>Manageability (Bit 26)</dd>
+ <dt id="synce"><var class="Va">synce</var></dt>
+ <dd>SyncE (Bit 27)</dd>
+ <dt id="health"><var class="Va">health</var></dt>
+ <dd>Health (Bit 28)</dd>
+ <dt id="tsdrv"><var class="Va">tsdrv</var></dt>
+ <dd>Time Sync (Bit 29)</dd>
+ <dt id="pfreg"><var class="Va">pfreg</var></dt>
+ <dd>PF Registration (Bit 30)</dd>
+ <dt id="mdlver"><var class="Va">mdlver</var></dt>
+ <dd>Module Version (Bit 31)</dd>
+</dl>
+</div>
+<p class="Pp">The verbosity level of the firmware logs can be modified. It is
+ possible to set only one log level per module, and each level includes the
+ verbosity levels lower than it. For instance, setting the level to
+ &#x201C;normal&#x201D; will also log warning and error messages. Available
+ verbosity levels are:</p>
+<p class="Pp"></p>
+<ul class="Bl-item Bd-indent Bl-compact">
+ <li>0 = none</li>
+ <li>1 = error</li>
+ <li>2 = warning</li>
+ <li>3 = normal</li>
+ <li>4 = verbose</li>
+</ul>
+<p class="Pp">To set the desired verbosity level for a module, use the following
+ sysctl command and then register it:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.debug.fw_log.severity.&lt;module&gt;=&lt;level&gt;</pre>
+</div>
+<p class="Pp">For example:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.0.debug.fw_log.severity.link=1
+sysctl dev.ice.0.debug.fw_log.severity.link_topo=2
+sysctl dev.ice.0.debug.fw_log.register=1</pre>
+</div>
+<p class="Pp">To log firmware messages after booting, but before the driver
+ initializes, use <a class="Xr">kenv(1)</a> to set the tunable. The
+ <var class="Va">on_load</var> setting tells the device to register the
+ variable as soon as possible during driver load. For example:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>kenv dev.ice.0.debug.fw_log.severity.link=1
+kenv dev.ice.0.debug.fw_log.severity.link_topo=2
+kenv dev.ice.0.debug.fw_log.on_load=1</pre>
+</div>
+<p class="Pp">To view the firmware logs and redirect them to a file, use the
+ following command:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>dmesg &gt; log_output</pre>
+</div>
+<p class="Pp">NOTE: Logging a large number of modules or too high of a verbosity
+ level will add extraneous messages to dmesg and could hinder debug
+ efforts.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Debug_Dump"><a class="permalink" href="#Debug_Dump">Debug
+ Dump</a></h2>
+<p class="Pp">Intel Ethernet 800 Series devices support debug dump, which allows
+ gathering of runtime register values from the firmware for
+ &#x201C;clusters&#x201D; of events and then write the results to a single
+ dump file, for debugging complicated issues in the field.</p>
+<p class="Pp">This debug dump contains a snapshot of the device and its existing
+ hardware configuration, such as switch tables, transmit scheduler tables,
+ and other information. Debug dump captures the current state of the
+ specified cluster(s) and is a stateless snapshot of the whole device.</p>
+<p class="Pp">NOTE: Like with firmware logs, the contents of the debug dump are
+ not human-readable. Work with Customer Support to decode the file.</p>
+<p class="Pp">Debug dump is per device, not per PF.</p>
+<p class="Pp">Debug dump writes all information to a single file.</p>
+<p class="Pp">To generate a debug dump file in <span class="Ux">FreeBSD</span>
+ do the following:</p>
+<p class="Pp">Specify the cluster(s) to include in the dump file, using a
+ bitmask and the following command:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.debug.dump.clusters=&lt;bitmask&gt;</pre>
+</div>
+<p class="Pp">To print the complete cluster bitmask and parameter list to the
+ screen, pass the <code class="Fl">-d</code> argument. For example:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl -d dev.ice.0.debug.dump.clusters</pre>
+</div>
+<p class="Pp">Possible bitmask values for <var class="Va">clusters</var>
+ are:</p>
+<ul class="Bl-bullet Bl-compact">
+ <li>0 - Dump all clusters (only supported on Intel Ethernet E810 Series and
+ Intel Ethernet E830 Series)</li>
+ <li>0x1 - Switch</li>
+ <li>0x2 - ACL</li>
+ <li>0x4 - Tx Scheduler</li>
+ <li>0x8 - Profile Configuration</li>
+ <li>0x20 - Link</li>
+ <li>0x80 - DCB</li>
+ <li>0x100 - L2P</li>
+ <li>0x400000 - Manageability Transactions (only supported on Intel Ethernet
+ E810 Series)</li>
+</ul>
+<p class="Pp">For example, to dump the Switch, DCB, and L2P clusters, use the
+ following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.0.debug.dump.clusters=0x181</pre>
+</div>
+<p class="Pp">To dump all clusters, use the following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.0.debug.dump.clusters=0</pre>
+</div>
+<p class="Pp">NOTE: Using 0 will skip Manageability Transactions data.</p>
+<p class="Pp">If a single cluster is not specified, the driver will dump all
+ clusters to a single file. Issue the debug dump command, using the
+ following:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl -b dev.ice.&lt;interface #&gt;.debug.dump.dump=1 &gt; dump.bin</pre>
+</div>
+<p class="Pp">NOTE: The driver will not receive the command if the sysctl is not
+ set to &#x201C;1&#x201D;.</p>
+<p class="Pp">Replace &#x201C;dump.bin&#x201D; above with the preferred file
+ name.</p>
+<p class="Pp">To clear the <var class="Va">clusters</var> mask before a
+ subsequent debug dump and then do the dump:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.0.debug.dump.clusters=0
+sysctl dev.ice.0.debug.dump.dump=1</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Debugging_PHY_Statistics"><a class="permalink" href="#Debugging_PHY_Statistics">Debugging
+ PHY Statistics</a></h2>
+<p class="Pp">The ice driver supports the ability to obtain the values of the
+ PHY registers from Intel(R) Ethernet 810 Series devices in order to debug
+ link and connection issues during runtime.</p>
+<p class="Pp">The driver provides information about:</p>
+<ul class="Bl-bullet">
+ <li>Rx and Tx Equalization parameters</li>
+ <li>RS FEC correctable and uncorrectable block counts</li>
+</ul>
+<p class="Pp">Use the following sysctl to read the PHY registers:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.debug.phy_statistics</pre>
+</div>
+<p class="Pp">NOTE: The contents of the registers are not human-readable. Like
+ with firmware logs and debug dump, work with Customer Support to decode the
+ file.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Transmit_Balancing"><a class="permalink" href="#Transmit_Balancing">Transmit
+ Balancing</a></h2>
+<p class="Pp">Some Intel(R) Ethernet 800 Series devices allow for enabling a
+ transmit balancing feature to improve transmit performance under certain
+ conditions. When enabled, this feature should provide more consistent
+ transmit performance across queues and/or PFs and VFs.</p>
+<p class="Pp">By default, transmit balancing is disabled in the NVM. To enable
+ this feature, use one of the following to persistently change the setting
+ for the device:</p>
+<ul class="Bl-bullet">
+ <li>Use the Ethernet Port Configuration Tool (EPCT) to enable the
+ <var class="Va">tx_balancing</var> option. Refer to the EPCT readme for
+ more information.</li>
+ <li>Enable the Transmit Balancing device setting in UEFI HII.</li>
+</ul>
+<p class="Pp">When the driver loads, it reads the transmit balancing setting
+ from the NVM and configures the device accordingly.</p>
+<p class="Pp">NOTE: The user selection for transmit balancing in EPCT or HII is
+ persistent across reboots. The system must be rebooted for the selected
+ setting to take effect.</p>
+<p class="Pp">This setting is device wide.</p>
+<p class="Pp">The driver, NVM, and DDP package must all support this
+ functionality to enable the feature.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Thermal_Monitoring"><a class="permalink" href="#Thermal_Monitoring">Thermal
+ Monitoring</a></h2>
+<p class="Pp">Intel(R) Ethernet 810 Series and Intel(R) Ethernet 830 Series
+ devices can display temperature data (in degrees Celsius) via:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sysctl dev.ice.&lt;interface #&gt;.temp</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Network_Memory_Buffer_Allocation"><a class="permalink" href="#Network_Memory_Buffer_Allocation">Network
+ Memory Buffer Allocation</a></h2>
+<p class="Pp"><span class="Ux">FreeBSD</span> may have a low number of network
+ memory buffers (mbufs) by default. If the number of mbufs available is too
+ low, it may cause the driver to fail to initialize and/or cause the system
+ to become unresponsive. Check to see if the system is mbuf-starved by
+ running <code class="Ic">netstat</code> <code class="Fl">-m</code>. Increase
+ the number of mbufs by editing the lines below in
+ <span class="Pa">/etc/sysctl.conf</span>:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>kern.ipc.nmbclusters
+kern.ipc.nmbjumbop
+kern.ipc.nmbjumbo9
+kern.ipc.nmbjumbo16
+kern.ipc.nmbufs</pre>
+</div>
+<p class="Pp">The amount of memory that should be allocated is system specific,
+ and may require some trial and error. Also, increasing the following in
+ <span class="Pa">/etc/sysctl.conf</span> could help increase network
+ performance:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>kern.ipc.maxsockbuf
+net.inet.tcp.sendspace
+net.inet.tcp.recvspace
+net.inet.udp.maxdgram
+net.inet.udp.recvspace</pre>
+</div>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Additional_Utilities"><a class="permalink" href="#Additional_Utilities">Additional
+ Utilities</a></h2>
+<p class="Pp">There are additional tools available from Intel to help configure
+ and update the adapters covered by this driver. These tools can be
+ downloaded directly from Intel at
+ <a class="Lk" href="https://downloadcenter.intel.com">https://downloadcenter.intel.com</a>,
+ by searching for their names:</p>
+<ul class="Bl-bullet">
+ <li id="Ethernet">To change the behavior of the QSFP28 ports on E810-C
+ adapters, use the Intel
+ <a class="permalink" href="#Ethernet"><b class="Sy">Ethernet Port
+ Configuration Tool - FreeBSD</b></a>.</li>
+ <li id="Non-Volatile">To update the firmware on an adapter, use the Intel
+ <a class="permalink" href="#Non-Volatile"><b class="Sy">Non-Volatile
+ Memory (NVM) Update Utility for Intel Ethernet Network Adapters E810
+ series - FreeBSD</b></a></li>
+</ul>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Optics_and_auto-negotiation"><a class="permalink" href="#Optics_and_auto-negotiation">Optics
+ and auto-negotiation</a></h2>
+<p class="Pp">Modules based on 100GBASE-SR4, active optical cable (AOC), and
+ active copper cable (ACC) do not support auto-negotiation per the IEEE
+ specification. To obtain link with these modules, auto-negotiation must be
+ turned off on the link partner's switch ports.</p>
+<p class="Pp">Note that adapters also support all passive and active limiting
+ direct attach cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4
+ specifications.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="PCI-Express_Slot_Bandwidth"><a class="permalink" href="#PCI-Express_Slot_Bandwidth">PCI-Express
+ Slot Bandwidth</a></h2>
+<p class="Pp">Some PCIe x8 slots are actually configured as x4 slots. These
+ slots have insufficient bandwidth for full line rate with dual port and quad
+ port devices. In addition, if a PCIe v4.0 or v3.0-capable adapter is placed
+ into into a PCIe v2.x slot, full bandwidth will not be possible.</p>
+<p class="Pp">The driver detects this situation and writes the following message
+ in the system log:</p>
+<div class="Bd Pp Bd-indent">PCI-Express bandwidth available for this device may
+ be insufficient for optimal performance. Please move the device to a different
+ PCI-e link with more lanes and/or higher transfer rate.</div>
+<p class="Pp">If this error occurs, moving the adapter to a true PCIe x8 or x16
+ slot will resolve the issue. For best performance, install devices in the
+ following PCI slots:</p>
+<ul class="Bl-bullet">
+ <li>Any 100Gbps-capable Intel(R) Ethernet 800 Series device: Install in a PCIe
+ v4.0 x8 or v3.0 x16 slot</li>
+ <li>A 200Gbps-capable Intel(R) Ethernet 830 Series device: Install in a PCIe
+ v5.0 x8 or v4.0 x16 slot</li>
+</ul>
+<p class="Pp">For questions related to hardware requirements, refer to the
+ documentation supplied with the adapter.</p>
+</section>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1>
+<p class="Pp">The <code class="Nm">ice</code> driver supports the following
+ Intel 800 series 1Gb to 200Gb Ethernet controllers:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li>Intel Ethernet Controller E810-C</li>
+ <li>Intel Ethernet Controller E810-XXV</li>
+ <li>Intel Ethernet Connection E822-C</li>
+ <li>Intel Ethernet Connection E822-L</li>
+ <li>Intel Ethernet Connection E823-C</li>
+ <li>Intel Ethernet Connection E823-L</li>
+ <li>Intel Ethernet Connection E825-C</li>
+ <li>Intel Ethernet Connection E830-C</li>
+ <li>Intel Ethernet Connection E830-CC</li>
+ <li>Intel Ethernet Connection E830-L</li>
+ <li>Intel Ethernet Connection E830-XXV</li>
+ <li>Intel Ethernet Connection E835-C</li>
+ <li>Intel Ethernet Connection E835-CC</li>
+ <li>Intel Ethernet Connection E835-L</li>
+ <li>Intel Ethernet Connection E835-XXV</li>
+</ul>
+<p class="Pp">The <code class="Nm">ice</code> driver supports some adapters in
+ this series with SFP28/QSFP28 cages which have firmware that requires that
+ Intel qualified modules are used; these qualified modules are listed below.
+ This qualification check cannot be disabled by the driver.</p>
+<p class="Pp">The <code class="Nm">ice</code> driver supports 100Gb Ethernet
+ adapters with these QSFP28 modules:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li>Intel 100G QSFP28 100GBASE-SR4 E100GQSFPSR28SRX</li>
+ <li>Intel 100G QSFP28 100GBASE-SR4 SPTMBP1PMCDF</li>
+ <li>Intel 100G QSFP28 100GBASE-CWDM4 SPTSBP3CLCCO</li>
+ <li>Intel 100G QSFP28 100GBASE-DR SPTSLP2SLCDF</li>
+</ul>
+<p class="Pp">The <code class="Nm">ice</code> driver supports 25Gb and 10Gb
+ Ethernet adapters with these SFP28 modules:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li>Intel 10G/25G SFP28 25GBASE-SR E25GSFP28SR</li>
+ <li>Intel 25G SFP28 25GBASE-SR E25GSFP28SRX (Extended Temp)</li>
+ <li>Intel 25G SFP28 25GBASE-LR E25GSFP28LRX (Extended Temp)</li>
+</ul>
+<p class="Pp">The <code class="Nm">ice</code> driver supports 10Gb and 1Gb
+ Ethernet adapters with these SFP+ modules:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li>Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSR</li>
+ <li>Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSRG1P5</li>
+ <li>Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSRG2P5</li>
+ <li>Intel 10G SFP+ 10GBASE-SR E10GSFPSRX (Extended Temp)</li>
+ <li>Intel 1G/10G SFP+ 10GBASE-LR E10GSFPLR</li>
+</ul>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="LOADER_TUNABLES"><a class="permalink" href="#LOADER_TUNABLES">LOADER
+ TUNABLES</a></h1>
+<p class="Pp">Tunables can be set at the <a class="Xr">loader(8)</a> prompt
+ before booting the kernel or stored in <a class="Xr">loader.conf(5)</a>. See
+ the <a class="Xr">iflib(4)</a> man page for more information on using iflib
+ sysctl variables as tunables.</p>
+<dl class="Bl-tag">
+ <dt id="hw.ice.enable_health_events"><var class="Va">hw.ice.enable_health_events</var></dt>
+ <dd>Set to 1 to enable firmware health event reporting across all devices.
+ Enabled by default.
+ <p class="Pp">If enabled, when the driver receives a firmware health event
+ message, it will print out a description of the event to the kernel
+ message buffer and if applicable, possible actions to take to remedy
+ it.</p>
+ </dd>
+ <dt id="hw.ice.irdma"><var class="Va">hw.ice.irdma</var></dt>
+ <dd>Set to 1 to enable the RDMA client interface, required by the
+ <a class="Xr">irdma(4)</a> driver. Enabled by default.</dd>
+ <dt id="hw.ice.rdma_max_msix"><var class="Va">hw.ice.rdma_max_msix</var></dt>
+ <dd>Set the maximum number of per-device MSI-X vectors that are allocated for
+ use by the <a class="Xr">irdma(4)</a> driver. Set to 64 by default.</dd>
+ <dt id="hw.ice.debug.enable_tx_fc_filter"><var class="Va">hw.ice.debug.enable_tx_fc_filter</var></dt>
+ <dd>Set to 1 to enable the TX Flow Control filter across all devices. Enabled
+ by default.
+ <p class="Pp">If enabled, the hardware will drop any transmitted Ethertype
+ 0x8808 control frames that do not originate from the hardware.</p>
+ </dd>
+ <dt id="hw.ice.debug.enable_tx_lldp_filter"><var class="Va">hw.ice.debug.enable_tx_lldp_filter</var></dt>
+ <dd>Set to 1 to enable the TX LLDP filter across all devices. Enabled by
+ default.
+ <p class="Pp">If enabled, the hardware will drop any transmitted Ethertype
+ 0x88cc LLDP frames that do not originate from the hardware. This must be
+ disabled in order to use LLDP daemon software such as
+ <a class="Xr">lldpd(8)</a>.</p>
+ </dd>
+ <dt id="hw.ice.debug.ice_tx_balance_en"><var class="Va">hw.ice.debug.ice_tx_balance_en</var></dt>
+ <dd>Set to 1 to allow the driver to use the 5-layer Tx Scheduler tree topology
+ if configured by the DDP package.
+ <p class="Pp">Enabled by default.</p>
+ </dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYSCTL_VARIABLES"><a class="permalink" href="#SYSCTL_VARIABLES">SYSCTL
+ VARIABLES</a></h1>
+<dl class="Bl-tag">
+ <dt id="dev.ice._.current_speed"><var class="Va">dev.ice.#.current_speed</var></dt>
+ <dd>This is a display of the current link speed of the interface. This is
+ expected to match the speed of the media type in-use displayed by
+ <a class="Xr">ifconfig(8)</a>.</dd>
+ <dt id="dev.ice._.fw_version"><var class="Va">dev.ice.#.fw_version</var></dt>
+ <dd>Displays the current firmware and NVM versions of the adapter. This
+ information should be submitted along with any support requests.</dd>
+ <dt id="dev.ice._.ddp_version"><var class="Va">dev.ice.#.ddp_version</var></dt>
+ <dd>Displays the current DDP package version downloaded to the adapter. This
+ information should be submitted along with any support requests.</dd>
+ <dt id="dev.ice._.pba_number"><var class="Va">dev.ice.#.pba_number</var></dt>
+ <dd>Displays the Product Board Assembly Number. May be used to help identify
+ the type of adapter in use. This sysctl may not exist depending on the
+ adapter type.</dd>
+ <dt id="dev.ice._.hw.mac.*"><var class="Va">dev.ice.#.hw.mac.*</var></dt>
+ <dd>This sysctl tree contains statistics collected by the hardware for the
+ port.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="INTERRUPT_STORMS"><a class="permalink" href="#INTERRUPT_STORMS">INTERRUPT
+ STORMS</a></h1>
+<p class="Pp">It is important to note that 100G operation can generate high
+ numbers of interrupts, often incorrectly being interpreted as a storm
+ condition in the kernel. It is suggested that this be resolved by setting
+ <var class="Va">hw.intr_storm_threshold</var> to 0.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="IOVCTL_OPTIONS"><a class="permalink" href="#IOVCTL_OPTIONS">IOVCTL
+ OPTIONS</a></h1>
+<p class="Pp">The driver supports additional optional parameters for created VFs
+ (Virtual Functions) when using <a class="Xr">iovctl(8)</a>:</p>
+<dl class="Bl-tag">
+ <dt>mac-addr (unicast-mac)</dt>
+ <dd>Set the Ethernet MAC address that the VF will use. If unspecified, the VF
+ will use a randomly generated MAC address and
+ &#x201C;allow-set-mac&#x201D; will be set to true.</dd>
+ <dt>mac-anti-spoof (bool)</dt>
+ <dd>Prevent the VF from sending Ethernet frames with a source address that
+ does not match its own. Enabled by default.</dd>
+ <dt>allow-set-mac (bool)</dt>
+ <dd>Allow the VF to set its own Ethernet MAC address. Disallowed by
+ default.</dd>
+ <dt>allow-promisc (bool)</dt>
+ <dd>Allow the VF to inspect all of the traffic sent to the port that it is
+ created on. Disabled by default.</dd>
+ <dt>num-queues (uint16_t)</dt>
+ <dd>Specify the number of queues the VF will have. By default, this is set to
+ the number of MSI-X vectors supported by the VF minus one.</dd>
+ <dt>mirror-src-vsi (uint16_t)</dt>
+ <dd>Specify which VSI the VF will mirror traffic from by setting this to a
+ value other than -1. All traffic from that VSI will be mirrored to this
+ VF. Can be used as an alternative method to mirror RDMA traffic to another
+ interface than the method described in the
+ <a class="Sx" href="#RDMA_Monitoring">RDMA Monitoring</a> section. Not
+ affected by the &#x201C;allow-promisc&#x201D; parameter.</dd>
+ <dt>max-vlan-allowed (uint16_t)</dt>
+ <dd>Specify maximum number of VLAN filters that the VF can use. Receiving
+ traffic on a VLAN requires a hardware filter which are a finite resource;
+ this is used to prevent a VF from starving other VFs or the PF of filter
+ resources. By default, this is set to 16.</dd>
+ <dt>max-mac-filters (uint16_t)</dt>
+ <dd>Specify maximum number of MAC address filters that the VF can use. Each
+ allowed MAC address requires a hardware filter which are a finite
+ resource; this is used to prevent a VF from starving other VFs or the PF
+ of filter resources. The VF's default mac address does not count towards
+ this limit. By default, this is set to 64.</dd>
+</dl>
+<p class="Pp">An up to date list of parameters and their defaults can be found
+ by using <a class="Xr">iovctl(8)</a> with the <code class="Fl">-S</code>
+ option.</p>
+<p class="Pp">For more information on standard and mandatory parameters, see
+ <a class="Xr">iovctl.conf(5)</a>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SUPPORT"><a class="permalink" href="#SUPPORT">SUPPORT</a></h1>
+<p class="Pp">For general information and support, go to the Intel support
+ website at:
+ <a class="Lk" href="http://www.intel.com/support/">http://www.intel.com/support/</a>.</p>
+<p class="Pp">If an issue is identified with this driver with a supported
+ adapter, email all the specific information related to the issue to
+ &lt;<a class="Mt" href="mailto:freebsd@intel.com">freebsd@intel.com</a>&gt;.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<p class="Pp"><a class="Xr">iflib(4)</a>, <a class="Xr">vlan(4)</a>,
+ <a class="Xr">ifconfig(8)</a>, <a class="Xr">sysctl(8)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">The <code class="Nm">ice</code> device driver first appeared in
+ <span class="Ux">FreeBSD 12.2</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<p class="Pp">The <code class="Nm">ice</code> driver was written by
+ <span class="An">Intel Corporation</span>
+ &lt;<a class="Mt" href="mailto:freebsd@intel.com">freebsd@intel.com</a>&gt;.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">November 5, 2025</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>