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