Intel® Ethernet Adapters and Devices User Guide

ID Date Version Classification
705831 08/30/2024 Public
Document Table of Contents

Firmware Logging

Intel® Ethernet 800 Series devices allow you to generate firmware logs for supported categories of events, to help debug complex issues with Customer Support. Firmware logging is enabled by default.

Note:
  • Both the device and the driver need to support firmware logging for the functionality to work. If you are not able to set the configuration and the problem persists, reinstall the driver.

  • You must have the latest base driver and NVM installed.

  • Firmware logging events and levels are device-wide settings. Changing the log configuration on one port will apply it to all ports on a device.

Capturing a Firmware Log

To capture a firmware log, you must do the following:

  1. Set the configuration for the firmware log. See later in this page for more information.

  2. Perform the necessary steps to generate the issue you’re trying to debug.

  3. Capture the firmware log. (Exact steps will vary by operating system.)

  4. Stop capturing the firmware log.

  5. Reset your firmware log settings as needed.

  6. Work with Customer Support to debug your issue.

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.

Configuring Settings for Firmware Logs

Firmware logs capture information about different categories of events (called “modules”). A module corresponds to a general category of functionality, such as link topology detection or manageability.

The device’s NVM sets default verbosity levels for each module. You can change the verbosity level per module; refer to OS-Specific Information below for more details. You can set only one log level per module, and each level includes the verbosity levels lower than it.

Available verbosity levels are:

  • 0 = none

  • 1 = error

  • 2 = warning

  • 3 = normal

  • 4 = verbose

If you see errors or suspect the issue could fall into the below categories, setting the firmware logs to capture more verbosity for the corresponding module(s) in the right column will provide more information in the firmware log.

Modules for Events

Category of Event

Corresponding Module

Initialization

Control

NVM

  • NVM

  • Authentication

  • VPD

I/O

  • I2C

  • SDP

  • MDIO

Link Management

  • Link Management

  • Link Control Technology

  • Link Topology Detection

Rx

  • Parser

  • Switch

  • ACL

  • Post

Tx

  • Scheduler

  • Tx Queue Management

AQ Interface

  • Admin Queue

  • HDMA

Manageability

Manageability

Protocols

  • LLDP

  • DCBx

Infrastructure

  • Watchdog

  • Task Dispatcher

  • General

  • IOSF

  • PF Registration

  • Module Versions

XLR

XLR

QoS

DCB

Diagnostics

  • SyncE

  • Health

TimeSync

Time Sync

Tips for Firmware Logs

  • Firmware logs are for the hardest issues to debug. If you are experiencing issues, refer to the following sections for preliminary methods to diagnose problems:

  • We generally do not recommend to capture firmware logs at all times. If you suspect an issue, set the module(s) for the suspected event to a higher verbosity level, capture the firmware log, and then stop the log.

  • Collecting firmware logs should not materially impact performance or CPU utilization.

  • In general, set the logging level to Verbose only for the configuration group(s) or module(s) you need to debug. Setting too many modules to Verbose can overrun the buffer.

  • You can try writing logs to a remote location or an external storage device, if your disk is full or your system does not have sufficient storage.

OS-Specific Information

Linux

At a high level, do the following to capture a firmware log in Linux:

  1. Set log levels. For example:

    echo normal > /sys/kernel/debug/ice/0000:18:00.0/fwlog/modules/all
    
  2. Turn on firmware logging:

    echo 1 > /sys/kernel/debug/ice/0000:18:00.0/fwlog/enable
    
  3. Perform the necessary steps to generate the issue you are trying to debug.

  4. Turn off firmware logging:

    echo 0 > /sys/kernel/debug/ice/0000:18:00.0/fwlog/enable
    
  5. Save data to a file:

    cat /sys/kernel/debug/ice/0000:18:00.0/fwlog/data > fwlog.bin
    
  6. Work with Customer Support to debug your issue.

Refer to the README in the driver tarball for more information on configuring firmware logs.

FreeBSD

Refer to the README in the driver tarball for more information on configuring firmware logs.

Note:

In FreeBSD, the driver can register/unregister to receive events per PF.

Windows

In Windows, you use PowerShell and Intel Ethernet cmdlets to configure firmware logging and capture firmware logs.

At a high level, do the following to capture a firmware log in Windows:

  1. Set the configuration for the firmware log, using the Set-IntelEthernetLogConfig cmdlet in PowerShell.

  2. Perform the necessary steps to generate the issue you’re trying to debug.

  3. Start capturing the firmware log, using the Start-IntelEthernetLog cmdlet.

  4. Stop capturing the firmware log, using the Stop-IntelEthernetLog cmdlet.

  5. Work with Customer Support to decode your firmware log file and debug the issue.

Note:
  • Firmware logs will be captured in the file you designated with Start-IntelEthernetLog.

  • To disable firmware logging, use the Disable-IntelEthernetLogConfig cmdlet. To verify that firmware logging is disabled, run the Get-IntelEthernetLogConfig cmdlet; its results should say “Disabled.”

ESXi

In ESXi, use esxcfg-module to set the configuration for firmware logs. Firmware logs are printed to kernel logs, with the tag FWLOG; use dmesg or read the file at /var/log/vmkernel.log.

At a high level, do the following to capture a firmware log in ESXi:

Note:

Refer to ESXi Example Commands below for all commands and parameters.

  1. Set the configuration for the firmware log, using esxcfg-module. The ESXi driver uses the following module parameters for firmware logging:

  • FWLogEnable: Enables firmware logging functionality on the designated PF (0 = Disable, 1 = Enable). Use commas to separate the values for each PF; the first value is for PF0, second for PF1, and so on.

  • FWLogEvents: Designates the firmware events to log, using a bitmask. Binary math is required to set.

  • FWLogLevel: Sets the verbosity level for the firmware event’s log.

  1. Redirect the kernel log or dmesg to a separate file for capturing the firmware log.

  2. Reboot the system for changes to take effect.

  3. After the system has rebooted, perform the necessary steps to generate the issue you’re trying to debug.

  4. Work with Customer Support to decode your firmware log file and debug the issue.

    Note:

    Firmware logs will be captured in the file you designated in step 2.

ESXi Example Commands

Use the following commands in ESXi for tasks related to firmware logging:

  • To enable firmware logging and set the verbosity level for your desired events:

    esxcfg-module icen -s 'FWLogEnable=<values> FWLogEvents=<bitmask> FWLogLevel=<value>'
    

    For example, to enable firmware logging on PF0 and set all events to log warning messages, use:

    esxcfg-module icen -s 'FWLogEnable=1,0,0,0,0,0,0,0 FWLogEvents=255 FWLogLevel=2'
    
  • To show the current configuration of the firmware log parameters:

    esxcfg-module -g <driver name>
    
    Note:

    If firmware logging is disabled, the FWLogEnable parameter should say “0” (disabled).

  • To show a description of module parameters for firmware logging:

    esxcfg-module -i <driver name>
    
    Note:

    Look for the parameters that begin with FWLog.

  • To redirect the firmware log to a file:

    tail -f /var/log/vmkernel.log > filename.log
    
  • To disable firmware logging:

    esxcfg-module icen -s 'FWLogEnable=0 FWLogEvents=0 FWLogLevel=0'