Merge "new review to be raise"
authorSphoorthi Dayanand <sphoorthi.dayanand@radisys.com>
Mon, 14 Dec 2020 05:07:02 +0000 (05:07 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Mon, 14 Dec 2020 05:07:02 +0000 (05:07 +0000)
22 files changed:
Dockerfile
build/o1/install_lib.sh [changed mode: 0644->0755]
container-tag.yaml
docs/CellUpAndBroadcast.png [new file with mode: 0644]
docs/LicHeader.jpg [new file with mode: 0644]
docs/ModeofCommunication.jpg [new file with mode: 0644]
docs/O-DUHighInterfaces.jpg [new file with mode: 0644]
docs/O-DU_High_Low_Flow.jpg [new file with mode: 0644]
docs/ODUArch.jpg
docs/README
docs/StepsOfCommunication.jpg [new file with mode: 0644]
docs/UeAttach.png [new file with mode: 0644]
docs/api-docs.rst [new file with mode: 0644]
docs/developer-guide.rst [new file with mode: 0644]
docs/index.rst
docs/installation-guide.rst [new file with mode: 0644]
docs/overview.rst
docs/release-notes.rst
docs/user-guide.rst [new file with mode: 0644]
src/5gnrmac/mac_slot_ind.c
src/cm/common_def.h
src/du_app/du_mgr_main.c

index 2010fae..ddb9446 100644 (file)
@@ -1,5 +1,19 @@
 FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:9-u18.04 as ubuntu
 
+# ======================================================================
+# add netconf user
+RUN \
+      adduser --system netconf && \
+      echo "netconf:netconf" | chpasswd
+
+# generate ssh keys for netconf user
+RUN \
+      mkdir -p /home/netconf/.ssh && \
+      ssh-keygen -A && \
+      ssh-keygen -t dsa -P '' -f /home/netconf/.ssh/id_dsa && \
+      cat /home/netconf/.ssh/id_dsa.pub > /home/netconf/.ssh/authorized_keys
+
+
 ADD . /opt/o-du-l2
 WORKDIR /opt/o-du-l2
 
@@ -8,3 +22,11 @@ RUN apt-get update && apt-get install -y libpcap-dev
 RUN cd build/odu && make clean_odu odu MACHINE=BIT64 MODE=FDD
 
 #CMD /opt/o-du-l2/bin/odu/odu
+
+#cleanup netconf folder and install libraries
+RUN cd build/o1  && rm -rf netconf && /bin/bash install_lib.sh -c
+
+RUN cd build/o1  && make o1 MACHINE=BIT64
+
+# Install the data models based on the ODU yang model
+RUN /usr/local/bin/sysrepoctl -i build/o1/yang/o-ran-sc-odu-alarm-v1.yang
old mode 100644 (file)
new mode 100755 (executable)
index f807ba3..46efb3e
@@ -187,7 +187,7 @@ acknowledge() {
 #show help for user to provide valid input
 show_help(){
    echo "use -c option for cleanup"
-   echo "ex : $./install_netconf.sh -c"
+   echo "ex : $./install_lib.sh -c"
    exit
 }
 
index 7d9b195..ecd34c6 100644 (file)
@@ -1,4 +1,4 @@
 # The Jenkins job requires a tag to build the Docker image.
 # Global-JJB script assumes this file is in the repo root.
 ---
-tag: 2.0.3
+tag: 3.0.1
diff --git a/docs/CellUpAndBroadcast.png b/docs/CellUpAndBroadcast.png
new file mode 100644 (file)
index 0000000..ecf5250
Binary files /dev/null and b/docs/CellUpAndBroadcast.png differ
diff --git a/docs/LicHeader.jpg b/docs/LicHeader.jpg
new file mode 100644 (file)
index 0000000..44c0195
Binary files /dev/null and b/docs/LicHeader.jpg differ
diff --git a/docs/ModeofCommunication.jpg b/docs/ModeofCommunication.jpg
new file mode 100644 (file)
index 0000000..cb94a4f
Binary files /dev/null and b/docs/ModeofCommunication.jpg differ
diff --git a/docs/O-DUHighInterfaces.jpg b/docs/O-DUHighInterfaces.jpg
new file mode 100644 (file)
index 0000000..79257a4
Binary files /dev/null and b/docs/O-DUHighInterfaces.jpg differ
diff --git a/docs/O-DU_High_Low_Flow.jpg b/docs/O-DU_High_Low_Flow.jpg
new file mode 100644 (file)
index 0000000..bbcd108
Binary files /dev/null and b/docs/O-DU_High_Low_Flow.jpg differ
index 671b03d..1b9b772 100644 (file)
Binary files a/docs/ODUArch.jpg and b/docs/ODUArch.jpg differ
index a82ab65..742a102 100644 (file)
@@ -26,10 +26,10 @@ B. Pre-requisite for Compilation :
 2. GCC version 4.6.3 and above
 3. Install LKSCTP
    a. On Ubuntu : sudo apt-get install -y libsctp-dev
-   b. On CentOS : yum install lksctp-tools-devel
+   b. On CentOS : sudo yum install -y lksctp-tools-devel
 4. Install PCAP:
    a. On ubuntu : sudo apt-get install -y libpcap-dev
-   b. On CentOS : yum install libpcap-devel
+   b. On CentOS : sudo yum install -y libpcap-devel
 
 
 C. Pre-requisite for running O1 module:
diff --git a/docs/StepsOfCommunication.jpg b/docs/StepsOfCommunication.jpg
new file mode 100644 (file)
index 0000000..6aa0cdb
Binary files /dev/null and b/docs/StepsOfCommunication.jpg differ
diff --git a/docs/UeAttach.png b/docs/UeAttach.png
new file mode 100644 (file)
index 0000000..7cdc5d3
Binary files /dev/null and b/docs/UeAttach.png differ
diff --git a/docs/api-docs.rst b/docs/api-docs.rst
new file mode 100644 (file)
index 0000000..f6f623c
--- /dev/null
@@ -0,0 +1,156 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+
+API-Docs
+**********
+
+This is the API-docs for Cherry relase o-du/l2.
+
+.. contents::
+   :depth: 3
+   :local:
+
+
+Introduction
+-----------------
+This document lists the APIs implemented between various modules of ODU-High and their functionality.
+These are in line with ORAN-WG8.AAD-v2.05.00, hereafter referred to as AAD Spec.
+
+API Functions
+-------------
+1. RLC-MAC Interface
+
+   - AAD Spec : section 9.2.1
+
+   A. RLC to MAC
+   
+      a. Data Transfer(DL) : Transfers DL data to MAC as per Section 9.2.1.1 of the AAD Spec
+
+      b. Buffer Status Reporting(DL) : Reports DL data volume pending in the RLC entity, as per Section 9.2.1.4 of the
+         AAD Spec
+
+   B. MAC to RLC
+
+      a. Data Transfer(UL) : Transfers UL data to RLC as per Section 9.2.1.2 of the AAD Spec
+      b. Schedule Result Reporting (DL) : Reports DL schedule result to RLC as per Section 9.2.1.3 of the AAD Spec
+
+2. MAC-Scheduler Interface
+
+   - AAD Spec : section 9.2.2
+
+   A. MAC to Scheduler
+
+      a. Air Interface Time : Sends timing information over air interface in terms of SFN and slo, as per Section
+         9.2.2.1.1 of the AAD Spec
+
+      b. Cell Configuration Request : MAC provides SCH the cell configuration as per Section 9.2.2.2.1 of the AAD Spec
+
+      c. Add UE Configuration Request : MAC provides SCH the configuration/capabilities of a UE as per Section 9.2.2.2.3
+         of the AAD Spec
+
+      d. Modify UE Reconfiguration Request : MAC provides SCH the re-configuration of UE, also used to
+         add/release/modify existing bearers, as per Section 9.2.2.2.4 of the AAD Spec
+
+      e. RACH Indication : MAC receives the RACH Indication and share the contents with SCH as per Section 9.2.2.2.10 of
+         the AAD Spec
+
+      f. DL RLC Buffer Status Information : Reports data volume per LC when it is received at MAC as per Section
+         9.2.2.2.14 of the AAD Spec
+
+      g. UL Buffer Status Report Indication : On reception and decoding of received BSR from the UE, MAC provides SCH
+         buffer status report for UL scheduling, as per Section 9.2.2.2.16 of the AAD Spec
+        
+   B. Scheduler to MAC
+
+      a. Cell Configuration Response - Response to cell configuration request from MAC, as per Section 9.2.2.3.1 of the
+         AAD Spec
+
+      b. UE Reconfiguration Response - Response to UE reconfiguration request from MAC, as per Section 9.2.2.3.3 of the
+         AAD Spec
+
+      c. DL Scheduling Information - Provides scheduling information for a given slot for downlink data, as per Section
+         9.2.2.3.5 of the AAD spec.
+    
+      d. UL Scheduling Information - Provides scheduled information for MAC to form the UL_TTI.request towards O-DU Low,
+         as per Section 9.2.2.3.6 of the AAD Spec.
+
+      e. RAR Information - Informs MAC of uplink scheduling and Msg3 scheduling information, as per Section 9.2.2.3.7 of
+         the AAD Spec.
+
+      f. Downlink Control Channel Information - Provides DCI scheduling information for a given slot on PDCCH, as per
+         Section 9.2.2.3.8 of the AAD Spec
+
+      g. Downlink Broadcast Allocation - Provides DCI and DL data scheduling information for SIB1 for a given slot for
+         Broadcast Channel, as per Section 9.2.2.3.9 of the AAD Spec.
+
+3. DU APP - MAC Interface
+
+   - AAD Spec : section 9.2.3
+
+   A. DU APP to MAC
+   
+      a. Cell Start - Commands MAC to start cell at L1 and to start broadcasting system information, as per Section
+         9.2.3.1 of the AAD Spec.
+
+      b. UE Create Request - Adds UE information at MAC as per Section 9.2.3.3 of the AAD Spec.
+
+      c. UE Reconfiguration Request - Reconfigure UE information for a UE already added at MAC, as per Section 9.2.3.5
+         of the AAD Spec.
+
+      d. DL CCCH Indication - Sends DL CCCH Message to MAC to be sent to UE, as per Section 9.2.3.16 of the AAD Spec.
+
+   B. MAC to DU APP
+
+      a. UE Create Response - Response to UE Create Request from DU Manager as per Section 9.2.3.4 of the AAD Spec.
+
+      b. UE Reconfiguration Response - Response to UE Reconfiguration Request from DU APP as per Section 9.2.3.6 of the
+         AAD Spec.
+
+      c. UL-CCCH Indication - Sends the UL CCCH Message received from UE to DU APP as per Section 9.2.3.15 of AAD Spec.
+
+4. DU APP - RLC Interface
+
+   - AAD Spec : section 9.2.4
+
+   A. DU APP to RLC
+
+      a. UE Create - Adds UE associated RLC entity and related information as per Section 9.2.4.1 of the AAD Spec.
+
+      b. UE Reconfiguration - Reconfigures the UE associated RLC entity previously added at RLC, as per Section 9.2.4.1
+         of the AAD Spec.
+
+      c. DL RRC Message Transfer - Requests RLC to deliver RRC message from CU to the UE, as per Section 9.2.4.3 of the
+         AAD Spec.
+
+   B. RLC to DU APP
+
+      a. UL RRC Message Tranfer - Delivers RRC Message from UE to CU as per Section 9.2.4.4 of the AAD spec.
+
+      b. RRC Message Delivery Report - Informs DU Manager on failed/successful delivery of a DL RRC message to UE, as
+         per Section 9.2.4.5 of the AAD Spec.
+
+Additional APIs
+----------------
+
+1. DU APP - MAC Interface
+
+   A. DU APP to MAC
+     
+      a. Cell Configuration Request - Configures cell information at MAC
+
+   B. MAC to DU APP
+
+      a. Cell Configuration Response - Response to Cell Configuration Request from DU APP
+
+2. DU APP - RLC Interface
+
+   A. RLC to DU APP
+
+      a. UE Create Response - Response to UE Create Request from DU APP
+
+      b. UE Reconfiguration Response - Response to UE Recofiguration Request from DU APP
+
+      c. DL RRC Message Response - Informs DU APP if a DL RRC Message was successfuly processed at RLC and sent to MAC.
+
diff --git a/docs/developer-guide.rst b/docs/developer-guide.rst
new file mode 100644 (file)
index 0000000..d254049
--- /dev/null
@@ -0,0 +1,754 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Developer-Guide
+===============
+
+.. contents::
+   :depth: 3
+   :local:
+
+Introduction
+------------
+
+This document provides information required to work on O-DU High code-base.
+
+Coding Style
+------------
+
+O-DU High uses C languages. The coding guidelines followed are:
+
+   a. A new file should have License Header and Footer with exception of auto-generated files like files generated by
+      ASN tool. Refer to the diagram below for License header. 
+   b. Every block must be indented by 3 spaces.
+   c. Any header file must be included only in .c file, not in other header files.
+   d. The line width should not exceed more than 120 characters.
+
+.. figure:: LicHeader.jpg
+  :width: 600
+  :alt: Figure 6 License Header and Footer
+
+  Figure 6 : License Header and Footer
+
+O-DU High code
+---------------
+
+Refer to O-DU High code-base at: https://gerrit.o-ran-sc.org/r/gitweb?p=o-du/l2.git;a=tree
+
+Technical Details
+-----------------
+
+Below section references coding specifics of O-DU High components.
+
+Thread Management
+^^^^^^^^^^^^^^^^^
+
+Creation of Thread:
++++++++++++++++++++
+
+In O-DU High, multiple threads are created using below macro
+
+   ODU_CREATE_TASK (priority, stskId)
+
+      a. Creates a thread by declaring a thread id
+      b. Inputs
+      
+         - priority - Priority of the task
+         - stskId - Thread Id
+                                    
+Setting a core affinity:
+++++++++++++++++++++++++
+
+   ODU_SET_THREAD_AFFINITY (tskId, mode, coreId, tskAssociatedTskId)
+
+      a. Sets the processor/core affinity for a thread based on the mode supplied by the caller.
+      b. Inputs
+
+         - tskId - thread Id
+         - mode - mode according to which the affinity is set
+         - coreId - coreId to which the affinity has to be set
+         - tskAssociatedTskId - thread Id of the associated layer
+
+      c. Returns ROK on success and RFAILED on failure
+
+Registering Entities:
++++++++++++++++++++++++
+
+All logical entities in O-DU High must be registered into the database.
+
+   ODU_REG_TTSK (ent, inst, ttype, prior, initTsk, actvTsk)
+
+      a. Inputs
+
+         - ent - Id of the entity to activate. Example: ENTDUAPP, ENTSCTP, ENTEGTP etc
+         - Inst - Instance of the entity to activate. It distinguishes between multiple instances of the same entity on a
+          given processor. Example: RLC_UL_INST (Instance id 0) and RLC_DL_INST (Instance id 1) belong to the same entity id, ENTRLC.
+         - ttype - Type of entity
+         - prior - Priority, ranges from 0(Highest) to 3(Lowest).
+         - initTsk - Initialization function(xxActvInit) of the entity being registered gets invoked. Example: duActvInit initializes DU APP
+         - actvTsk - This function(xxActvTsk) is responsible to receive any incoming message to that entity. Example: duActvTsk is triggerred when a message comes to DU APP
+
+Attaching Entity to Thread:
++++++++++++++++++++++++++++
+
+Every entity must be attached to a thread to schedule its activation based on priority and incoming events. Any number
+of entities can be attached to a system task.
+
+   ODU_ATTACH_TTSK (ent, inst, stskId)
+
+      a. Inputs
+
+         - ent - Entity Id of the task
+         - inst -  Instance Id of the task
+         - stskId - Thread Id to use
+
+Memory Management
+^^^^^^^^^^^^^^^^^
+
+Configuration
++++++++++++++
+
+Memory is divided into multiple regions(identified by region id) and each region is divided into multiple pools(identified by pool id).
+The configurations are present in mt_ss.h and mt_ss.c at <rsys_directory>/l2/src/mt.
+Currently, the number of regions configured are 6 and each region has 5 pools.
+
+Region and pool used by each layer is identified by following macros:
+
+   - MAC    - MAC_MEM_REGION and MAC_POOL
+   - SCH    - SCH_MEM_REGION and SCH_POOL
+   - RLC UL - RLC_MEM_REGION_UL and RLC_POOL
+   - RLC_DL - RLC_MEM_REGION_DL and RLC_POOL
+   - DU APP - DU_APP_MEM_REGION and DU_POOL
+
+Static Memory
++++++++++++++
+
+Macros are defined at each layer for static memory allocation/deallocation from that layer's region and pool.
+
+   XX_ALLOC(bufPtr, size)
+
+      a. Allocates static buffer
+      b. Inputs:
+
+         - bufPtr - pointer to store address of the memory allocated
+         - size   - size of memory to be allocated
+
+      c. Result:
+
+         - If allocation is sucessful, butPtr stores memory address
+         - If allocation fails, bufPtr is NULL.
+
+   XX_FREE(bufPtr, size)
+
+      a. Frees static buffer
+      b. Inputs:
+
+         - bufPtr - pointer to memory to be freed
+         - size   - size of memory to be freed
+
+Here, XX stands for various ODU-High entity i.e.
+
+   - MAC    - MAC_ALLOC & MAC_FREE
+   - SCH    - SCH_ALLOC & SCH_FREE
+   - RLC    - RLC_ALLOC & RLC_FREE
+   - DU APP - DU_ALLOC & DU_FREE
+
+Sharable Memory
++++++++++++++++
+
+One of the methods of communication between layers is through sharabale memory.
+The sender will allocate sharable buffer from its own region and pool. 
+This memory will be freed by receiving layer and returned back to sender's region and pool.
+
+   XX_ALLOC_SHRABL_BUF(bufPtr, size)
+
+      a. Allocates sharable buffer
+      b. Inputs:
+
+         - bufPtr - pointer to store address of the memory allocated
+         - size   - size of memory to be allocated
+
+      c. Result:
+
+         - If allocation is sucessful, butPtr stores memory address
+         - If allocation fails, bufPtr is NULL.
+
+   XX_FREE_SHRABL_BUF(region, pool, bufPtr, size)
+
+      a. Frees sharabale buffer
+      b. Inputs:
+
+         - region - region where this buffer is allocated from
+         - pool   - pool where this buffer is allocated from
+         - bufPtr - pointer to memory to be freed
+         - size   - size of memory to be freed
+
+Here, XX stands for various ODU-High entities i.e.
+
+   - MAC    - MAC_ALLOC_SHRABL_BUF & MAC_FREE_SHRABL_BUF
+   - SCH    - Since scheduler communicates only with MAC and is tightly coupled, sharable buffers are not needed.
+   - RLC    - RLC_ALLOC_SHRABL_BUF & RLC_FREE_SHRABL_BUF
+   - DU APP - DU_ALLOC_SHRABL_BUF & DU_FREE_SHRABL_BUF
+
+Message Buffer
+++++++++++++++
+
+A message is an ordered sequence of bytes. It stores both the control information and the data being communicated.
+Message buffers are allocated from dynamic memory.
+
+   ODU_GET_MSG_BUF(region, pool, mBuf)
+
+      a. Allocates memory for message buffer
+      b. Inputs:
+
+         - region - region of sending layer
+         - pool   - pool of sending layer
+         - mBuf   - pointer to message buffer
+
+   ODU_PUT_MSG_BUF(mBuf)
+
+      a. Frees memory for message
+      b. Inputs:
+
+         - mBuf - message pointer
+
+WLS Memory
+++++++++++
+
+WLS memory is allocated for message exchanges between O-DU High and O-DU Low.
+
+   LWR_MAC_ALLOC(ptr, size)
+
+      a. Allocates WLS memory block
+      b. Inputs:
+
+         - ptr  - pointer to store address of the memory allocated
+         - size - size of memory to be allocated
+
+      c. Result:
+
+         - If allocation is sucessful, ptr stores memory address
+         - If allocation fails, ptr is NULL.
+
+   LWR_MAC_FREE(ptr, size)
+
+      a. Frees WLS block
+      b. Inputs:
+
+         - bufPtr - pointer to memory to be freed
+         - size   - size of memory to be freed
+
+Intra O-DU High Communication
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+O-DU high entities communicate with each other through one of the following:
+
+Types of Communication
+++++++++++++++++++++++
+
+Direct API Call
+###############
+
+Interface APIs invoked from one entity translate into direct function calls into the destination entity.
+Control returns to the calling entity after the called entity has completed processing the called function.
+
+   Macro to select this communication mode : ODU_SELECTOR_TC
+
+Serialization
+#############
+
+Interface API invoked from one entity is packed into a message and then sent to destination entity through system services.
+Control returns to the caller immediately after the message is posted, before the destination has seen or processed it.
+There are two serialization methods supported:
+
+   a. Pack/Unpack data 
+
+      - The interface data is packed into the message. Receiver will unpack this, parameter by parameter.
+      - Macro to select this communication mode : ODU_SELECTOR_LC
+
+   b. Pack/Unpack pointer 
+   
+      - The pointer to data is packed and sent. Receiver will unpack the pointer and directly access data at this address.
+      - Macro to select this communication mode : ODU_SELECTOR_LWLC
+
+Below figure depicts the mode of communication between various entities registered in O-DU High.
+Here, 
+
+   - TC stands for Direct API call
+   - LC stands for Serialization by packing/unpacking of data
+   - LWLC stands for Serialization by packing/unpacking of pointers
+
+.. figure:: ModeofCommunication.jpg
+   :width: 600
+   :alt: Figure 7 Mode of communication between O-DU High entities
+
+   Figure 7: Mode of communication between O-DU High entities
+
+Steps of Communication
+++++++++++++++++++++++
+
+1. Fill Post Structure
+
+   Information needed by system services to route API to the destination layer is stored in post structure.
+
+   | typedef struct pst
+   | {
+   |     ProcId   dstProcId;    /\* destination processor ID \*/
+   |     ProcId   srcProcId;    /\* source processor ID \*/
+   |     Ent      dstEnt;       /\* destination entity \*/
+   |     Inst     dstInst;      /\* destination instance \*/
+   |     Ent      srcEnt;       /\* source entity \*/
+   |     Inst     srcInst;      /\* source instance \*/
+   |     Prior    prior;        /\* priority \*/
+   |     Route    route;        /\* route \*/
+   |     Event    event;        /\* event \*/
+   |     Region   region;       /\* region \*/
+   |     Pool     pool;         /\* pool \*/
+   |     Selector selector;     /\* selector \*/
+   |     uint16_t spare1;       /\* spare for alignment \*/
+   | } Pst;
+
+2. Pack API into message
+
+   At sender, API is packed i.e. the data is stored into a message in ordered sequence of bytes.
+   At receiver, the data is unpacked from the message and its corresponding handler is invoked.
+
+   a. If pst->selector is LC, each parameter is packed/unpacked one by one using one of the below.
+
+      - oduPackUInt8(val, mBuf) - Packs 8-bits value(val) into message(mBuf)
+      - oduUnpakcUInt8(val, mBuf) - Unpacks 8-bits from message(mBuf) and stores in val
+      - oduPackUInt16(val, mBuf) - Packs 16-bits value(val) into message(mBuf)
+      - oduUnpakcUInt16(val, mBuf) - Unpacks 16-bits from message(mBuf) and stores in val
+      - oduPackUInt32(val, mBuf) - Packs 32-bits value(val) into message(mBuf)
+      - oduUnpakcUInt32(val, mBuf) - Unpacks 16-bits from message(mBuf) and stores in val
+
+      The sequence in which the parameters are unpacked must be reverse of the packing sequence.
+
+   b. If pst->selector is LWLC, pointer to the interface structure is packed/unpacked.
+
+      - oduPackPointer(ptr, mBuf) - Packs pointer value(ptr) into message(mBuf)
+      - oduUnpackPointer(ptr, mBuf) - Unpacks pointer value from message(mBuf) and stores in ptr
+
+3. Post the message
+
+   Once the post information is filled and API is packed into a message, it is posted to destination using:
+
+      ODU_POST_TASK(pst, mBuf)
+
+         a. Inputs
+
+            - pst  - post structure mentioned above
+            - mBuf - message
+
+Below figure summarized the above steps of intra O-DU High communication
+
+.. figure:: StepsOfCommunication.jpg
+   :width: 600
+   :alt: Figure 8 Communication between entities
+
+   Figure 8: Steps of Communication between O-DU High entities
+
+
+Communication with Intel O-DU Low
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Intel O-DU Low communicates with O-DU High over WLS interface. Hence, Intel's "wls_lib.h" library is required for using
+the following APIs for communication.
+
+1. **WLS_Open**
+
+   *void\* WLS_Open(const char \*ifacename, unsigned int mode, unsigned long long nWlsMemorySize)*
+
+      a. Description
+
+         - Opens the WLS interface and registers as instance in the kernel space driver.
+         - Control section of shared memory is mapped to application memory.
+
+      b. Inputs:
+
+         - ifacename - pointer to string with device driver name (/dev/wls)
+         - mode      - mode of operation (Master or Slave). Here, O-DU High acts as MASTER.
+
+      c. Returns pointer handle to WLS interface for future use by WLS functions
+
+2. **WLS_Ready**
+
+   *int WLS_Ready(void \*h)*
+
+      a. Description
+
+         - Checks the state of remote peer of WLS interface
+
+      b. Inputs - handle of WLS interface
+      c. Returns 0 if peer is available i.e. one to one connection is established
+
+3. **WLS_Close**
+
+   *int WLS_Close(void \*h)*
+
+      a. Description
+
+         - Closes the WLS interface and de-registers as instance in the kernel space driver
+         - Control section of shared memory is unmapped form user space application
+
+      b. Input - handle of WLS interface to be closed
+      c. Returns 0 if operation is successful
+
+4. **WLS_Alloc**
+
+   *void\* WLS_Alloc(void\* h, unsigned int size)*
+
+      a. Description
+
+         - Allocates memory block for data exchange shared memory. Memory block is backed by huge pages.
+         - Memory is allocated only once for L2, and divided into various regions.
+
+      b. Input
+
+         - h   - handle of WLS interface
+         - size - size of memory block to allocate
+
+      c. Returns 
+         
+        - Pointer to allocated memory block
+        - NULL on memory allocation failure
+
+5. **WLS_Free**
+
+   *int WLS_Free(void\* h, void\* pMsg)*
+
+      a. Description
+
+         - Frees memory block for data exchanged on shared memory.
+
+      b. Input
+
+         - h    - handle of WLS interface
+         - pMsg - pointer to WLS memory
+
+      c. Returns 0 if operation is sucessful
+
+6. **WLS_Put**
+
+   *int WLS_Put(void\* h, unsigned long long pMsg, unsigned int MsgSize, unsigned short MsgTypeID, unsigned short
+   Flags)*
+
+      a. Description
+
+         - Puts memory block (or group of blocks) allocated from WLS memory into the interface to transfer to remote peer
+
+      b. Input
+
+         - h    - handle of WLS interface
+         - pMsg - pointer to memory block (physical address) with data to be transfered to remote peer
+         - MsgSize - size of memory block to send (should be less than 2 MB)
+         - MsgTypeID - application specific identifier of message type
+         - Flags - Scatter/Gather flag if memory block has multiple chunks
+
+      c. Returns 0 if operation is successful
+
+7. **WLS_Check**
+
+   *int WLS_Check(void\* h)*
+
+      a. Description
+
+         - Checks if there are memory blocks with data from remote peer
+
+      b. Input - handle of WLS interface
+      c. Returns number of blocks available for "get" operation
+
+8. **WLS_Wait**
+
+   *int WLS_Wait(void\* h)*
+
+      a. Description
+
+         - Waits for new memory block from remote peer
+         - Blocking call
+
+      b. Input - the handle of WLS interface
+      c. Returns number of blocks available for "get" operation
+
+9. **WLS_Get**
+
+   *unsigned long long WLS_Get(void\* h, unsigned int \*MsgSize, unsigned short \*MsgTypeID, unsigned short \*Flags)*
+
+      a. Description
+
+         - Gets memory block from interface received from remote peer.
+         - Non-blocking operation
+
+      b. Input
+   
+         - h    - handle of WLS interface
+         - MsgSize - pointer to set size of memory block
+         - MsgTypeID - pointer to application specific identifier of message type
+         - Flags - pointer to Scatter/Gather flag if memory block has multiple chunks
+
+      c. Returns
+  
+         - Pointer to memory block (physical address) with data received from remote peer
+         - NULL if error or no blocks available
+
+10. **WLS_WGet**
+
+    *unsigned long long WLS_WGet(void\* h, unsigned int \*MsgSize, unsigned short \*MsgTypeID, unsigned short \*Flags)*
+
+       a. Description
+
+          - Gets memory block from interface received from remote peer
+          - It is a blocking operation and waits for next memory block from remote peer
+
+       b. Input
+
+          - h    - handle of WLS interface
+          - MsgSize - pointer to set size of memory block
+          - MsgTypeID - pointer to application specific identifier of message type
+          - Flags - pointer to Scatter/Gather flag if memory block has multiple chunks
+
+       c. Returns
+
+          - Pointer to memory block (physical address) with data received from remote peer
+          - NULL if error or no blocks available
+
+11. **WLS_WakeUp**
+
+    *int WLS_WakeUp(void\* h)*
+
+       a. Description
+
+          - Performs "wakeup" notification to remote peer to unblock "wait" operations pending
+
+       b. Input - handle of WLS interface
+       c. Returns 0 if operation is successful
+
+12. **WLS_VA2PA**
+
+    *unsigned long long WLS_VA2PA(void\* h, void\* pMsg)*
+
+       a. Description
+
+          - Converts virtual address (VA) to physical address (PA)
+
+       b. Input
+
+          - h    - handle of WLS interface
+          - pMsg - virtual address of WLS memory block
+
+       c. Returns
+
+          - Physical address of WLS memory block
+          - NULL, if error
+
+13. **WLS_PA2VA**
+
+    *void\* WLS_PA2VA(void\* h, unsigned long long pMsg)*
+
+       a. Description
+
+          - Converts physical address (PA) to virtual address (VA)
+
+       b. Input
+
+          - h    - handle of WLS interface
+          - pMsg - physical address of WLS memory block
+
+       c. Returns
+
+          - Virtual address of WLS memory block
+          - NULL, if error
+
+14. **WLS_EnqueueBlock**
+
+    *int WLS_EnqueueBlock(void\* h, unsigned long long pMsg)*
+
+       a. Description
+
+          - Used by the Master to provide memory blocks to slave for next slave-to-master data transfer
+
+       b. Input
+
+          - h    - handle of WLS interface
+          - pMsg - physical address of WLS memory block
+
+       c. Returns 0 if opertaion is successful
+
+15. **WLS_DequeueBlock**
+
+    *unsigned long long WLS_DequeueBlock(void\* h)*
+
+      a. Description
+
+         - Used by the Master and Slave to get block from master-to-slave queue of available memory blocks
+
+      b. Input - handle of WLS interface
+      c. Returns
+
+         - Physical address of WLS memory block
+         - NULL, if error
+
+16. **WLS_NumBlocks**
+
+    *int WLS_NumBlocks(void\* h)*
+
+       a. Description
+
+          - Returns number of current available block provided by the Master for new transfer of data from slave
+
+       b. Input - handle of WLS interface
+       c. Returns number of available blocks in slave to master queue
+
+Additional Utility Functions
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+1. ODU_START_TASK(startTime, taskId)
+
+      a. Gives current time through input parameter
+      b. Input
+
+         - startTime - stores current time to be returned
+         - taskId - task id of calling entity
+
+2. ODU_STOP_TASK(startTime, taskId)
+
+      a. Calculates difference of start time and current time.
+      b. Input
+
+         - startTime - start time of this task
+         - taskId - taskId of calling entity
+
+3. ODU_SET_PROC_ID(procId)
+      
+      a. Processors are identified by processor identifiers (ProcId) that are globally unique.
+         It sets the procId for the local processor. In O-DU High, procId is 0 (DU_PROC)
+      b. Inputs
+
+         - procId - process id to be set
+
+4. ODU_GET_PROCID()
+
+      a. Finds and returns the local processor id on which the calling task is running
+      b. Inputs
+
+         - void
+
+5. ODU_CAT_MSG(mbuf1, mbuf2, order)
+    
+      a. Concatenates the given two message.
+      b. Inputs
+
+         - mbuf1 - pointer to message buffer 1
+         - mbuf2 - pointer to message buffer 2
+         - order - order in which the messages are concatenated
+
+6. ODU_GET_MSG_LEN(mBuf, lngPtr)
+
+      a. Determines length of the data contents of a message 
+      b. Inputs
+
+         - mBuf - pointer to the message buffer
+         - lngPtr - pointer to store length value
+
+7. ODU_EXIT_TASK()
+
+      a. Gracefully exits the process
+      b. Inputs
+
+         - void
+
+8. ODU_PRINT_MSG(mBuf, src, dst)
+
+      a. Prints information about message buffer.
+      b. Inputs
+
+         - mBuf - pointer to the message buffer
+         - src  - source Id
+         - dest - destination Id
+   
+9. ODU_REM_PRE_MSG(dataPtr, mBuf)
+
+      a. Removes one byte of data from the beginning of a message
+      b. Inputs
+
+         - dataPtr - pointer to the location where one byte of data is placed
+         - mBuf - pointer to the message buffer
+   
+10. ODU_REM_PRE_MSG_MULT(dst, cnt, mBuf)
+
+      a. Removes the specified number of bytes of data from the beginning of a message 
+      b. Inputs
+
+         - dst - pointer to the location where the data bytes are placed.
+        - cnt - number of bytes to be removed from the message.
+        - mBuf- pointer to the message.
+
+11. ODU_REG_TMR_MT(ent, inst, period, func)
+
+      a. Registers timer function of an entity with system services
+      b. Inputs
+
+         - ent - entity ID of task registering the timer.
+        - inst - instance of task registering the timer.
+        - period - period in system ticks between system service sccessive scheduling 
+          of the timer function in the entity
+        - func - timer function.
+
+12. ODU_SEGMENT_MSG(mBuf1, idx, mBuf2)
+
+      a. Segments a message into two messages at the specified index. 
+      b. Inputs
+
+         - mBuf1 - Message 1, original message to be segmented
+         - idx - index in message 1 from which message 2 is created.
+         - mBuf2 - pointer to message buffer 2 (new message).
+
+13. ODU_ADD_PRE_MSG_MULT(src, cnt, dst)
+
+       a. Copies consecutive bytes of data to the beginning of a message
+       b. Inputs
+
+          - src - source buffer
+         - cnt - number of bytes
+         - dst - destination message
+
+14. ODU_ADD_PRE_MSG_MULT_IN_ORDER(src, cnt, dst)
+
+       a. Copies consecutive bytes of data to the beginning of a message and keeps the bytes order preserved
+       b. Inputs
+       
+          - src - source buffer
+          - cnt - number of bytes
+          - dst - destination message
+
+15. ODU_ADD_POST_MSG_MULT(src, cnt, dst)
+
+       a. Copies consecutive bytes of data to the end of a message
+       b. Inputs
+       
+          - src - source buffer
+          - cnt - number of bytes
+          - dst - destination message
+       
+16. ODU_COPY_MSG_TO_FIX_BUF(src, srcIdx, cnt, dst, ccnt)
+
+       a. Copies data from a message buffer into a fixed buffer
+       b. Inputs
+
+          - src - source message
+          - srcIdx - start index of source buffer to be copied
+         - cnt - number of bytes to be copied
+         - dst - destination buffer
+         - ccnt - number of bytes copied
+
+17. ODU_COPY_FIX_BUF_TO_MSG(src, dst, dstIdx, cnt, ccnt)
+
+       a. Copies data from a fixed buffer to a message buffer
+       b. Inputs
+          
+         - src - source buffer
+         - dst - destination message
+         - dstIdx - index in destination message to starting copying bytes from
+         - cnt - number of bytes to be copied
+         - ccnt - number of bytes copied
+
index 0a80ad9..40ef0fd 100644 (file)
@@ -11,8 +11,10 @@ Welcome to O-RAN SC O-DU-L2 Documentation
 
    overview.rst
    release-notes.rst
-
-
+   installation-guide.rst
+   user-guide.rst
+   api-docs.rst
+   developer-guide.rst
 
 * :ref:`genindex`
 * :ref:`modindex`
diff --git a/docs/installation-guide.rst b/docs/installation-guide.rst
new file mode 100644 (file)
index 0000000..f2e86be
--- /dev/null
@@ -0,0 +1,161 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+.. contents::
+   :depth: 3
+   :local:
+
+O-DU High Installation Guide
+*****************************
+
+Abstract
+========
+
+This document describes how to install O-DU High, it's dependencies and required system resources.
+
+.. contents::
+   :depth: 3
+   :local:
+
+Version history
+
+
++--------------------+--------------------+--------------------+--------------------+
+| **Date**           | **Ver.**           | **Author**         | **Comment**        |
+|                    |                    |                    |                    |
++--------------------+--------------------+--------------------+--------------------+
+| 2020-12-04         |  1.0               |  Radisys           |  Cherry Release    |
+|                    |                    |                    |                    |
++--------------------+--------------------+--------------------+--------------------+
+
+
+Introduction
+============
+
+This document describes the hardware and software requirements along with guidelines on how to install O-DU High.
+
+The audience of this document is assumed to have good knowledge in RAN concepts and Linux system.
+
+
+Preface
+=======
+
+O-DU High images can be built using the source code or corresponding docker images can be downloaded.
+
+
+Hardware requirements
+=====================
+
+Following minimum hardware requirements must be met for installation of O-DU High
+
++--------------------+----------------------------------------------------+
+| **HW Aspect**      | **Requirement**                                    |
+|                    |                                                    |
++--------------------+----------------------------------------------------+
+| **# of servers**   |         1                                                 |
++--------------------+----------------------------------------------------+
+| **CPU**            |         4                                                 |
+|                    |                                                    |
++--------------------+----------------------------------------------------+
+| **RAM**            |  8G                                               |
+|                    |                                                    |
++--------------------+----------------------------------------------------+
+| **Disk**           |         500G                                              |
+|                    |                                                    |
++--------------------+----------------------------------------------------+
+| **NICs**           |         1                                                 |
+|                    |                                                    |
++--------------------+----------------------------------------------------+
+
+
+Software installation and deployment
+==========================================
+
+This section describes the installation of the O-DU High on the reference hardware.
+
+Libraries
+----------
+
+Following libraries are required to compile and execute O-DU High:
+
+- GCC 
+   - Ubuntu : sudo apt-get install -y build-essential
+   - CentOS : sudo yum groups mark install -y “Development Tools”
+
+   Ensure the version is 4.6.3 and above using
+
+   -   gcc --version
+
+- LKSCTP
+   - Ubuntu : sudo apt-get install -y libsctp-dev
+   - CentOS : sudo yum install -y lksctp-tools-devel
+
+- PCAP:
+   - Ubuntu : sudo apt-get install -y libpcap-dev
+   - CentOS : sudo yum install -y libpcap-devel
+
+Cloning code
+--------------
+
+- Create a folder to clone the O-DU High code into. The folder is hereafter referred to as <O-DU High Directory>.
+
+- Clone code into <O-DU High Directory> 
+
+  git clone "https://gerrit.o-ran-sc.org/r/o-du/l2" && (cd "l2" && mkdir -p .git/hooks && curl -Lo `git rev-parse
+  --git-dir`/hooks/commit-msg https://gerrit.o-ran-sc.org/r/tools/hooks/commit-msg; chmod +x `git rev-parse
+  --git-dir`/hooks/commit-msg)
+
+
+Compilation
+------------
+
+- Build O-DU High:
+
+   - Navigate to Build folder
+
+       cd <O-DU High Directory>/l2/build/odu
+
+   - Clean O-DU High binary
+
+       make clean_odu MACHINE=BIT64 MODE=FDD
+
+   - Build O-DU High binary
+   
+       make odu MACHINE=BIT64 MODE=FDD
+
+- Build CU Stub :
+
+   - Navigate to Build folder
+   
+       cd <O-DU High Directory>/l2/build/odu
+
+   - Clean CU Stub binary
+   
+       make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+
+   - Build CU Stub binary
+   
+       make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+
+- Build RIC Stub :
+
+   - Navigate to Build folder
+   
+       cd <O-DU High Directory>/l2/build/odu
+
+   - Clean RIC Stub binary
+   
+       make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+
+   - Build RIC Stub binary
+   
+       make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+
+
+The above generated images can be found at:
+
+- O-DU High - <O-DU High Directory>/l2/bin/odu
+
+- CU Stub   - <O-DU High Directory>/l2/bin/cu_stub
+
+- RIC Stub  - <O-DU High Directory>/l2/bin/ric_stub
index 4505470..caeffa6 100644 (file)
@@ -2,40 +2,44 @@
 .. SPDX-License-Identifier: CC-BY-4.0
 
 
-O-DU-L2 Architecture
-======================
+O-DU High Overview
+*********************
 
+O-DU High Architecture
+======================
 
-O-DU implements the functional blocks of L2 layer of a 5G NR protocol stacks.
-These layers primarily include NR MAC NR Scheduler and NR RLC layers.
+O-DU implements the functional blocks of L2 layer of a 5G NR protocol stack in SA(StandAlone) mode.
+These layers primarily include NR MAC, NR Scheduler and NR RLC layers.
 
 O-DU modules are developed as shown in the below diagram.
 
-.. image:: ODUArch.jpg
-  :width: 400
-  :alt: ODU Arch diagram
+.. figure:: ODUArch.jpg
+  :width: 600
+  :alt: Figure 1 O-DU High Architecture Diagram
 
-O-DU Thread Architecture
---------------------------
+  Figure 1 - O-DU High Architecture Diagram
+
+O-DU High Thread Architecture
+-------------------------------
 
-As shown in Figure 1, there are multiple entities within O-DU. Modules sharing a
+As shown in Figure 1, there are multiple entities within O-DU High. Modules sharing a
 given color belong to one thread. O-DU architecture can be defined at a thread
 level as follows:
 
--      Thread 1: O-DU thread
+- Thread 1: O-DU thread
 
--      Thread 2: DU APP inclusive of Config Handler, DU Manager, UE Manager, EGTP Handler and ASN.1 Codecs
+- Thread 2: DU APP inclusive of Config Handler, DU Manager, UE Manager, EGTP Handler and ASN.1 Codecs
 
--      Thread 3: 5G NR RLC DL and MAC (inclusive of 5G NR SCH and Lower MAC)
+- Thread 3: 5G NR RLC DL and MAC (inclusive of 5G NR SCH and Lower MAC)
 
--      Thread 4: 5G NR RLC UL
+- Thread 4: 5G NR RLC UL
 
--      Thread 5: SCTP Handler
+- Thread 5: SCTP Handler
 
--       Thread 6: Lower MAC Handler
+- Thread 6: Lower MAC Handler
 
 
-O-DU Modules
+O-DU High Modules
 --------------------------
 
 DU APP 
@@ -43,26 +47,28 @@ DU APP
 This module configures and manages all the operations of O-DU.
 It interfaces with external entities as follows:
 
--      OAM:  DU APP interacts with OAM on the O1 interface for configuration, alarms and performance management.
+- OAM:  DU APP interacts with OAM on the O1 interface for configuration, alarms and performance management.
 
--      O-CU: DU APP interacts with O-CU for RAN functionalities over the F1 interface which is built on SCTP. Control messages are exchanged on the F1-C interface and data messages on the F1-U interface.
+- O-CU: DU APP interacts with O-CU for RAN functionalities over the F1 interface which is built on SCTP. Control messages are exchanged on the F1-C interface and data messages on the F1-U interface.
 
--      RIC: DU APP interacts with RIC on E2 interface over SCTP.
+- RIC: DU APP interacts with RIC on E2 interface over SCTP.
 
 
 DU App submodules are as follows:
 
--      Config Handler manages the configurations received on O1 interfaces andstores them within DU APP context.
+- Config Handler manages the configurations received on O1 interfaces and stores them within DU APP context.
 
--      DU Manager handles all cell operations at the DU APP.
+- DU Manager handles all cell operations at the DU APP.
 
--      UE Manager handles UE contexts at the DU APP.
+- UE Manager handles UE contexts at the DU APP.
 
--      SCTP handler is responsible for establishing SCTP connections with O-CU, RIC.
+- SCTP handler is responsible for establishing SCTP connections with O-CU, RIC on the F1AP and E2AP interfaces
+  respectively.
 
--      EGTP handler is responsible for establishing EGTP connection with O-CU for data message exchange.
+- EGTP handler is responsible for establishing EGTP connection with O-CU for data message exchange on the F1-U
+  interface.
 
--      ASN.1 Codecs contain ASN.1 encode/decode functions which are used for System information, F1AP and E2AP messages.
+- ASN.1 Codecs contain ASN.1 encode/decode functions which are used for System information, F1AP and E2AP messages.
 
 5G NR RLC
 ^^^^^^^^^^^^^^^^^^
@@ -78,16 +84,222 @@ This module uses the services of the NR physical layer to send and receive data
 on the various logical channels.
 Functions of the 5G NR MAC module are as follows:
 
--      5G NR MAC is responsible for multiplexing and de-multiplexing of the data on various logical channels.
+- 5G NR MAC is responsible for multiplexing and de-multiplexing of the data on various logical channels.
 
--      5G NR SCH schedules resources on UL and DL for cell and UE based procedures.
+- 5G NR SCH schedules resources in UL and DL for cell and UE based procedures.
+  5G NR SCH is completely encapsulated within the 5G NR MAC i.e., all interactions of the 5G NR SCH is via the 5G NR MAC.
+
+- Lower MAC interfaces between the MAC and the O-DU Low. It implements all the messages of FAPI
+  specification. It has a receiver thread to handle messages from L1.
 
--      Lower MAC interfaces between the MAC and the lower layers of the O-DU and implements all the messages of FAPI
-       specification. It has a receiver thread to handle messages from L1.
 
 O-DU Utility and Common Functions
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-These modules help in the working of O-DU and message exchanges between
-the O-DU modules.
+These modules contain platform specific files and support O-DU High functionality and message exchanges.
+
+
+O-DU-High Interfaces
+======================
+
+
+This section describes the other modules that O-DU High interfaces with, as shown in below diagram.
+
+.. figure:: O-DUHighInterfaces.jpg
+  :width: 600
+  :alt: O-DU High Interfaces
+
+  Figure 2 - O-DU High Interfaces
+
+
+As shown in Figure 2, O-DU High interfaces with the following modules:
+
+- O-CU: O-DU High communicates with O-CU on the F1AP interface. The control message exchanges are on F1-C while
+  data message exchanges are on F1-U interfaces. The below F1AP messages on F1-C are implemented, as per
+  3GPP 38.473-f60 v15.3:
+
+  - Interface Management
+
+    - F1 Setup
+
+    - gNB-DU Configuration Update
+
+    - F1 Reset
+
+  - UE Context Management 
+
+    - UE Context Setup
+
+  - RRC Message Transfer
+               
+    - Initial UL RRC Message Transfer
+
+    - DL RRC Message Transfer
+
+    - UL RRC Message Transfer
+
+    - RRC Delivery Report
+
+- Near RT RIC: O-DU High communicates with Near RT RIC on the E2 interface. The below E2AP messages are
+  implemented, as per ORAN WG3.E2AP v01.00:
+
+  - Global Procedures
+
+    - E2 Setup
+
+  - Near RT RIC Functional Procedures
+               
+    - RIC Subscription
+
+    - RIC Indication
+
+- O-DU Low: O-DU High communicates with O-DU Low on the FAPI interface. The below FAPI messages are supported, 
+  as per FAPI interface files shared by Intel:
+
+  - P5 messages - PHY mode control interface
+       
+    - PARAM.request/PARAM.response
+
+    - CONFIG.request/CONFIG.response
+
+    - START.request
+
+    - STOP.request
+
+    - STOP.indication
+
+  - P7 messages - Main data path interface
+
+    - DL_TTI.request
+
+    - UL_TTI.request
+
+    - SLOT.indication
+
+    - UL_DCI.request
+
+    - TX_Data.request
+
+    - RX_Data.indication
+
+    - CRC.indication
+
+    - UCI.indication
+
+    - RACH.indication
+
+- OAM: O-DU High communicates with OAM on the O1 interface.
+
+
+
+O-DU High functionality
+========================
+
+
+Cell Up and Broadcast Procedure
+--------------------------------
+
+This section describes the cell-up procedure within O-DU High.
+
+.. figure:: CellUpAndBroadcast.png
+  :width: 720
+  :alt: Cell Up and Broadcast Procedure
+
+  Figure 3 - O-DU High Cell Up and Broadcast Procedure
+
+
+As seen in the Figure 3,
+- The DU APP module of O-DU High sends F1 Setup Request to O-CU. This message contains a list of cells that the O-DU High has been configured with.
+
+- The O-CU responds with F1 Setup Response. This message contains a list of cells which must be activated.
+
+- The O-DU High scans the list of cells received and sends corresponding cell configurations to 5G NR MAC.
+
+- 5G NR MAC, in-turn configures the 5G NR SCH. It also configures the O-DU Low via the Lower MAC module.
+
+- On receiving the cell config response, DU APP sends a gNB DU Config Update towards the O-CU. The O-CU responds with
+  gNB DU Config Update ACK towards the O-DU High.
+
+- The DU APP now exchanges F1 Reset message with the O-CU to initialize the UE contexts.
+
+- DU APP sends Cell Start Req towards 5G NR MAC. This message is translated by the Lower MAC into the FAPI message START.request towards the O-DU
+  Low.
+
+- On receiving START.request, O-DU Low begins to send slot indications towards 5G NR MAC via the lower MAC.
+  The frequency of these slot indications is determined by the numerology(Mu) supported.
+  5G NR MAC forwards these slot indications to the 5G NR SCH and DU APP modules.
+
+- When the first slot indication reaches the DU APP, cell is marked as up.
+
+- The 5G NR SCH, keeps tracking the SSB and SIB1 ocassions on receiving regular slot indications. 
+  On detecting the relevant ocassion, 5G NR SCH schedules SSB/SIB1 and forwards the DL Scheduling Information to 5G NR MAC.
+
+- The 5G NR MAC mutiplexes the PDU and sends SSB/SIB1 packets towards the O-DU Low through the Lower MAC.
+
+
+
+UE Related Procedure
+-----------------------
+
+
+The O-DU High supports 
+
+- All physical channels - PBCH, PRACH, PDCCH, PDSCH, PUSCH, PUCCH
+
+- All control logical channels - UL CCCH, DL CCCH, UL DCCH, DL DCCH
+
+- All control transport channels - BCH, UL-SCH, DL-SCH, RACH
+
+The above channels are used to achieve the below messages:
+
+- Cell broadcast of System Information which includes SSB and SIB1.
+
+- RACH Procedure
+
+  - RACH Indication
+
+  - Random Access Response
+
+  - RRC Setup Request
+
+  - RRC Setup
+
+- UE attach signalling flow
+
+  - RRC Setup Complete
+
+  - Registraton Request
+
+  - Security Mode Command
+
+  - Security Mode Complete
+
+  - Registraton Accept
+
+  - Registraton Complete
+
+  - Several NAS Message Exchanges
+
+  - RRC Reconfiguration
+
+  - RRC Reconfiguration Complete
+
+Figure 4 below depicts the above call flow, inclusive of all interfaces:
+
+.. figure:: UeAttach.png
+  :width: 800
+  :alt: O-DU High UE Attach Flow
+
+  Figure 4 - UE Attach Flow
+
+
+
+OSC Testcases Supported
+=========================
+
+The O-DU High partially supports below use-cases:
+
+- Traffic Steering
+
+- Health Check
 
 
index 7841875..63ceb5e 100644 (file)
@@ -3,7 +3,7 @@
 
 
 Release-Notes
-=============
+**************
 
 
 This document provides the release notes for Bronze Release of O-DU-L2.
@@ -20,10 +20,13 @@ Version history
 | **Date**           | **Ver.**           | **Author**         | **Comment**        |
 |                    |                    |                    |                    |
 +--------------------+--------------------+--------------------+--------------------+
-| 2020-06-17         | 0.2.0              | Radisys            | Bronze Release     |
+| 2020-12-04         | 3.0.0              | Radisys            | Cherry Release     |
 |                    |                    |                    |                    |
 +--------------------+--------------------+--------------------+--------------------+
-| 2019-10-29         | 0.1.0              | Radisys            | Amber Release      |
+| 2020-06-17         | 2.0.0              | Radisys            | Bronze Release     |
+|                    |                    |                    |                    |
++--------------------+--------------------+--------------------+--------------------+
+| 2019-12-29         | 1.0.0              | Radisys            | Amber Release      |
 |                    |                    |                    |                    |
 +--------------------+--------------------+--------------------+--------------------+
 
@@ -31,6 +34,28 @@ Version history
 Summary
 -------
 
+Cherry
+^^^^^^^^
+This release contains the following:
+
+- Implementation of UE attach signalling procedure on single carrier.
+  All message exchanges within O-DU High are in line with WG8 AAD spec.
+
+- Enhancements to F1-C interface as required for UE attach procedure.
+
+- Enhancements to FAPI interface towards O-DU Low as required for UE attach procedure.
+
+- Support for all short PRACH formats.
+
+- Integration of FAPI P5 messages with Intel's O-DU Low in Timer mode.
+
+- Code support for alignment with latest FAPI interface files from Intel.
+
+- Implementation of O1 interface.
+
+- Partial implementation of Health Check use-case with get-Alarm list API.
+
+
 Bronze
 ^^^^^^^^
 This release contains the following:
@@ -56,6 +81,7 @@ This release contains the following:
 - Partial implementation of RLC layer interfaces towards upper and lower layers
   conforming to AAD spec.
 
+
 Amber
 ^^^^^
 This release contains the following:
@@ -70,6 +96,27 @@ This release contains the following:
 Release Data
 ------------
 
+Cherry
+^^^^^^ 
++--------------------------------------+--------------------------------------+
+| **Project**                          | ODUHIGH                             |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Repo/commit-ID**                   | o-du/l2/                             |
+|                                      | fc0bcf28e944ae7ba2423ad3c9a5c794df2dc|
+|                                      | 4ff                                  |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Release designation**              | Cherry Release                       |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Release date**                     | 2020-12-04                           |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Purpose of the delivery**          | Cherry Release                      |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+
 Bronze
 ^^^^^^ 
 +--------------------------------------+--------------------------------------+
@@ -105,7 +152,7 @@ Amber
 | **Release designation**              | Amber Release                        |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release date**                     | 2019-10-29                           |
+| **Release date**                     | 2019-12-29                           |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
 | **Purpose of the delivery**          | Amber Release                        |
@@ -115,38 +162,83 @@ Amber
 
 
 Feature Additions
-^^^^^^^^^^^^^^^^^
+------------------
 
 **JIRA BACK-LOG:**
 
-+---------------------------------------------+--------------------------------------+
-| **JIRA REFERENCE**                          | **SLOGAN**                           |
-|                                             |                                      |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-1  |        F1-C enhancement                     |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-5  |        F1-U implementation                  |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-11 |        E2 implementation                    |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-9  |        Cell broadcast procedure             |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-10 |        UE attach procedure till msg-4       |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-8  |        FAPI interface implementation        |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
-| https://jira.o-ran-sc.org/browse/ODUHIGH-27 |        RLC layer interface enhancements     |
-|                                             |                                     |
-+---------------------------------------------+--------------------------------------+
+Cherry
+^^^^^^^
+
++-----------------------------------------------+-----------------------------------------------+
+| **JIRA REFERENCE**                            | **SLOGAN**                                    |
+|                                               |                                               |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-10   | UE attach procedure with basic scheduling     |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-188  | Support for all short PRACH formats          |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-191  | Explore O1 interface                         |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-189  | Integration with O-DU Low                     |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-184  | UE UL Data path                               |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-185  | UE DL Data path                               |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-186  | Applying 64 QAM Modulation in DL              |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-187  | Applying 16 QAM Modulation in UL              |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-190  | Integration with VIAVI Software               |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-214  | get-AlarmList implementation on O1 interface  |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-196  | CM Support on O1 interface                    |
+|                                               |                                              |
++-----------------------------------------------+-----------------------------------------------+
+
+Previous Releases
+^^^^^^^^^^^^^^^^^^
+
+
++---------------------------------------------+-------------------------------------------------+
+| **JIRA REFERENCE**                          | **SLOGAN**                                      |
+|                                             |                                                 |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-1  |        F1-C enhancement                                |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-5  |        F1-U implementation                             |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-11 |        E2 implementation                               |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-9  |        Cell broadcast procedure                        |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-10 |        UE attach procedure till msg-4                  |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-8  |        FAPI interface implementation                   |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
+| https://jira.o-ran-sc.org/browse/ODUHIGH-27 |        RLC layer interface enhancements                |
+|                                             |                                                |
++---------------------------------------------+-------------------------------------------------+
 
 Bug Corrections
-^^^^^^^^^^^^^^^
+----------------
 
 **JIRA TICKETS:**
 
@@ -154,19 +246,19 @@ NA
 
 
 Deliverables
-^^^^^^^^^^^^
+-------------
 
 Software Deliverables
-+++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^^^
 
-This release contains O-DU code, along with test code as part of CU stub, RIC stub and phy stub.
+This release contains O-DU High code, along with test code in the form of CU stub, RIC stub and phy stub.
 Instructions to build and execute ODU, CU and RIC stub binaries are also present.
 All of the above can be found in the o-du/l2 repo.
 
 
 
 Documentation Deliverables
-++++++++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This release contains 
 
@@ -176,6 +268,14 @@ This release contains
 
 - release-notes.rst
 
+- installation-guide.rst
+
+- user-guide.rst
+
+- api-docs.rst
+
+- developer-guide.rst
+
 
 
 Known Limitations, Issues and Workarounds
@@ -197,11 +297,16 @@ System Limitations
 
    single HARQ transmission
 
-- Support for single UE.
+   single UE.
+
+- This release implements a basic scheduler with fixed scheduling for single UE.
 
 - Cell broadcast is for SSB and SIB1 only.
 
-- This release implements a basic scheduler with fixed scheduling.
+- FAPI files not in-line with SCF FAPI 1.0.5.
+  O-DU High currently compatible with FAPI files provided by Intel.
+
+- Implementation of F1 reset is limited to intializing UE contexts.
 
 - E2 interface is limited to Traffic Steering Usecase.
 
@@ -209,15 +314,12 @@ System Limitations
 
 - On the F1-U interface, UE, RB and tunnel configurations are static.
 
-- System runs on preconfigured values due to absence of O1 interface.
+- System runs on preconfigured values due to absence of CM support on O1 interface.
 
-- O-DU High has not been integrated with O-DU Low and O-CU.
-
-- FAPI files not in-line with SCF FAPI 222.10.01.
-  O-DU High currently compatibale with FAPI files provided by Intel.
+- O-DU High has not been integrated with O-CU.
 
 Known Issues
-^^^^^^^^^^^^
+^^^^^^^^^^^^^
 None
 
 **JIRA TICKETS:**
@@ -228,7 +330,7 @@ NA
 Workarounds
 ^^^^^^^^^^^
 
-NA
+O-DU High uses FAPI interface files provided by Intel and therefore, not completely in-line with SCF FAPI 1.0.5.
 
 
 
diff --git a/docs/user-guide.rst b/docs/user-guide.rst
new file mode 100644 (file)
index 0000000..eb5ccfc
--- /dev/null
@@ -0,0 +1,202 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+User Guide
+***********
+
+This is the user guide for Cherry release of O-DU/l2.
+Follow installation-guide to get all the dependencies ready.
+
+.. contents::
+   :depth: 3
+   :local:
+
+
+A. Execution:
+-------------
+
+I. Execution - On locally compiling O-DU High Source Code
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+1. Assign virtual IP addresses as follows:
+
+   a. ifconfig <interface name>:ODU "192.168.130.81"
+   b. ifconfig <interface name>:CU_STUB "192.168.130.82"
+   c. ifconfig <interface name>:RIC_STUB "192.168.130.80"
+
+2. Execute CU Stub:
+
+   a. Navigate to CU execution folder
+
+      - cd <O-DU High Directory>/l2/bin/cu_stub
+
+   b. Run CU Stub binary
+
+      - ./cu_stub
+
+3. Execute RIC Stub:
+
+   a. Navigate to RIC execution folder
+
+      - cd <O-DU High Directory>/l2/bin/ric_stub
+
+   b. Run RIC Stub binary
+
+      - ./ric_stub
+
+4. Execute O-DU High:
+
+   a. Navigate to ODU execution folder
+
+      - cd <O-DU High Directory>/l2/bin/odu
+
+   b. Run ODU binary
+
+      - ./odu
+
+PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
+
+II. Execution - Using Docker Images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The call flow between O-DU High and CU Stub can be achieved by executing docker containers.
+
+- Pull the last built docker images:
+    -  docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:3.0.1
+    -  docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:3.0.1
+
+- Run CU Stub docker:
+    - docker run -it --privileged --net=host --entrypoint bash
+      nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:3.0.1   
+    - ./cu_stub
+
+- Run ODU docker:
+    - docker run -it --privileged --net=host --entrypoint bash
+      nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:3.0.1   
+    - ./odu
+
+
+B. Pairwise testing with Intel O-DU Low:
+-----------------------------------------
+
+This section describes the changes required in compilation and execution of O-DU High binaries to successfully integrate
+with Intel O-DU Low in timer mode.
+
+
+I. Pre-requisites
+^^^^^^^^^^^^^^^^^^
+
+   1. Install O-DU High as per installation-guide . 
+
+   2. Clone O-DU Low code in <O-DU Low Directory> from
+
+      a. https://gerrit.o-ran-sc.org/r/admin/repos/o-du/phy and,
+
+      b. https://github.com/intel/FlexRAN
+      
+   3. Install O-DU Low as per https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/index.html .
+
+
+II. Compilation
+^^^^^^^^^^^^^^^^
+
+   1. Build ODU :
+
+      a. Create folder <O-DU High Directory>/l2/src/wls_lib. Copy wls_lib.h from <O-DU Low Directory>/phy/wls_lib/ to 
+         <O-DU High Directory>/l2/src/wls_lib.
+
+      b. Create folder <O-DU High Directory>/l2/src/dpdk_lib. Copy following files from
+         <O-DU Low Directory>/dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to <O-DU High Directory>/l2/src/dpdk_lib.
+         
+         - rte_branch_prediction.h
+         - rte_common.h
+         - rte_config.h
+         - rte_dev.h
+         - rte_log.h
+         - rte_pci_dev_feature_defs.h
+         - rte_bus.h
+         - rte_compat.h
+         - rte_debug.h
+         - rte_eal.h
+         - rte_os.h
+         - rte_per_lcore.h
+
+      c. Navigate to build folder
+
+         - cd <O-DU High Directory>/l2/build/odu
+
+      d. Build ODU Binary:
+           
+         - make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
+
+
+III. Execution
+^^^^^^^^^^^^^^^
+
+   1. Execute O-DU Low:
+
+      a. Setup environment:
+      
+         - cd <O-DU Low Directory>/phy/
+         - source ./setupenv.sh
+
+      b. Run O-DU Low binary :
+      
+         - cd <O-DU Low Directory>/FlexRAN/l1/bin/nr5g/gnb/l1
+         - To run in timer mode : ./l1.sh -e
+         - L1 is up when following prints are seen on console:
+
+               | Non BBU threads in application
+               | \==================================================================
+               | nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1]
+               | wls_rx_handler (non-rt):                [PID: 8663] binding on [CPU 0]
+               | \==================================================================
+         
+               PHY>welcome to application console
+
+   2. Execute FAPI Translator:
+
+      a. Setup environment:
+   
+         - cd <O-DU Low Directory>/phy/
+         - source ./setupenv.sh
+
+      b. Run FAPI translator binary:
+
+         - cd <O-DU Low Directory>/phy/fapi_5g/bin/
+         - ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
+
+   3. Execute CU Stub and RIC Stub:
+
+      a. Run steps in sections A.I.1 through A.I.3 .
+
+   4. Execute DU:
+   
+      a. DU execution folder
+     
+         - cd <O-DU High Directory>/l2/bin/odu
+      
+      b. Export WLS library path
+
+         - export LD_LIBRARY_PATH=<O-DU Low Directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
+      
+      c. Run ODU binary
+
+         - ./odu
+
+
+C. Message Flow:
+----------------
+
+O-DU High opens WLS interface during bring up. Message exchanges can begin once the interface is ready.
+Following diagram shows P5 messages exchanged with O-DU Low in timer mode.
+
+.. figure:: O-DU_High_Low_Flow.jpg
+  :width: 600
+  :alt: Figure 1 O-DU High - O-DU Low Message Flow Diagram
+
+  Figure 5 - O-DU High - O-DU Low Message Flow Diagram
+
+Note: UL IQ-Sample request and response are needed by Intel O-DU Low in timer mode(testing mode) only. Code changes for
+these are guarded under INTEL_TIMER_MODE flag which can be enabled using compilation option "PHY_MODE=TIMER", as
+mentioned in section B.I.1.d .
index 7f9142e..19f8f0e 100644 (file)
@@ -65,6 +65,8 @@ uint8_t MacProcDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo)
            dlSlot[dlSchedInfo->schSlotValue.broadcastTime.slot];
         currDlSlot->dlInfo.isBroadcastPres = true;
         memcpy(&currDlSlot->dlInfo.brdcstAlloc, &dlSchedInfo->brdcstAlloc, sizeof(DlBrdcstAlloc));
+         currDlSlot->dlInfo.brdcstAlloc.sib1Alloc.sib1PdcchCfg.dci.pdschCfg = \
+           &currDlSlot->dlInfo.brdcstAlloc.sib1Alloc.sib1PdschCfg;
       }
 
       if(dlSchedInfo->rarAlloc != NULLP)
index a39917e..60a8ac9 100644 (file)
 #define ODU_CAT_MSG SCatMsg
 #define ODU_GET_PROCID SFndProcId
 #define ODU_SET_THREAD_AFFINITY SSetAffinity
+#define ODU_CREATE_TASK SCreateSTsk
 
 #define GET_UE_IDX( _crnti,_ueIdx)         \
 {                                          \
index 364157b..7f112cb 100644 (file)
@@ -291,7 +291,7 @@ uint8_t commonInit()
    ODU_SET_PROC_ID(DU_PROC);
 
    /* system task for DU APP */
-   if(SCreateSTsk(PRIOR0, &du_app_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &du_app_stsk) != ROK)
    {
       DU_LOG("\nDU_APP : System Task creation for DU APP failed");
       return RFAILED;
@@ -299,7 +299,7 @@ uint8_t commonInit()
    ODU_SET_THREAD_AFFINITY(&du_app_stsk, SS_AFFINITY_MODE_EXCL, 15, 0);
 
    /* system task for RLC_DL and MAC */
-   if(SCreateSTsk(PRIOR0, &rlc_mac_cl_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &rlc_mac_cl_stsk) != ROK)
    {
       DU_LOG("\nDU_APP : System Task creation for RLC DL/MAC failed");
       return RFAILED;
@@ -309,7 +309,7 @@ uint8_t commonInit()
    ODU_SET_THREAD_AFFINITY(&rlc_mac_cl_stsk, SS_AFFINITY_MODE_EXCL, 16, 0);
 
    /* system task for RLC UL */
-   if(SCreateSTsk(PRIOR1, &rlc_ul_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR1, &rlc_ul_stsk) != ROK)
    {
       DU_LOG("\nDU_APP : System Task creation for RLC UL failed");
       return RFAILED;
@@ -317,7 +317,7 @@ uint8_t commonInit()
    ODU_SET_THREAD_AFFINITY(&rlc_ul_stsk, SS_AFFINITY_MODE_EXCL, 17, 0);
 
    /* system task for SCTP receiver thread */
-   if(SCreateSTsk(PRIOR0, &sctp_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &sctp_stsk) != ROK)
    {
       DU_LOG("\nDU_APP : System Task creation for SCTP failed");
       return RFAILED;
@@ -325,7 +325,7 @@ uint8_t commonInit()
    ODU_SET_THREAD_AFFINITY(&sctp_stsk, SS_AFFINITY_MODE_EXCL, 18, 0);
 
    /* system task for lower-mac receiver thread */
-   if(SCreateSTsk(PRIOR0, &lwr_mac_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &lwr_mac_stsk) != ROK)
    {
       DU_LOG("\nDU_APP : System Task creation for Lower MAC failed");
       return RFAILED;