Front Haul Interface Library First Seed Contribution
[o-du/phy.git] / fhi_lib / readme.txt
1 #/******************************************************************************
2 #*
3 #*   Copyright (c) 2019 Intel.
4 #*
5 #*   Licensed under the Apache License, Version 2.0 (the "License");
6 #*   you may not use this file except in compliance with the License.
7 #*   You may obtain a copy of the License at
8 #*
9 #*       http://www.apache.org/licenses/LICENSE-2.0
10 #*
11 #*   Unless required by applicable law or agreed to in writing, software
12 #*   distributed under the License is distributed on an "AS IS" BASIS,
13 #*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #*   See the License for the specific language governing permissions and
15 #*   limitations under the License.
16 #*
17 #*******************************************************************************/
18 1. Introduction
19 xRAN Lib performs communication between the low-layer split central unit (lls-CU) and RU, it is highly-optimized software implementation based on Intel Architecture to provide the standard interface implementation based on O-RAN front haul interface specification. 
20
21 2. Supported features
22 please refer PRD in the table <<xRAN release track table.xlsx>>, only ICC compiler was supported for this version.
23
24 3. Fixed Issues
25 It's first version of seed code for feature development, future fixed issues will be tracked here.
26
27 4. Known Issues
28 From current unit testing coverage, no Know issues was founded yet.
29
30 5. Prerequisites for install
31
32 5.1 Intel Compiler version
33 icc -v
34 icc version 18.0.1 (gcc version 4.8.5 compatibility)
35
36 Link to ICC (community free version):
37 https://software.intel.com/en-us/system-studio/choose-download#technical
38
39
40 5.2  DPDK version
41 dpdk_18.08
42
43 5.3   compile DPDK with command
44 [dpdk]# ./usertools/dpdk-setup.sh
45
46 select [16] x86_64-native-linuxapp-icc
47 select [18] Insert IGB UIO module
48 exit   [35] Exit Script
49
50 5.4 Find PCIe device of Fortville port 
51
52 lspci |grep Eth
53 19:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
54 19:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
55 41:00.0 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GBASE-T (rev 04)
56 41:00.1 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GBASE-T (rev 04)
57 d8:00.0 << Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02) <<<< this one
58 d8:00.1 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02)
59
60 5.5 Corresponding Eth device via
61
62 ifconfig -a
63
64 find port Eth with correct PCIe Bus address as per list above
65
66 ethtool -i enp216s0f0
67 driver: i40e
68 version: 2.4.10  << i40e driver
69 firmware-version: 6.01 0x800034a4 1.1747.0
70 expansion-rom-version:
71 bus-info: 0000:d8:00.0 <<< this one 
72 supports-statistics: yes
73 supports-test: yes
74 supports-eeprom-access: yes
75 supports-register-dump: yes
76 supports-priv-flags: yes
77
78 5.6 install correct 2.4.10 i40e version if different (https://downloadcenter.intel.com/download/28306/Intel-Network-Adapter-Driver-for-PCIe-40-Gigabit-Ethernet-Network-Connections-Under-Linux-)
79
80 make sure firmare version is 
81
82 firmware-version: 6.01 
83
84 5.7 make sure that linux boot arguments are correct 
85
86 cat /proc/cmdline
87 BOOT_IMAGE=/vmlinuz-3.10.0-rt56 root=/dev/mapper/centos_5gnr--skx--sp-root ro crashkernel=auto rd.lvm.lv=centos_5gnr-skx-sp/root rd.lvm.lv=centos_5gnr-skx-sp/swap intel_iommu=off usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 intel_pstate=disable cgroup_disable=memory mce=off idle=poll hugepagesz=1G hugepages=20 hugepagesz=2M hugepages=0 default_hugepagesz=1G isolcpus=1-35 rcu_nocbs=1-35 kthread_cpus=0 irqaffinity=0 nohz_full=1-35
88  
89 5.8 enable SRIOV VF port for XRAN 
90
91 echo 2 > /sys/class/net/enp216s0f0/device/sriov_numvfs
92
93 see https://doc.dpdk.org/guides/nics/intel_vf.html
94
95 5.9 Check Virtual Function was created 
96
97 lspci |grep Eth
98 19:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
99 19:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
100 41:00.0 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GBASE-T (rev 04)
101 41:00.1 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GBASE-T (rev 04)
102 d8:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02)
103 d8:00.1 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02)
104 d8:02.0 Ethernet controller: Intel Corporation XL710/X710 Virtual Function (rev 02) <<<< this is XRAN port (u-plane)
105 d8:02.1 Ethernet controller: Intel Corporation XL710/X710 Virtual Function (rev 02) <<<< this is XRAN port (c-plane)
106
107 5.10 Configure VFs
108 - set mac to 00:11:22:33:44:66
109 - set Vlan tag to 2 (U-plane) for VF0
110 - set Vlan tag to 1 (C-plane) for VF1
111
112 [root@5gnr-sc12-xran app]# ip link set enp216s0f0 vf 0 mac 00:11:22:33:44:66 vlan 2
113 [root@5gnr-sc12-xran app]# ip link set enp216s0f0 vf 1 mac 00:11:22:33:44:66 vlan 1
114 [root@5gnr-sc12-xran app]# ip link show
115 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
116     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
117 2: enp65s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
118     link/ether a4:bf:01:3e:6b:79 brd ff:ff:ff:ff:ff:ff
119 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
120     link/ether a4:bf:01:3e:6b:7a brd ff:ff:ff:ff:ff:ff
121 4: enp25s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
122     link/ether 90:e2:ba:d3:b2:ec brd ff:ff:ff:ff:ff:ff
123 5: enp129s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
124     link/ether 3c:fd:fe:a8:e0:70 brd ff:ff:ff:ff:ff:ff
125 6: enp129s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
126     link/ether 3c:fd:fe:a8:e0:71 brd ff:ff:ff:ff:ff:ff
127 7: enp216s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
128     link/ether 3c:fd:fe:9e:93:68 brd ff:ff:ff:ff:ff:ff
129     vf 0 MAC 00:11:22:33:44:66, vlan 2, spoof checking on, link-state auto, trust off
130     vf 1 MAC 00:11:22:33:44:66, vlan 1, spoof checking on, link-state auto, trust off
131 8: enp25s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
132     link/ether 90:e2:ba:d3:b2:ed brd ff:ff:ff:ff:ff:ff
133 9: enp216s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
134     link/ether 3c:fd:fe:9e:93:69 brd ff:ff:ff:ff:ff:ff
135 12: enp216s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
136     link/ether 96:fa:4d:04:4d:87 brd ff:ff:ff:ff:ff:ff
137 13: enp216s2f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
138     link/ether a6:67:49:bb:bd:5e brd ff:ff:ff:ff:ff:ff
139  
140 6. Install xRAN Lib 
141  
142 6.1 start matlab and run gen_test.m
143 copy ant_*.bin  to /xran/app
144
145 6.2 build xran sample application
146 export XRAN_DIR=xRAN folder
147 export RTE_SDK=dpdk folder
148 [xRAN root folder]$ ./build.sh
149
150 6.3 update Eth port used for XRAN
151 in ./app/run_lls-cu.sh
152 ports have to match VF function from step 1.11 (0000:d8:02.0 - U-plane  0000:d8:02.1 C-plane)
153
154 6.4 Run dpdk.sh to assign port to PMD 
155
156 [xran root folder]# ./app/dpdk.sh
157
158 Network devices using DPDK-compatible driver
159 ============================================
160 0000:d8:02.0 'XL710/X710 Virtual Function 154c' drv=igb_uio unused=i40evf
161 0000:d8:02.1 'XL710/X710 Virtual Function 154c' drv=igb_uio unused=i40evf
162
163
164 6.5 Run XRAN lls-CU sample app 
165 setup RU mac address in config_file_lls_cu.dat
166 [xran root folder]# ./app/run_lls-cu.sh
167