cd ~/gitrepo
git clone https://github.com/daynix/dpdk-kmods.git
cd dpdk-kmods
make; sudo make install
cd /usr/lib/modules/$(uname -r)/extra/dpdk
sudo ln -s /home/advaadmin/gitrepo/dpdk-kmods/linux/igb_uio/igb_uio.ko igb_uio.ko
ORAN F/G Release documentation mentions the following versions for the fronthaul NIC drivers : • ice 1.3.2
wget https://downloadmirror.intel.com/30303/eng/ice-1.3.2.tar.gz
• i40e 2.14.13
In other place ORAN documentation mentioned the following versions:
- Intel® Ethernet 800 Series Linux Driver (ice) — 1.4.0 (or later)
- Wireless Edge DDP Package version (ice_wireless_edge) — 1.3.22.101 (WRONG)
- Intel® Ethernet 800 Series firmware version — 1.5.4.2 (or later)
- Intel® Ethernet 800 Series NVM version — 2.4 (or later)
Note, according to Intel, ‘firmware’ means to be the same as NVM https://www.intel.com/content/www/us/en/support/articles/000059457/ethernet-products.html
advaadmin@yrksrv03:~/gitrepo/6g-terafactory-ran$ sudo ethtool -i eno12399
driver: ice
version: 1.3.2
firmware-version: 3.00 0x80008943 20.5.13
First field is the firmware or NVM version (3.00). Second field is the EtrackID (0x80008943). Third field is the Combo Boot Image version (version of the BootIMG.FLB file).
On a server with Xeon(R) D-1734NT CPU we got the following results of NVM checking:
adva@portwell3:~/intel/E810/Linux_x64$ sudo ./nvmupdate64e
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.39.32.6
Copyright(C) 2013 - 2023 Intel Corporation.
Num Description Ver.(hex) DevId S:B Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Network Adapter 4.32(4.20) 159B 00:002 Up to date
E810-XXV-2
02) Intel(R) I210 Gigabit Network N/A(N/A) 1533 00:004 Update not
Connection available
03) Intel(R) Ethernet Connection N/A(N/A) 124C 00:244 Update not
E823-L for backplane available
We can see that Xeon-D embedded E823-L chip is probably does not support eCPRI. We need to use a discrete E810-XXV-2 NIC.
wget http://fast.dpdk.org/rel/dpdk-20.11.3.tar.gz
tar -xvf dpdk-20.11.3.tar.gz
cd dpdk-stable-20.11.3
CC=icc meson x86_64-native-linuxapp-icc/
# cd x86_64-native-linuxapp-icc; ninja; sudo ninja install
DPDK ice driver is in librte_net_ice.so.21.0, keep this file for a reference with the different name. Now patch Columbiaville DPDK driver (file ice_ethdev.c ):
PMD_DRV_LOG(INFO, "queue %d is binding to vect %d",
base_queue + i, msix_vect);
//AAA+
// /* set ITR0 value */
// ICE_WRITE_REG(hw, GLINT_ITR(0, msix_vect), 0x2);
/* set ITR0 value */
ICE_WRITE_REG(hw, GLINT_ITR(0, msix_vect), 0x10);
/* set ITR0 value
* Empirical configuration for optimal real time latency
* reduced interrupt throttling to 2 ms
* Columbiaville pre-PRQ : local patch subject to change
*/
ICE_WRITE_REG(hw, GLINT_ITR(0, msix_vect), 0x1);
ICE_WRITE_REG(hw, QRX_ITR(base_queue + i), QRX_ITR_NO_EXPR_M);
//AAA-
cd x86_64-native-linuxapp-icc; ninja; sudo ninja install
eCPRI parsing is introduced in Wireless Edge DDP package. To check the DDP package version:
dmesg | grep -i ddp
[ 4113.361991] ice 0000:f4:00.0: The DDP package was successfully loaded: ICE Wireless Edge Package version 1.3.10.0
ICE OS Default Package version 1.3.4.0 is not good for us, we need to set a suggested one:
wget https://downloadmirror.intel.com/772044/800%20Series%20DDP%20for%20Wireless%20Edge%20Package%201.3.10.0.zip
We need to put the package at certain place:
adva@portwell3:~$ ll /lib/firmware/intel/ice/ddp/
total 1288
drwxr-xr-x 2 root root 4096 Apr 19 17:32 ./
drwxr-xr-x 3 root root 4096 Apr 17 11:27 ../
-rw-r--r-- 1 root root 577796 Jul 15 2020 ice-1.3.4.0.pkg
lrwxrwxrwx 1 root root 30 Apr 19 17:32 ice.pkg -> ice_wireless_edge-1.3.10.0.pkg*
-rwxr-xr-x 1 root root 725428 Apr 19 17:31 ice_wireless_edge-1.3.10.0.pkg*
NOTE: DPDK 20.11 might be not compatible with ice_wireless_edge-1.3.10.0.pkg