Quick start

These steps describes basic workflow for experiments.

Boot new firmware into card

Note

The nfb-boot tool expects that some NDK firmware is already loaded in the FPGA. If this is not your case, follow the FPGA card manufacturer’s instructions for loading the FPGA firmware.

$ nfb-boot -f0 n6010-nic-230603.nfw

Check base board information

$ nfb-info -v
--------------------------------------- Board info ----
Board name                 : COMBO-GENERIC
Serial number              : 0
Network interfaces         : 2
 * Interface 0             : QSFP
 * Interface 1             : QSFP
Temperature                : 56.2 C
------------------------------------ Firmware info ----
Card name                  : N6010
Project name               : NDK_NIC
Project variant            : 100G2
Project version            : 0.3.2
Built at                   : 2023-06-03 00:30:22
Build tool                 : Quartus Version 22.4.0 Build 94 12/07/2022 SC Pro Edition
Build author               : no-reply@liberouter.org
RX queues                  : 16
TX queues                  : 16
ETH channels               : 2
 * Channel 0               : 100G
 * Channel 1               : 100G
-------------------------------------- System info ----
PCIe Endpoint 0:
 * PCI slot                : 0000:03:00.0
 * PCI speed               : 8 GT/s
 * PCI link width          : x16
 * NUMA node               : -1

Write and read CSR (configuration and status registers)

$ # write 32b value 0xdeadbeef to address 0x1c
$ nfb-bus -c cesnet,ofm,mi_test_space 1c deadbeef
$
$ # read 32b value from address 0x1c
$ nfb-bus -c cesnet,ofm,mi_test_space 1c
deadbeef

Check ethernet modes and features

$ nfb-eth -i0 -Pv |grep -A 7 "PMA types"
Supported PMA types ->
 *                         : 100GBASE-SR4
 * [active]                : 100GBASE-LR4
 *                         : 100GBASE-ER4
Supported PMA features ->
 *                         : PMA local loopback
 *                         : PMA remote loopback
 *                         : Low power

Enable input + output MAC, enable FEC and set internal loopback

$ nfb-eth -e1
$ nfb-eth -Pc "100GBASE-SR4"
$ nfb-eth -Pc "+PMA local loopback"

Send 2x10 random frames (without payload) on first two DMA queues

$ ndp-generate -s 64-128 -i0,1 -p 10
------------------------------- NDP generate stats ----
Packets                    :                   20
Bytes                      :                 2112
Avg speed [Mpps]           :                    0.001
Avg speed L1 [Mb/s]        :                    0.747
Avg speed L2 [Mb/s]        :                    0.631
Time                       :                    0.028

Check statistics on DMA queues and MAC

$ nfb-dma -i0,1
------------------------------ RX00 NDP controller ----
Received                   : 0
Received bytes             : 0
Discarded                  : 20
Discarded bytes            : 2752

------------------------------ RX01 NDP controller ----
Received                   : 0
Received bytes             : 0
Discarded                  : 0
Discarded bytes            : 0

------------------------------ TX00 NDP controller ----
Sent                       : 10
Sent bytes                 : 1056

------------------------------ TX01 NDP controller ----
Sent                       : 10
Sent bytes                 : 1056
$ nfb-eth -i0
----------------------------- Ethernet interface 0 ----
Speed                      : 100 Gb/s
Transceiver status         : Not plugged
Transceiver cage           : QSFP-0
------------------------------------- RXMAC Status ----
RXMAC status               : ENABLED
Link status                : UP
HFIFO overflow occurred    : False
Received octets            :                 2192
Processed                  :                   20
Received                   :                   20
Erroneous                  :                    0
Overflowed                 :                    0
------------------------------------- TXMAC Status ----
TXMAC status               : ENABLED
Transmitted octets         :                 2192
Processed                  :                   20
Transmitted                :                   20
Erroneous                  :                    0
Repeater status            : Unknown