From: Balaji Shankaran Date: Tue, 5 May 2020 12:10:06 +0000 (+0530) Subject: Docs and build updates along with prachCfgTableIdx completion X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F81%2F3581%2F1;p=o-du%2Fl2.git Docs and build updates along with prachCfgTableIdx completion Change-Id: I7629e58ac3fe152c5d3e2aa58a3dc9070b7f8afe Signed-off-by: Balaji Shankaran --- diff --git a/Dockerfile b/Dockerfile index 738b44fa2..7536b59e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:6-u18.04-nng as ubuntu +FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:7-u18.04 as ubuntu ADD . /opt/o-du-l2 WORKDIR /opt/o-du-l2 diff --git a/Dockerfile-cu-stub b/Dockerfile-cu-stub index afefba039..79acea39b 100644 --- a/Dockerfile-cu-stub +++ b/Dockerfile-cu-stub @@ -1,4 +1,4 @@ -FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:6-u18.04-nng as ubuntu +FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:7-u18.04 as ubuntu ADD . /opt/o-du-l2 WORKDIR /opt/o-du-l2 diff --git a/docs/ODUArch.jpg b/docs/ODUArch.jpg new file mode 100644 index 000000000..df98f84ad Binary files /dev/null and b/docs/ODUArch.jpg differ diff --git a/docs/overview.rst b/docs/overview.rst index 2de67068b..2dd5df0a8 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -2,14 +2,89 @@ .. SPDX-License-Identifier: CC-BY-4.0 -o-du-l2 Overview +O-DU-L2 Architecture ====================== - O-DU implements the functional blocks of L2 layer of a 5G NR protocol stacks. -These layers primarily include NR MAC and NR RLC layers. -In order to manage these layers, DU_APP submodule has been introduced which can be comsidered as the -master module of O-DU. +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 + +O-DU Thread Architecture +-------------------------- + +As shown in Figure 1, there are multiple entities within O-DU. 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 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 4: 5G NR RLC UL + +- Thread 5: SCTP Handler + + +O-DU Modules +-------------------------- + +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. + +- 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. + + +DU App submodules are as follows: + +- Config Handler manages the configurations received on O1 interfaces andstores them within DU APP context. + +- DU Manager handles all cell operations 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. + +- EGTP handler is responsible for establishing EGTP connection with O-CU for data message exchange. + +- ASN.1 Codecs contain ASN.1 encode/decode functions which are used for System information, F1AP and E2AP messages. + +5G NR RLC +^^^^^^^^^^^^^^^^^^ +This module provides services for transferring the control and data messages +between MAC layer and O-CU (via DU App). + +5G NR RLC UL and 5G NR RLC DL are the sub modules of this module that implement +uplink and downlink functionality respectively. + +5G NR MAC +^^^^^^^^^^^^^^^^^^ +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 SCH schedules resources on UL and DL for cell and UE based procedures. + +- Lower MAC interfaces between the MAC and the lower layers of the O-DU and implements all the messages of FAPI specification. + +O-DU Utility and Common Functions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +These modules help in the working of O-DU and message exchanges between +the O-DU modules. diff --git a/src/5gnrsch/sch_utils.c b/src/5gnrsch/sch_utils.c index 4e444c34d..bd2a32e60 100644 --- a/src/5gnrsch/sch_utils.c +++ b/src/5gnrsch/sch_utils.c @@ -119,7 +119,6 @@ uint16_t numRbForPrachTable[MAX_RACH_NUM_RB_IDX][5] = { * Subframe num is represented considering 0-9 bits and * value 1 corresponds to the subframe that is valid */ - //Sphoorthi TODO: complete this table uint16_t prachCfgIdxTable[MAX_PRACH_CONFIG_IDX][8] = { { 0, 16, 1, 2, 0, 0, 0, 0 }, /* index 0 */ @@ -248,6 +247,136 @@ uint16_t prachCfgIdxTable[MAX_PRACH_CONFIG_IDX][8] = { { 5, 2, 1, 580, 0, 1, 3, 4 }, /* index 123 */ { 5, 2, 0, 2, 0, 2, 3, 4 }, /* index 124 */ { 5, 2, 0, 16, 0, 2, 3, 4 }, /* index 125 */ +{ 5, 2, 0, 128, 0, 2, 3, 4 }, /* index 126 */ +{ 5, 1, 0, 16, 0, 1, 3, 4 }, /* index 127 */ +{ 5, 1, 0, 66, 0, 1, 3, 4 }, /* index 128 */ +{ 5, 1, 0, 528, 0, 1, 3, 4 }, /* index 129 */ +{ 5, 1, 0, 2, 0, 2, 3, 4 }, /* index 130 */ +{ 5, 1, 0, 128, 0, 2, 3, 4 }, /* index 131 */ +{ 5, 1, 0, 132, 0, 2, 3, 4 }, /* index 132 */ +{ 5, 1, 0, 146, 0, 2, 3, 4 }, /* index 133 */ +{ 5, 1, 0, 341, 0, 2, 3, 4 }, /* index 134 */ +{ 5, 1, 0, 1023, 0, 2, 3, 4 }, /* index 135 */ +{ 5, 1, 0, 682, 0, 2, 3, 4 }, /* index 136 */ +{12, 2, 1, 580, 0, 1, 3, 4 }, /* index 137 */ +{12, 2, 2, 16, 0, 1, 3, 4 }, /* index 138 */ +{12, 2, 1, 16, 0, 1, 3, 4 }, /* index 139 */ +{12, 2, 1, 66, 0, 1, 3, 4 }, /* index 140 */ +{12, 2, 1, 528, 0, 1, 3, 4 }, /* index 141 */ +{12, 2, 1, 2, 0, 1, 3, 4 }, /* index 142 */ +{12, 2, 1, 128, 0, 1, 3, 4 }, /* index 143 */ +{12, 2, 1, 146, 0, 1, 3, 4 }, /* index 144 */ +{12, 2, 1, 341, 0, 1, 3, 4 }, /* index 145 */ +{12, 2, 1, 1023, 0, 1, 3, 4 }, /* index 146 */ +{ 6, 16, 1, 528, 0, 1, 2, 6 }, /* index 147 */ +{ 6, 16, 1, 16, 0, 2, 2, 6 }, /* index 148 */ +{ 6, 8, 1, 528, 0, 1, 2, 6 }, /* index 149 */ +{ 6, 8, 1, 16, 0, 2, 2, 6 }, /* index 150 */ +{ 6, 4, 0, 528, 0, 1, 2, 6 }, /* index 151 */ +{ 6, 4, 0, 16, 0, 2, 2, 6 }, /* index 152 */ +{ 6, 2, 1, 580, 0, 2, 2, 6 }, /* index 153 */ +{ 6, 2, 0, 2, 0, 2, 2, 6 }, /* index 154 */ +{ 6, 2, 0, 16, 0, 2, 2, 6 }, /* index 155 */ +{ 6, 2, 0, 128, 0, 2, 2, 6 }, /* index 156 */ +{ 6, 1, 0, 16, 0, 1, 2, 6 }, /* index 157 */ +{ 6, 1, 0, 66, 0, 1, 2, 6 }, /* index 158 */ +{ 6, 1, 0, 528, 0, 1, 2, 6 }, /* index 159 */ +{ 6, 1, 0, 2, 0, 2, 2, 6 }, /* index 160 */ +{ 6, 1, 0, 128, 0, 2, 2, 6 }, /* index 161 */ +{ 6, 1, 0, 132, 0, 2, 2, 6 }, /* index 162 */ +{ 6, 1, 0, 146, 0, 2, 2, 6 }, /* index 163 */ +{ 6, 1, 0, 341, 0, 2, 2, 6 }, /* index 164 */ +{ 6, 1, 0, 1023, 0, 2, 2, 6 }, /* index 165 */ +{ 6, 1, 0, 682, 0, 2, 2, 6 }, /* index 166 */ +{13, 2, 1, 580, 0, 2, 2, 6 }, /* index 167 */ +{13, 2, 2, 16, 0, 2, 2, 6 }, /* index 168 */ +{13, 2, 1, 16, 0, 1, 2, 6 }, /* index 169 */ +{13, 2, 1, 66, 0, 1, 2, 6 }, /* index 170 */ +{13, 2, 1, 528, 0, 1, 2, 6 }, /* index 171 */ +{13, 2, 1, 2, 0, 2, 2, 6 }, /* index 172 */ +{13, 2, 1, 128, 0, 2, 2, 6 }, /* index 173 */ +{13, 2, 1, 146, 0, 2, 2, 6 }, /* index 174 */ +{13, 2, 1, 341, 0, 2, 2, 6 }, /* index 175 */ +{13, 2, 1, 1023, 0, 2, 2, 6 }, /* index 176 */ +{ 7, 16, 0, 528, 0, 1, 7, 2 }, /* index 177 */ +{ 7, 16, 1, 16, 0, 2, 7, 2 }, /* index 178 */ +{ 7, 8, 0, 528, 0, 1, 7, 2 }, /* index 179 */ +{ 7, 8, 1, 16, 0, 2, 7, 2 }, /* index 180 */ +{ 7, 4, 0, 528, 0, 1, 7, 2 }, /* index 181 */ +{ 7, 4, 1, 528, 0, 1, 7, 2 }, /* index 182 */ +{ 7, 4, 0, 16, 0, 2, 7, 2 }, /* index 183 */ +{ 7, 2, 0, 528, 0, 1, 7, 2 }, /* index 184 */ +{ 7, 2, 0, 2, 0, 2, 7, 2 }, /* index 185 */ +{ 7, 2, 0, 16, 0, 2, 7, 2 }, /* index 186 */ +{ 7, 2, 0, 128, 0, 2, 7, 2 }, /* index 187 */ +{ 7, 1, 0, 16, 0, 1, 7, 2 }, /* index 188 */ +{ 7, 1, 0, 66, 0, 1, 7, 2 }, /* index 189 */ +{ 7, 1, 0, 528, 0, 1, 7, 2 }, /* index 190 */ +{ 7, 1, 0, 2, 0, 2, 7, 2 }, /* index 191 */ +{ 7, 1, 0, 128, 0, 2, 7, 2 }, /* index 192 */ +{ 7, 1, 0, 132, 0, 2, 7, 2 }, /* index 193 */ +{ 7, 1, 0, 146, 0, 2, 7, 2 }, /* index 194 */ +{ 7, 1, 0, 341, 0, 2, 7, 2 }, /* index 195 */ +{ 7, 1, 0, 1023, 0, 2, 7, 2 }, /* index 196 */ +{ 7, 1, 0, 682, 0, 2, 7, 2 }, /* index 197 */ +{ 8, 16, 0, 528, 0, 2, 1, 12 }, /* index 198 */ +{ 8, 16, 1, 16, 0, 2, 1, 12 }, /* index 199 */ +{ 8, 8, 0, 528, 0, 2, 1, 12 }, /* index 200 */ +{ 8, 8, 1, 16, 0, 2, 1, 12 }, /* index 201 */ +{ 8, 4, 0, 528, 0, 2, 1, 12 }, /* index 202 */ +{ 8, 4, 0, 16, 0, 2, 1, 12 }, /* index 203 */ +{ 8, 4, 1, 528, 0, 2, 1, 12 }, /* index 204 */ +{ 8, 2, 0, 528, 0, 2, 1, 12 }, /* index 205 */ +{ 8, 2, 0, 2, 0, 2, 1, 12 }, /* index 206 */ +{ 8, 2, 0, 16, 0, 2, 1, 12 }, /* index 207 */ +{ 8, 2, 0, 128, 0, 2, 1, 12 }, /* index 208 */ +{ 8, 1, 0, 2, 0, 2, 1, 12 }, /* index 209 */ +{ 8, 1, 0, 16, 0, 2, 1, 12 }, /* index 210 */ +{ 8, 1, 0, 128, 0, 2, 1, 12 }, /* index 211 */ +{ 8, 1, 0, 66, 0, 2, 1, 12 }, /* index 212 */ +{ 8, 1, 0, 132, 0, 2, 1, 12 }, /* index 213 */ +{ 8, 1, 0, 528, 0, 2, 1, 12 }, /* index 214 */ +{ 8, 1, 0, 146, 0, 2, 1, 12 }, /* index 215 */ +{ 8, 1, 0, 341, 0, 2, 1, 12 }, /* index 216 */ +{ 8, 1, 0, 1023, 0, 2, 1, 12 }, /* index 217 */ +{ 8, 1, 0, 682, 0, 2, 1, 12 }, /* index 218 */ +{ 9, 8, 1, 16, 0, 2, 7, 2 }, /* index 219 */ +{ 9, 4, 1, 528, 0, 1, 7, 2 }, /* index 220 */ +{ 9, 4, 0, 16, 0, 2, 7, 2 }, /* index 221 */ +{ 9, 2, 0, 528, 0, 1, 7, 2 }, /* index 222 */ +{ 9, 2, 0, 2, 0, 2, 7, 2 }, /* index 223 */ +{ 9, 2, 0, 16, 0, 2, 7, 2 }, /* index 224 */ +{ 9, 2, 0, 128, 0, 2, 7, 2 }, /* index 225 */ +{ 9, 1, 0, 16, 0, 1, 7, 2 }, /* index 226 */ +{ 9, 1, 0, 66, 0, 1, 7, 2 }, /* index 227 */ +{ 9, 1, 0, 528, 0, 1, 7, 2 }, /* index 228 */ +{ 9, 1, 0, 2, 0, 2, 7, 2 }, /* index 229 */ +{ 9, 1, 0, 128, 0, 2, 7, 2 }, /* index 230 */ +{ 9, 1, 0, 132, 0, 2, 7, 2 }, /* index 231 */ +{ 9, 1, 0, 146, 0, 2, 7, 2 }, /* index 232 */ +{ 9, 1, 0, 341, 0, 2, 7, 2 }, /* index 233 */ +{ 9, 1, 0, 1023, 0, 2, 7, 2 }, /* index 234 */ +{ 9, 1, 0, 682, 0, 2, 7, 2 }, /* index 235 */ +{10, 16, 1, 528, 0, 1, 2, 6 }, /* index 236 */ +{10, 16, 1, 16, 0, 2, 2, 6 }, /* index 237 */ +{10, 8, 1, 528, 0, 1, 2, 6 }, /* index 238 */ +{10, 8, 1, 16, 0, 2, 2, 6 }, /* index 239 */ +{10, 4, 0, 528, 0, 1, 2, 6 }, /* index 240 */ +{10, 4, 0, 16, 0, 2, 2, 6 }, /* index 241 */ +{10, 2, 1, 580, 0, 2, 2, 6 }, /* index 242 */ +{10, 2, 0, 2, 0, 2, 2, 6 }, /* index 243 */ +{10, 2, 0, 16, 0, 2, 2, 6 }, /* index 244 */ +{10, 2, 0, 128, 0, 2, 2, 6 }, /* index 245 */ +{10, 1, 0, 16, 0, 1, 2, 6 }, /* index 246 */ +{10, 1, 0, 66, 0, 1, 2, 6 }, /* index 247 */ +{10, 1, 0, 528, 0, 1, 2, 6 }, /* index 248 */ +{10, 1, 0, 1, 0, 2, 2, 6 }, /* index 249 */ +{10, 1, 0, 128, 0, 2, 2, 6 }, /* index 250 */ +{10, 1, 0, 132, 0, 2, 2, 6 }, /* index 251 */ +{10, 1, 0, 146, 0, 2, 2, 6 }, /* index 252 */ +{10, 1, 0, 341, 0, 2, 2, 6 }, /* index 253 */ +{10, 1, 0, 1023, 0, 2, 2, 6 }, /* index 254 */ +{10, 1, 0, 682, 0, 2, 2, 6 } /* index 255 */ }; diff --git a/src/5gnrsch/sch_utils.h b/src/5gnrsch/sch_utils.h index ac97fb9f2..c79a2fe75 100644 --- a/src/5gnrsch/sch_utils.h +++ b/src/5gnrsch/sch_utils.h @@ -22,7 +22,7 @@ #define MAX_CORESET_INDEX 16 #define MAX_SEARCH_SPACE_INDEX 16 #define MAX_RACH_NUM_RB_IDX 16 -#define MAX_PRACH_CONFIG_IDX 255 +#define MAX_PRACH_CONFIG_IDX 256 #define SET_BITS(_startBit, _numBits, _byte) \ { \