|
NAME
SYNOPSIS
In
loader.conf(5):
In
sysctl.conf(5) or
loader.conf(5):
DESCRIPTIONThe The following topics are covered in this manual:
FeaturesSupport for Jumbo Frames is provided via the interface MTU setting. Selecting an MTU larger than 1500 bytes with the ifconfig(8) utility configures the adapter to receive and transmit Jumbo Frames. The maximum MTU size for Jumbo Frames is 9706. For more information, see the Jumbo Frames section. This driver version supports VLANs. For information on enabling VLANs, see vlan(4). For additional information on configuring VLANs, see ifconfig(8)'s “VLAN Parameters” section. 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. For more information on configuring this device, see ifconfig(8). The associated Virtual Function (VF) driver for this driver is iavf(4). The associated RDMA driver for this driver is irdma(4). Dynamic Device PersonalizationThe DDP package loads during device initialization. The driver looks for the ice_ddp module and checks that it contains a valid DDP package file. 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 “Intel Ethernet Adapters and Devices User Guide” for more details on DDP and Safe Mode. If issues are encountered with the DDP package file, an updated driver or ice_ddp module may need to be downloaded. See the log messages for more information. 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. Only one DDP package can be used per driver, even if more than one installed device uses the driver. Only the first loaded PF per device can download a package for that device. Jumbo FramesJumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU) to a value larger than the default value of 1500. Use ifconfig(8) to increase the MTU size. The maximum MTU setting for jumbo frames is 9706. This corresponds to the maximum jumbo frame size of 9728 bytes. 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. 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. Remote Direct Memory AccessRemote 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. 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. Devices based on the Intel Ethernet 800 Series do not support RDMA when operating in multiport mode with more than 4 ports. For detailed installation and configuration information for RDMA, see irdma(4). RDMA MonitoringFor 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 tcpdump(1). This mirroring may impact performance. To use RDMA monitoring, more MSI-X interrupts may need to be
reserved. Before the dev.ice.<interface #>.iflib.use_extra_msix_vectors=4 The number of extra MSI-X interrupt vectors may need to be adjusted. To create/delete the interface: sysctl dev.ice.<interface #>.create_interface=1 sysctl dev.ice.<interface #>.delete_interface=1 The mirrored interface receives both LAN and RDMA traffic. Additional filters can be configured in tcpdump. To differentiate the mirrored interface from the primary interface, the network interface naming convention is: <driver name><port number><modifier><modifier unit number> For example, “ Data Center BridgingData 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). DCB is normally configured on the network using the DCBX protocol
(802.1Qaz), a specialization of LLDP (802.1AB). The
In firmware-based mode, firmware intercepts all LLDP traffic and handles DCBX negotiation transparently for the user. In this mode, the adapter operates in “willing” 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. 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 “nonwilling” DCBX mode and DCB configuration can be both queried and set locally. This mode requires the FW-based LLDP Agent to be disabled. Firmware-based mode and software-based mode are controlled by the “fw_lldp_agent” sysctl. Refer to the Firmware Link Layer Discovery Protocol Agent section for more information. 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. To enable/disable priority flow control in software-based DCBX mode: sysctl dev.ice.<interface #>.pfc=1 (or 0 to disable) 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: sysctl dev.ice.<interface #>.ets_min_rate 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: sysctl dev.ice.<interface #>.ets_min_rate=10,10,10,10,10,10,10,30 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: sysctl dev.ice.<interface #>.up2tc_map=0,0,1,1,2,2,3,3 L3 QoS ModeThe sysctl dev.ice.<interface #>.pfc_mode=1 (or 0 to disable) If L3 QoS mode is disabled, it returns to L2 QoS mode. 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: sysctl dev.ice.<interface #>.dscp2tc_map.0-7=0,1,2,3,0,0,0,0 sysctl dev.ice.<interface #>.dscp2tc_map.8-15=4,0,0,0,0,0,0,0 To change the DSCP mapping back to the default traffic class, set all the values back to 0. To view the currently configured mappings, use the following: sysctl dev.ice.<interface #>.dscp2tc_map L3 QoS mode is not available when FW-LLDP is enabled. FW-LLDP cannot be enabled if L3 QoS mode is active. Disable FW-LLDP before switching to L3 QoS mode. Refer to the Firmware Link Layer Discovery Protocol Agent section in this README for more information on disabling FW-LLDP. Firmware Link Layer Discovery Protocol AgentUse sysctl to change FW-LLDP settings. The FW-LLDP setting is per port and persists across boots. To enable the FW-LLDP Agent: sysctl dev.ice.<interface #>.fw_lldp_agent=1 To disable the FW-LLDP Agebt: sysctl dev.ice.<interface #>.fw_lldp_agent=0 To check the current LLDP setting: sysctl dev.ice.<interface #>.fw_lldp_agent The UEFI HII LLDP Agent attribute must be enabled for this setting to take effect. If the “LLDP AGENT” attribute is set to disabled, the FW-LLDP Agent cannot be enabled from the driver. Link-Level Flow ControlEthernet Flow Control (IEEE 802.3x or LFC) can be configured with
sysctl(8) to enable receiving and transmitting pause frames
for Flow Control is disabled by default. Use sysctl to change the flow control settings for a single interface without reloading the driver: sysctl dev.ice.<interface #>.fc The available values for flow control are: 0 = Disable flow control 1 = Enable Rx pause 2 = Enable Tx pause 3 = Enable Rx and Tx pause Verify that link flow control was negotiated on the link by checking the interface entry in ifconfig(8) and looking for the flags “txpause” and/or “rxpause” in the “media” status. The For more information on priority flow control, refer to the Data Center Bridging section. The VF driver does not have access to flow control. It must be managed from the host side. Forward Error CorrectionForward 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. For devices to benefit from this feature, link partners must have FEC enabled. If the allow_no_fec_modules_in_auto sysctl is enabled Auto FEC negotiation will include “FEC” in case the link partner does not have FEC enabled or is not FEC capable: sysctl dev.ice.<interface #>.allow_no_fec_modules_in_auto=1 NOTE: This flag is currently not supported on the Intel Ethernet 830 Series. To show the current FEC settings that are negotiated on the link: sysctl dev.ice.<interface #>.negotiated_fec To view or set the FEC setting that was requested on the link: sysctl dev.ice.<interface #>.requested_fec To see the valid FEC modes for the link: sysctl -d dev.ice.<interface #>.requested_fec Speed and Duplex ConfigurationThe speed and duplex settings cannot be hard set. To have the device change the speeds it will use in auto-negotiation or force link with: sysctl dev.ice.<interface #>.advertise_speed=<mask> Supported speeds will vary by device. Depending on the speeds the device supports, valid bits used in a speed mask could include: 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 Disabling physical link when the interface is brought downWhen the link_active_on_if_down sysctl is set to “0”, the port's link will go down when the interface is brought down. By default, link will stay up. To disable link when the interface is down: sysctl dev.ice.<interface #>.link_active_on_if_down=0 Firmware LoggingThe At a high level, to capture a firmware log:
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. Once the driver is loaded, it will create the fw_log sysctl node under the debug section of the driver's sysctl list. The driver groups these events into categories, called “modules”. Supported modules include:
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 “normal” will also log warning and error messages. Available verbosity levels are:
To set the desired verbosity level for a module, use the following sysctl command and then register it: sysctl dev.ice.<interface #>.debug.fw_log.severity.<module>=<level> For example: 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 To log firmware messages after booting, but before the driver initializes, use kenv(1) to set the tunable. The on_load setting tells the device to register the variable as soon as possible during driver load. For example: 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 To view the firmware logs and redirect them to a file, use the following command: dmesg > log_output 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. Debug DumpIntel Ethernet 800 Series devices support debug dump, which allows gathering of runtime register values from the firmware for “clusters” of events and then write the results to a single dump file, for debugging complicated issues in the field. 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. NOTE: Like with firmware logs, the contents of the debug dump are not human-readable. Work with Customer Support to decode the file. Debug dump is per device, not per PF. Debug dump writes all information to a single file. To generate a debug dump file in FreeBSD do the following: Specify the cluster(s) to include in the dump file, using a bitmask and the following command: sysctl dev.ice.<interface #>.debug.dump.clusters=<bitmask> To print the complete cluster bitmask and parameter list to the
screen, pass the sysctl -d dev.ice.0.debug.dump.clusters Possible bitmask values for clusters are:
For example, to dump the Switch, DCB, and L2P clusters, use the following: sysctl dev.ice.0.debug.dump.clusters=0x181 To dump all clusters, use the following: sysctl dev.ice.0.debug.dump.clusters=0 NOTE: Using 0 will skip Manageability Transactions data. 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: sysctl -b dev.ice.<interface #>.debug.dump.dump=1 > dump.bin NOTE: The driver will not receive the command if the sysctl is not set to “1”. Replace “dump.bin” above with the preferred file name. To clear the clusters mask before a subsequent debug dump and then do the dump: sysctl dev.ice.0.debug.dump.clusters=0 sysctl dev.ice.0.debug.dump.dump=1 Debugging PHY StatisticsThe 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. The driver provides information about:
Use the following sysctl to read the PHY registers: sysctl dev.ice.<interface #>.debug.phy_statistics 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. Transmit BalancingSome 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. 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:
When the driver loads, it reads the transmit balancing setting from the NVM and configures the device accordingly. 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. This setting is device wide. The driver, NVM, and DDP package must all support this functionality to enable the feature. Thermal MonitoringIntel(R) Ethernet 810 Series and Intel(R) Ethernet 830 Series devices can display temperature data (in degrees Celsius) via: sysctl dev.ice.<interface #>.temp Network Memory Buffer AllocationFreeBSD 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 kern.ipc.nmbclusters kern.ipc.nmbjumbop kern.ipc.nmbjumbo9 kern.ipc.nmbjumbo16 kern.ipc.nmbufs The amount of memory that should be allocated is system specific, and may require some trial and error. Also, increasing the following in /etc/sysctl.conf could help increase network performance: kern.ipc.maxsockbuf net.inet.tcp.sendspace net.inet.tcp.recvspace net.inet.udp.maxdgram net.inet.udp.recvspace Additional UtilitiesThere 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 https://downloadcenter.intel.com, by searching for their names:
Optics and auto-negotiationModules 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. 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. PCI-Express Slot BandwidthSome 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. The driver detects this situation and writes the following message in the system log: 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.
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:
For questions related to hardware requirements, refer to the documentation supplied with the adapter. HARDWAREThe
The The
The
The
LOADER TUNABLESTunables can be set at the loader(8) prompt before booting the kernel or stored in loader.conf(5). See the iflib(4) man page for more information on using iflib sysctl variables as tunables.
SYSCTL VARIABLES
INTERRUPT STORMSIt 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 hw.intr_storm_threshold to 0. IOVCTL OPTIONSThe driver supports additional optional parameters for created VFs (Virtual Functions) when using iovctl(8):
An up to date list of parameters and their defaults can be found
by using
iovctl(8) with the For more information on standard and mandatory parameters, see iovctl.conf(5). SUPPORTFor general information and support, go to the Intel support website at: http://www.intel.com/support/. If an issue is identified with this driver with a supported adapter, email all the specific information related to the issue to <freebsd@intel.com>. HISTORYThe AUTHORSThe
|