Commit d21a4006 authored by laurent's avatar laurent

scope for 5G

parent a9ba117a
# OpenAirInterface for SystemX # OpenAirInterface for SystemX
<<<<<<< HEAD
#Terminology
****This document use the 5G terminology****
**Central Unit (CU): **It is a logical node that includes the gNB
=======
# Terminology # Terminology
****This document use the 5G terminology**** ****This document use the 5G terminology****
**Central Unit (CU):** It is a logical node that includes the gNB **Central Unit (CU):** It is a logical node that includes the gNB
>>>>>>> da54778c4ab381743c388078676103663addafcc
functions like Transfer of user data, Mobility control, Radio access functions like Transfer of user data, Mobility control, Radio access
network sharing, Positioning, Session Management etc., except those network sharing, Positioning, Session Management etc., except those
functions allocated exclusively to the DU. CU controls the operation of functions allocated exclusively to the DU. CU controls the operation of
...@@ -27,13 +19,9 @@ names like RRH/RRU/RE/RU/PNF. ...@@ -27,13 +19,9 @@ names like RRH/RRU/RE/RU/PNF.
In OpenAir code, the terminology is often RU and BBU. In OpenAir code, the terminology is often RU and BBU.
# OpenAirUsage # OpenAirUsage
<<<<<<< HEAD
##EPC and general environment
=======
## EPC and general environment ## EPC and general environment
>>>>>>> da54778c4ab381743c388078676103663addafcc
### OAI EPC ### OAI EPC
Use the stable OAI EPC, that can run in one machine (VM or standalone) Use the stable OAI EPC, that can run in one machine (VM or standalone)
...@@ -41,16 +29,10 @@ Use the stable OAI EPC, that can run in one machine (VM or standalone) ...@@ -41,16 +29,10 @@ Use the stable OAI EPC, that can run in one machine (VM or standalone)
Draft description: Draft description:
<https://open-cells.com/index.php/2017/08/22/all-in-one-openairinterface-august-22nd/> <https://open-cells.com/index.php/2017/08/22/all-in-one-openairinterface-august-22nd/>
<<<<<<< HEAD
##Standalone 4G
EPC+eNB on one machine, the UE can be commercial or OAI UE.
=======
## Standalone 4G ## Standalone 4G
EPC+eNB on one machine, the UE can be commercial or OAI UE. EPC+eNB on one machine, the UE can be commercial or OAI UE.
>>>>>>> da54778c4ab381743c388078676103663addafcc
### USRP B210 ### USRP B210
Main current issue: traffic is good only on coaxial link between UE and Main current issue: traffic is good only on coaxial link between UE and
...@@ -76,12 +58,8 @@ the same IP tunnel end point as the UE. ...@@ -76,12 +58,8 @@ the same IP tunnel end point as the UE.
So, we have to create a network namespace for the UE and to route data So, we have to create a network namespace for the UE and to route data
in/out of the namespace. in/out of the namespace.
<<<<<<< HEAD
``` bash
=======
```bash ```bash
>>>>>>> da54778c4ab381743c388078676103663addafcc
ip netns delete aNameSpace 2&gt; /dev/null ip netns delete aNameSpace 2&gt; /dev/null
ip link delete v-eth1 2&gt; /dev/null ip link delete v-eth1 2&gt; /dev/null
...@@ -96,11 +74,7 @@ ip addr add 10.200.1.1/24 dev v-eth1 ...@@ -96,11 +74,7 @@ ip addr add 10.200.1.1/24 dev v-eth1
ip link set v-eth1 up ip link set v-eth1 up
<<<<<<< HEAD
iptables -t nat -A POSTROUTING -s 10.200.1.0/255.255.255.0 -o enp0s31f6
=======
iptables -t nat -A POSTROUTING -s 10.200.1.0/255.255.255.0 -o enp0s31f6 \ iptables -t nat -A POSTROUTING -s 10.200.1.0/255.255.255.0 -o enp0s31f6 \
>>>>>>> da54778c4ab381743c388078676103663addafcc
-j MASQUERADE -j MASQUERADE
iptables -A FORWARD -i enp0s31f6 -o v-eth1 -j ACCEPT iptables -A FORWARD -i enp0s31f6 -o v-eth1 -j ACCEPT
...@@ -122,15 +96,6 @@ to run the UE. ...@@ -122,15 +96,6 @@ to run the UE.
To make user plan traffic, the traffic generator has to run in the same To make user plan traffic, the traffic generator has to run in the same
namespace namespace
<<<<<<< HEAD
`ip netns exec aNameSpace bash
`
The traffic genenrator has to specify the interface:
`route add default oaitun_ue1
`
=======
```bash ```bash
ip netns exec aNameSpace bash ip netns exec aNameSpace bash
``` ```
...@@ -140,7 +105,6 @@ The traffic genenrator has to specify the interface: ...@@ -140,7 +105,6 @@ The traffic genenrator has to specify the interface:
```bash ```bash
route add default oaitun_ue1 route add default oaitun_ue1
``` ```
>>>>>>> da54778c4ab381743c388078676103663addafcc
or specify the outgoing route in the traffic generator (like option “-I” or specify the outgoing route in the traffic generator (like option “-I”
in ping command). in ping command).
...@@ -153,10 +117,7 @@ is this work the downlink “functional split 6”. ...@@ -153,10 +117,7 @@ is this work the downlink “functional split 6”.
The customer required after signature to develop also the uplink The customer required after signature to develop also the uplink
functional split 6. This is accepted, as long as the whole work is functional split 6. This is accepted, as long as the whole work is
research with no delivery completeness warranty. research with no delivery completeness warranty.
<<<<<<< HEAD
=======
>>>>>>> da54778c4ab381743c388078676103663addafcc
### Simulation ### Simulation
To be able to verify the new features and to help in all future To be able to verify the new features and to help in all future
...@@ -165,19 +126,12 @@ during this contract. ...@@ -165,19 +126,12 @@ during this contract.
We added the channel modeling simulation, that offer to simulate various We added the channel modeling simulation, that offer to simulate various
3GPP defined channels. 3GPP defined channels.
<<<<<<< HEAD
=======
>>>>>>> da54778c4ab381743c388078676103663addafcc
### Main loop ### Main loop
The main log is in RF simulator is in The main log is in RF simulator is in
<<<<<<< HEAD
targets/RT/USER/lte-ru.c and targets/RT/USER/lte-enb.c
=======
`targets/RT/USER/lte-ru.c and targets/RT/USER/lte-enb.c` `targets/RT/USER/lte-ru.c and targets/RT/USER/lte-enb.c`
>>>>>>> da54778c4ab381743c388078676103663addafcc
As this piece of SW is very complex and doesn’t meet our goals As this piece of SW is very complex and doesn’t meet our goals
(functional split 6), a cleaned version replaces these 2 files in (functional split 6), a cleaned version replaces these 2 files in
...@@ -196,13 +150,8 @@ The reworked main loop take care of a uniq variable that comes directly from har ...@@ -196,13 +150,8 @@ The reworked main loop take care of a uniq variable that comes directly from har
To use OAI, we need to set all OAI variables that derivates from this timestamp value. The function setAllfromTS() implements this. To use OAI, we need to set all OAI variables that derivates from this timestamp value. The function setAllfromTS() implements this.
<<<<<<< HEAD
### Splitted main level
=======
### Splitted main level ### Splitted main level
>>>>>>> da54778c4ab381743c388078676103663addafcc
When FS6 is actived, a main loop for DU (du_fs6()) a main loop for CU case replaces the uniq eNB main loop. When FS6 is actived, a main loop for DU (du_fs6()) a main loop for CU case replaces the uniq eNB main loop.
Each of these main loops calls initialization of OAI LTE data and the FS6 transport layer initialization. Each of these main loops calls initialization of OAI LTE data and the FS6 transport layer initialization.
...@@ -321,31 +270,6 @@ The end line option “--split73” enables the fs6 (also called split 7.3) mode ...@@ -321,31 +270,6 @@ The end line option “--split73” enables the fs6 (also called split 7.3) mode
Example: Example:
<<<<<<< HEAD
./ocp-softmodem -O $OPENAIR_DIR/enb.fs6.example.conf --rfsim --log_config.phy_log_level debug --split73 cu:127.0.0.1
`
Run the CU init of the split 6 eNB, that will call du on 127.0.0.1 address
./ocp-softmodem -O $OPENAIR_DIR/enb.fs6.example.conf --rfsim --log_config.phy_log_level debug --split73 du:127.0.0.1
will run the du, calling the cu on 127.0.0.1
`
If the CU and the DU are not on the same machine, the remote address of each side need to be specified as per this example
./ocp-softmodem -O $OPENAIR_DIR/enb.fs6.example.conf --rfsim --log_config.phy_log_level debug --split73 du:192.168.1.55
`
runs the functional split 6 DU
`./lte-uesoftmodem -C 2685000000 -r 50 --rfsim --rfsimulator.serveraddr 192.168.1.1 -d
`
Runs the UE (to have the UE signal scope, compile it with make uescope)
CU+DU+UE can run with option --noS1 to avoid to use a EPC and/or with --rfsim to simulate RF board
##5G and F1
=======
```bash ```bash
./ocp-softmodem -O $OPENAIR_DIR/enb.fs6.example.conf --rfsim --log_config.phy_log_level debug --split73 cu:127.0.0.1 ./ocp-softmodem -O $OPENAIR_DIR/enb.fs6.example.conf --rfsim --log_config.phy_log_level debug --split73 cu:127.0.0.1
``` ```
...@@ -376,7 +300,6 @@ CU+DU+UE can run with option `--noS1` to avoid to use a EPC and/or with `--rfsim ...@@ -376,7 +300,6 @@ CU+DU+UE can run with option `--noS1` to avoid to use a EPC and/or with `--rfsim
## 5G and F1 ## 5G and F1
>>>>>>> da54778c4ab381743c388078676103663addafcc
Today 5G achievement is limited to physical layer. Today 5G achievement is limited to physical layer.
...@@ -397,18 +320,6 @@ frames). ...@@ -397,18 +320,6 @@ frames).
Usage with RFsimulator: Usage with RFsimulator:
<<<<<<< HEAD
gNB
`sudo RFSIMULATOR=server ./nr-softmodem -O
../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
--parallel-config PARALLEL\_SINGLE\_THREAD`
nrUE
`sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem --numerology 1 -r 106 -C
3510000000 -d`
=======
**gNB** **gNB**
```bash ```bash
...@@ -423,4 +334,3 @@ sudo RFSIMULATOR=server ./nr-softmodem -O \ ...@@ -423,4 +334,3 @@ sudo RFSIMULATOR=server ./nr-softmodem -O \
sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem --numerology 1 -r 106 -C \ sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem --numerology 1 -r 106 -C \
3510000000 -d 3510000000 -d
``` ```
>>>>>>> da54778c4ab381743c388078676103663addafcc
...@@ -954,7 +954,9 @@ if(!IS_SOFTMODEM_NOS1) ...@@ -954,7 +954,9 @@ if(!IS_SOFTMODEM_NOS1)
scopeParms_t p; scopeParms_t p;
p.argc=&argc; p.argc=&argc;
p.argv=argv; p.argv=argv;
startScope(&p); p.gNB=RC.gNB[0];
p.ru=RC.ru[0];
gNBinitScope(&p);
} }
if (nfapi_mode != 1 && nfapi_mode != 2) { if (nfapi_mode != 1 && nfapi_mode != 2) {
......
...@@ -249,7 +249,7 @@ void exit_function(const char *file, const char *function, const int line, const ...@@ -249,7 +249,7 @@ void exit_function(const char *file, const char *function, const int line, const
} }
void reset_stats(FL_OBJECT *button, long arg) { void reset_stats(long arg) {
//int i,j,k; //int i,j,k;
/*PHY_VARS_eNB *phy_vars_eNB = PHY_vars_eNB_g[0][0]; /*PHY_VARS_eNB *phy_vars_eNB = PHY_vars_eNB_g[0][0];
...@@ -729,7 +729,7 @@ int main( int argc, char **argv ) { ...@@ -729,7 +729,7 @@ int main( int argc, char **argv ) {
configure_linux(); configure_linux();
mlockall(MCL_CURRENT | MCL_FUTURE); mlockall(MCL_CURRENT | MCL_FUTURE);
if (do_forms) if (do_forms)
init_scope(PHY_vars_UE_g[0][0]); nrUEinitScope(PHY_vars_UE_g[0][0]);
number_of_cards = 1; number_of_cards = 1;
for(int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { for(int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
......
...@@ -880,7 +880,7 @@ int main( int argc, char **argv ) { ...@@ -880,7 +880,7 @@ int main( int argc, char **argv ) {
if (do_forms==1) { if (do_forms==1) {
scopeParms_t tmp= {&argc, argv, &ru, RC.gNB[0]}; scopeParms_t tmp= {&argc, argv, &ru, RC.gNB[0]};
startScope(&tmp); gNBinitScope(&tmp);
} }
while(!oai_exit) while(!oai_exit)
......
...@@ -1145,6 +1145,7 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, ...@@ -1145,6 +1145,7 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB,
//-------------------- LLRs computation -------------------- //-------------------- LLRs computation --------------------
//---------------------------------------------------------- //----------------------------------------------------------
start_meas(&gNB->ulsch_llr_stats); start_meas(&gNB->ulsch_llr_stats);
AssertFatal(gNB->pusch_vars[UE_id]->rxdataF_ext_offset * rel15_ul->qam_mod_order+nb_re_pusch*rel15_ul->qam_mod_order < (8*((3*8*6144)+12)) , "Mysterious llr buffer size check");
nr_ulsch_compute_llr(&gNB->pusch_vars[UE_id]->rxdataF_comp[0][symbol * rel15_ul->rb_size * NR_NB_SC_PER_RB], nr_ulsch_compute_llr(&gNB->pusch_vars[UE_id]->rxdataF_comp[0][symbol * rel15_ul->rb_size * NR_NB_SC_PER_RB],
gNB->pusch_vars[UE_id]->ul_ch_mag0, gNB->pusch_vars[UE_id]->ul_ch_mag0,
gNB->pusch_vars[UE_id]->ul_ch_magb0, gNB->pusch_vars[UE_id]->ul_ch_magb0,
......
...@@ -669,13 +669,11 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -669,13 +669,11 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
pdsch_vars[eNB_id]->llr_offset[symbol] = len*dlsch0_harq->Qm + llr_offset_symbol; pdsch_vars[eNB_id]->llr_offset[symbol] = len*dlsch0_harq->Qm + llr_offset_symbol;
LOG_I(PHY,"compute LLRs [symbol %d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d @LLR Buff %x @LLR Buff(symb) %x energy %d\n", LOG_I(PHY,"compute LLRs [symbol %d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d energy %d\n",
symbol, symbol,
nb_rb,dlsch0_harq->Qm, nb_rb,dlsch0_harq->Qm,
pdsch_vars[eNB_id]->llr_length[symbol], pdsch_vars[eNB_id]->llr_length[symbol],
pdsch_vars[eNB_id]->llr_offset[symbol], pdsch_vars[eNB_id]->llr_offset[symbol],
(int16_t*)pdsch_vars[eNB_id]->llr[0],
pllr_symbol_cw0,
signal_energy(pdsch_vars[eNB_id]->rxdataF_comp0[0], 7*2*frame_parms->N_RB_DL*12)); signal_energy(pdsch_vars[eNB_id]->rxdataF_comp0[0], 7*2*frame_parms->N_RB_DL*12));
//if (ue->current_thread_id[nr_tti_rx] ==0 ) //if (ue->current_thread_id[nr_tti_rx] ==0 )
//phy_scope_nrUE(NULL, ue, 0, 0, 0); //phy_scope_nrUE(NULL, ue, 0, 0, 0);
......
This diff is collapsed.
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include <openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h> #include <openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h>
#include "common/ran_context.h" #include "common/ran_context.h"
#include <openair1/PHY/defs_gNB.h> #include <openair1/PHY/defs_gNB.h>
#include <forms.h>
#include "PHY/defs_gNB.h" #include "PHY/defs_gNB.h"
//#include "PHY/defs_nrUE.h" //#include "PHY/defs_nrUE.h"
//#include "PHY/impl_defs_top.h" //#include "PHY/impl_defs_top.h"
...@@ -38,12 +37,12 @@ ...@@ -38,12 +37,12 @@
typedef struct { typedef struct {
int *argc; int *argc;
char **argv; char **argv;
RU_t* ru; RU_t *ru;
PHY_VARS_gNB *gNB; PHY_VARS_gNB *gNB;
} scopeParms_t; } scopeParms_t;
void startScope(scopeParms_t * p); void gNBinitScope(scopeParms_t *p);
void init_scope(PHY_VARS_NR_UE *ue); void nrUEinitScope(PHY_VARS_NR_UE *ue);
extern RAN_CONTEXT_t RC; extern RAN_CONTEXT_t RC;
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment