Intel® Acceleration Stack User Guide: Intel® FPGA Programmable Acceleration Card N3000-N/2

ID 683362
Date 11/01/2021
Public
Document Table of Contents

10. Configuring Ethernet Interfaces

The Intel® FPGA PAC N3000-N/2 contains multiple Ethernet MAC points where each point has specific naming, monitoring and configuration operations.
Note: The Intel provided factory image does not support Ethernet auto-negotiation and as a result, you must manually provision port settings to match the remote Ethernet link partner.
The following figures illustrate the Ethernet data path for each network configuration.
Figure 9. 4x25G Configuration
Figure 10. 2x2x25G Configuration
The above figures illustrate example device naming conventions for the XL710 enp[Y:Z]s0f[1:0]. Your server may have a different naming convention and numbering scheme. Additionally, the Intel® Arria® 10 FPGA contains Ethernet MACs with network logical naming scheme of npacf[X]g0l[3:0]. You must obtain the network logical names to use Linux tools for link configuration and monitoring. To find the network logical names of a specific Intel® FPGA PAC N3000-N/2 in your server, perform the following steps:
  1. List the available Intel® FPGA PAC N3000-N/2 in your server using:
    $ sudo fpgainfo fme
    Sample output:
    Board Management Controller, MAX10 NIOS FW version D.2.1.24
    Board Management Controller, MAX10 Build version D.2.0.7
    //****** FME ******//
    Object Id                     : 0xED00001
    PCIe s:b:d.f                  : 0000:1c:00.0
    Device Id                     : 0x0b30
    Numa Node                     : 0
    Ports Num                     : 01
    Bitstream Id                  : 0x23000110010310
    Bitstream Version             : 0.2.3
    Pr Interface Id               : f3c99413-5081-4aad-bced-07eb84a6d0bb
    Boot Page                     : user
    Board Management Controller, MAX10 NIOS FW version D.2.1.24
    Board Management Controller, MAX10 Build version D.2.0.7
    //****** FME ******//
    Object Id                     : 0xED00000
    PCIe s:b:d.f                  : 0000:8a:00.0
    Device Id                     : 0x0b30
    Numa Node                     : 1
    Ports Num                     : 01
    Bitstream Id                  : 0x23000110010310
    Bitstream Version             : 0.2.3
    Pr Interface Id               : f3c99413-5081-4aad-bced-07eb84a6d0bb
    Boot Page                     : user
    
  2. Use the following command to find the logical name(s) of the Ethernet interfaces on the target Intel® FPGA PAC N3000-N/2:
    ls -la /sys/class/net

    In the following example, if you want to change settings on the Intel® FPGA PAC N3000-N/2 with PCIe b:d.f 8a:00.0, then ensure that the PCIe device ID for enp136s0f0, enp136s0f1, enp139s0f0 and enp139sof1 is in the range of 88-8b.

    Sample output:
    drwxr-xr-x.  2 root root 0  .
    
    drwxr-xr-x. 59 root root 0  ..
    
    lrwxrwxrwx.  1 root root 0  enp0s20f0u4 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/net/enp0s20f0u4
    
    lrwxrwxrwx.  1 root root 0  enp136s0f0 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:08.0/0000:88:00.0/net/enp136s0f0
    
    lrwxrwxrwx.  1 root root 0  enp136s0f1 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:08.0/0000:88:00.1/net/enp136s0f1
    
    lrwxrwxrwx.  1 root root 0  enp139s0f0 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:10.0/0000:8b:00.0/net/enp139s0f0
    
    lrwxrwxrwx.  1 root root 0  enp139s0f1 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:10.0/0000:8b:00.1/net/enp139s0f1
    
    lrwxrwxrwx.  1 root root 0  enp175s0f0 -> ../../devices/pci0000:ae/0000:ae:00.0/0000:af:00.0/net/enp175s0f0
    
    lrwxrwxrwx.  1 root root 0  enp175s0f1 -> ../../devices/pci0000:ae/0000:ae:00.0/0000:af:00.1/net/enp175s0f1
    
    lrwxrwxrwx.  1 root root 0  enp26s0f0 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:08.0/0000:1a:00.0/net/enp26s0f0
    
    lrwxrwxrwx.  1 root root 0  enp26s0f1 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:08.0/0000:1a:00.1/net/enp26s0f1
    
    lrwxrwxrwx.  1 root root 0  enp29s0f0 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:10.0/0000:1d:00.0/net/enp29s0f0
    
    lrwxrwxrwx.  1 root root 0  enp29s0f1 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:10.0/0000:1d:00.1/net/enp29s0f1
    
    lrwxrwxrwx.  1 root root 0  enp59s0f0 -> ../../devices/pci0000:3a/0000:3a:00.0/0000:3b:00.0/net/enp59s0f0
    
    lrwxrwxrwx.  1 root root 0  enp59s0f1 -> ../../devices/pci0000:3a/0000:3a:00.0/0000:3b:00.1/net/enp59s0f1
    
    lrwxrwxrwx.  1 root root 0  enp94s0f0 -> ../../devices/pci0000:5d/0000:5d:00.0/0000:5e:00.0/net/enp94s0f0
    
    lrwxrwxrwx.  1 root root 0  enp94s0f1 -> ../../devices/pci0000:5d/0000:5d:00.0/0000:5e:00.1/net/enp94s0f1
    
    lrwxrwxrwx.  1 root root 0  lo -> ../../devices/virtual/net/lo
    
    lrwxrwxrwx.  1 root root 0  npacf0g0l0 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:09.0/0000:1c:00.0/fpga/intel-fpga-dev.0/intel-fpga-fme.0/pac_n3000_net.2.auto/net/npacf0g0l0
    
    lrwxrwxrwx.  1 root root 0  npacf0g0l1 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:09.0/0000:1c:00.0/fpga/intel-fpga-dev.0/intel-fpga-fme.0/pac_n3000_net.2.auto/net/npacf0g0l1
    
    lrwxrwxrwx.  1 root root 0  npacf0g0l2 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:09.0/0000:1c:00.0/fpga/intel-fpga-dev.0/intel-fpga-fme.0/pac_n3000_net.2.auto/net/npacf0g0l2
    
    lrwxrwxrwx.  1 root root 0  npacf0g0l3 -> ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:09.0/0000:1c:00.0/fpga/intel-fpga-dev.0/intel-fpga-fme.0/pac_n3000_net.2.auto/net/npacf0g0l3
    
    lrwxrwxrwx.  1 root root 0  npacf1g0l0 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:09.0/0000:8a:00.0/fpga/intel-fpga-dev.1/intel-fpga-fme.1/pac_n3000_net.6.auto/net/npacf1g0l0
    
    lrwxrwxrwx.  1 root root 0  npacf1g0l1 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:09.0/0000:8a:00.0/fpga/intel-fpga-dev.1/intel-fpga-fme.1/pac_n3000_net.6.auto/net/npacf1g0l1
    
    lrwxrwxrwx.  1 root root 0  npacf1g0l2 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:09.0/0000:8a:00.0/fpga/intel-fpga-dev.1/intel-fpga-fme.1/pac_n3000_net.6.auto/net/npacf1g0l2
    
    lrwxrwxrwx.  1 root root 0  npacf1g0l3 -> ../../devices/pci0000:85/0000:85:00.0/0000:86:00.0/0000:87:09.0/0000:8a:00.0/fpga/intel-fpga-dev.1/intel-fpga-fme.1/pac_n3000_net.6.auto/net/npacf1g0l3
    
    lrwxrwxrwx.  1 root root 0  virbr0 -> ../../devices/virtual/net/virbr0
    
    lrwxrwxrwx.  1 root root 0  virbr0-nic -> ../../devices/virtual/net/virbr0-nic
    

For example:

This listing is an example of the 4x25G network configuration. The logical device names npacf1g0l[0, 1, 2, 3] represents the Ethernet MAC wrapper 0 on the line side of the Intel® Arria® 10 FPGA. The logical device names enp[136 and 139]s0f[1 and 0] are the XL710 Ethernet ports.

The pac_n3000_net platform device driver creates the standard Linux network device interfaces for each Intel® Arria® 10 FPGA Ethernet MAC pair. It provides C827 re-timer information for unified network status reporting. It enables use of standard Linux tools for both link configuration and monitoring.
$ lsmod | grep pac_n3000_net
pac_n3000_net          28483  1 c827_retimer