Updating the FPGA

Getting Started with Napatech Link-Storage™ Software

Platform
Napatech DPU
Content Type
Getting Started
Capture Software Version
Link-Storage™ Software 1.0

The ipu_update tool supports the FPGA image configuration of DPUs over PCIe.

Make sure that you have:
  • Installed a DPU in a server. See Installing a DPU.
  • Remote SSH access to the SoC on the DPU via the management port or the USB port. See DN-1385.
  • A corresponding .upd file for the target DPU.
  • Placed the unpacked Napatech package containing FPGA image files and the ipu_tools-<version>-linux.tar.gz package in the /opt/ directory, where version is the version identifier of the corresponding package.
  • Blacklisted the kernel driver modules. See Blacklisting the virtio_blk module.

To support FPGA programming over PCIe using the ipu_update tool, it is required to have DPUs with appropriate images for the BMC and the FPGA as shown in the following table.

Table 1. Required firmware image versions
DPU component Firmware image version
BMCM 201-6001-64.0.18.20 or newer
BMCD 201-6002-64.0.18.20 or newer
FPGA ASAF (Link-Storage™ Software / Link-Security™ Software) 200-7102-0.0.6.1 or newer
OVS Offload Software 200-7104-0.0.3.8 or newer

For information on reading the firmware version of the BMC and the FPGA on the DPU, see Reading Revision Information in DN-1420.

For information on updating DPUs via the JTAG interface to prepare them for the ipu_update tool, see DN-1392.

This procedure describes command examples for programming a new FPGA image using the ipu_update tool with a .upd file.

Note: For information on updating the FPGA of DPUs with a .jic file or a .sof file via the JTAG interface, refer to DN-1392.
Note: The following prompts are used to indicate which part of the system to run the provided commands on.
  • soc#: The SoC on the DPU.
  • host#: The server where the DPU is installed.
  1. On the DPU, install dependencies.
    soc# dnf install pciutils-devel gcc-c++ json-c-devel -y
  2. On the DPU, unpack the package containing DPU tools..
    soc# cd /opt/
    soc# tar zxvf ipu_tools-<version>-linux.tar.gz

    where version is the version identifier of the corresponding package.

  3. Build the kernel driver.
    soc# cd ipu_tools/src/
    soc# cd ipu_mngmnt_tools/software/csc_lek-0.0.0.5/driver/kmod
    soc# make
  4. Load the drivers.
    soc# modprobe uio
    soc# rmmod ifc_uio.ko 2>/dev/null
    soc# insmod ifc_uio.ko
  5. Update the DPU with a .upd file.

    Locate the ipu_update tool. For example:

    soc# cd ipu_tools/bin

    Locate the target .upd file. A command example for an F2070X DPU:

    soc# ./ipu_update -u \
     <package_root_directory>/images/INTEL-F2070X-7102/200-7102-0.0.10.5_user.upd

    A command example for an F2071 DPU:

    soc# ./ipu_update -u \
     <package_root_directory>/images/INTEL-F2070X-7103/200-7103-0.0.10.5_user.upd

    where package_root_directory is the directory to the unpacked package containing FPGA image files.

    An output example:

    Running FPGA version  : 200-7103-0.1.2.9
    Running pmci version  : 1.1.1-7fffffff
    Running BMCM NIOS app : unknown
    Image size: 27812096
    Programming F207xX IPU flashes...
    RSU STATE : IDLE
    RSU STATE : PREPARE
    RSU STATE : READY
    Writing image file to IPU...
    Write completed. Written 27812096 bytes.
    RSU STATE : AUTHENTICATING
    RSU STATE : COPYING
    RSU STATE : RSU_DONE
    Update Time: 427 seconds
    Updating F207xX IPU Firmware/FPGA Complete...

    This process must not be interrupted as the FPGA update may take several minutes.

  6. Perform a cold boot of the server where the DPU is installed.

    For example:

    host# shutdown -h now

    Power the server up again.

  7. Detect PCIe devices of the DPU.

    For example:

    lspci -d 1af4:

    An output example on the server where the DPU is installed.

    0f:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    10:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    11:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    12:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    13:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    14:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    16:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    17:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    18:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    19:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    1a:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
    1f:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    20:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    21:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    22:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    23:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    24:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    25:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    26:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    27:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    28:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    29:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    2a:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    2b:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    2c:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    2d:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device
    2e:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device

    An output example on the SoC of the DPU.

    15:00.1 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.2 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.4 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.5 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.6 Ethernet controller: Red Hat, Inc. Virtio network device
    15:00.7 Ethernet controller: Red Hat, Inc. Virtio network device