Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ao gleen
OpenXG-RAN
Commits
5c70aa96
Commit
5c70aa96
authored
Jul 26, 2021
by
francescomani
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into NR_UE_reworking_UCI_procedures
parents
bd816e51
4bfbb6f1
Changes
57
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
57 changed files
with
1462 additions
and
653 deletions
+1462
-653
ci-scripts/conf_files/benetel-5g.conf
ci-scripts/conf_files/benetel-5g.conf
+6
-8
ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf
ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf
+7
-7
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpb210.conf
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpb210.conf
+6
-4
ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
...cripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
+7
-8
ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf
...cripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf
+7
-8
ci-scripts/yaml_files/4g_rfsimulator/docker-compose.yml
ci-scripts/yaml_files/4g_rfsimulator/docker-compose.yml
+272
-0
ci-scripts/yaml_files/4g_rfsimulator/oai_db.cql
ci-scripts/yaml_files/4g_rfsimulator/oai_db.cql
+93
-0
doc/FEATURE_SET.md
doc/FEATURE_SET.md
+2
-2
docker/Dockerfile.eNB.ubuntu18
docker/Dockerfile.eNB.ubuntu18
+1
-0
docker/Dockerfile.lteUE.ubuntu18
docker/Dockerfile.lteUE.ubuntu18
+1
-0
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+2
-4
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+2
-4
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+0
-3
openair1/PHY/NR_REFSIG/nr_gold.c
openair1/PHY/NR_REFSIG/nr_gold.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
+67
-52
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
+5
-5
openair1/PHY/NR_TRANSPORT/pucch_rx.c
openair1/PHY/NR_TRANSPORT/pucch_rx.c
+13
-13
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+6
-25
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+4
-4
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+6
-7
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+2
-8
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+6
-7
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+8
-0
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+2
-2
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+31
-2
openair1/SCHED_NR/fapi_nr_l1.h
openair1/SCHED_NR/fapi_nr_l1.h
+4
-0
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+13
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+5
-8
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+6
-7
openair2/GNB_APP/MACRLC_nr_paramdef.h
openair2/GNB_APP/MACRLC_nr_paramdef.h
+4
-4
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+4
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+70
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+2
-1
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+12
-23
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+3
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+3
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+200
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+397
-331
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+8
-1
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+5
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+2
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+5
-1
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+100
-38
openair3/NAS/UE/nas_parser.c
openair3/NAS/UE/nas_parser.c
+1
-4
openair3/NAS/UE/nas_parser.h
openair3/NAS/UE/nas_parser.h
+1
-1
targets/COMMON/openairinterface5g_limits.h
targets/COMMON/openairinterface5g_limits.h
+2
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
+6
-8
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf
+6
-6
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
+6
-6
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
+6
-6
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
+7
-7
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf
+6
-6
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
...ENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
+6
-4
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
...ENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
+6
-4
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf
...-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf
+6
-4
No files found.
ci-scripts/conf_files/benetel-5g.conf
View file @
5c70aa96
...
...
@@ -24,10 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
#pusch_TargetSNRx10 = 200;
#pucch_TargetSNRx10 = 200;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -232,10 +228,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf
View file @
5c70aa96
...
...
@@ -24,8 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -227,11 +225,13 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
1
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpb210.conf
View file @
5c70aa96
...
...
@@ -226,10 +226,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
100
;
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
100
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
...
...
ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
View file @
5c70aa96
...
...
@@ -23,9 +23,6 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -224,11 +221,13 @@ gNBs =
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf
View file @
5c70aa96
...
...
@@ -23,9 +23,6 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -231,11 +228,13 @@ gNBs =
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
ci-scripts/yaml_files/4g_rfsimulator/docker-compose.yml
0 → 100644
View file @
5c70aa96
version
:
'
3.8'
services
:
cassandra
:
image
:
cassandra:2.1
container_name
:
rfsim4g-cassandra
networks
:
private_net
:
ipv4_address
:
192.168.68.2
environment
:
CASSANDRA_CLUSTER_NAME
:
"
OAI
HSS
Cluster"
CASSANDRA_ENDPOINT_SNITCH
:
GossipingPropertyFileSnitch
healthcheck
:
test
:
/bin/bash -c "nodetool status"
interval
:
10s
timeout
:
5s
retries
:
5
db_init
:
image
:
cassandra:2.1
container_name
:
rfsim4g-db-init
depends_on
:
[
cassandra
]
deploy
:
restart_policy
:
condition
:
on-failure
max_attempts
:
10
networks
:
private_net
:
ipv4_address
:
192.168.68.4
volumes
:
-
./oai_db.cql:/home/oai_db.cql
entrypoint
:
/bin/bash -c "cqlsh --file /home/oai_db.cql 192.168.68.2 && echo 'OK'"
oai_hss
:
image
:
oai-hss:develop-2021-06-14
container_name
:
rfsim4g-oai-hss
privileged
:
true
depends_on
:
[
cassandra
]
networks
:
private_net
:
ipv4_address
:
192.168.68.3
public_net
:
ipv4_address
:
192.168.61.2
environment
:
REALM
:
openairinterface.org
HSS_FQDN
:
hss.openairinterface.org
PREFIX
:
/openair-hss/etc
cassandra_Server_IP
:
192.168.68.2
OP_KEY
:
1006020f0a478bf6b699f15c062e42b3
LTE_K
:
fec86ba6eb707ed08905757b1bb44b8f
APN1
:
oai.ipv4
APN2
:
internet
FIRST_IMSI
:
208960100000001
NB_USERS
:
10
healthcheck
:
test
:
/bin/bash -c "pgrep oai_hss"
interval
:
10s
timeout
:
5s
retries
:
5
oai_mme
:
image
:
oai-mme:production
container_name
:
rfsim4g-oai-mme
privileged
:
true
depends_on
:
[
oai_hss
]
networks
:
public_net
:
ipv4_address
:
192.168.61.3
environment
:
REALM
:
openairinterface.org
PREFIX
:
/openair-mme/etc
INSTANCE
:
1
PID_DIRECTORY
:
/var/run
HSS_IP_ADDR
:
192.168.61.2
HSS_HOSTNAME
:
hss
HSS_FQDN
:
hss.openairinterface.org
HSS_REALM
:
openairinterface.org
MCC
:
'
208'
MNC
:
'
96'
MME_GID
:
32768
MME_CODE
:
3
TAC_0
:
1
TAC_1
:
2
TAC_2
:
3
MME_FQDN
:
mme.openairinterface.org
MME_S6A_IP_ADDR
:
192.168.61.3
MME_INTERFACE_NAME_FOR_S1_MME
:
eth0
MME_IPV4_ADDRESS_FOR_S1_MME
:
192.168.61.3
MME_INTERFACE_NAME_FOR_S11
:
eth0
MME_IPV4_ADDRESS_FOR_S11
:
192.168.61.3
MME_INTERFACE_NAME_FOR_S10
:
lo
MME_IPV4_ADDRESS_FOR_S10
:
127.0.0.10
OUTPUT
:
CONSOLE
SGW_IPV4_ADDRESS_FOR_S11_0
:
192.168.61.4
PEER_MME_IPV4_ADDRESS_FOR_S10_0
:
0.0.0.0
PEER_MME_IPV4_ADDRESS_FOR_S10_1
:
0.0.0.0
MCC_SGW_0
:
'
208'
MNC3_SGW_0
:
'
096'
TAC_LB_SGW_0
:
'
01'
TAC_HB_SGW_0
:
'
00'
MCC_MME_0
:
'
208'
MNC3_MME_0
:
'
096'
TAC_LB_MME_0
:
'
02'
TAC_HB_MME_0
:
'
00'
MCC_MME_1
:
'
208'
MNC3_MME_1
:
'
096'
TAC_LB_MME_1
:
'
03'
TAC_HB_MME_1
:
'
00'
TAC_LB_SGW_TEST_0
:
'
03'
TAC_HB_SGW_TEST_0
:
'
00'
SGW_IPV4_ADDRESS_FOR_S11_TEST_0
:
0.0.0.0
healthcheck
:
test
:
/bin/bash -c "pgrep oai_mme"
interval
:
10s
timeout
:
5s
retries
:
5
oai_spgwc
:
image
:
oai-spgwc:develop-2021-06-14
privileged
:
true
depends_on
:
[
oai_mme
]
container_name
:
rfsim4g-oai-spgwc
networks
:
public_net
:
ipv4_address
:
192.168.61.4
environment
:
TZ
:
Europe/Paris
SGW_INTERFACE_NAME_FOR_S11
:
eth0
PGW_INTERFACE_NAME_FOR_SX
:
eth0
DEFAULT_DNS_IPV4_ADDRESS
:
192.168.18.129
DEFAULT_DNS_SEC_IPV4_ADDRESS
:
8.8.4.4
PUSH_PROTOCOL_OPTION
:
'
true'
APN_NI_1
:
oai.ipv4
APN_NI_2
:
oai.ipv4_2
DEFAULT_APN_NI_1
:
oai.ipv4
UE_IP_ADDRESS_POOL_1
:
'
12.0.0.2
-
12.0.0.254'
UE_IP_ADDRESS_POOL_2
:
'
12.1.1.2
-
12.1.1.254'
MCC
:
'
208'
MNC
:
'
96'
MNC03
:
'
096'
TAC
:
1
GW_ID
:
1
REALM
:
openairinterface.org
healthcheck
:
test
:
/bin/bash -c "pgrep oai_spgwc"
interval
:
10s
timeout
:
5s
retries
:
5
oai_spgwu
:
image
:
oai-spgwu-tiny:develop-2021-06-14
privileged
:
true
container_name
:
rfsim4g-oai-spgwu-tiny
depends_on
:
[
oai_spgwc
]
networks
:
public_net
:
ipv4_address
:
192.168.61.5
environment
:
TZ
:
Europe/Paris
PID_DIRECTORY
:
/var/run
INSTANCE
:
1
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
:
eth0
PGW_INTERFACE_NAME_FOR_SGI
:
eth0
SGW_INTERFACE_NAME_FOR_SX
:
eth0
SPGWC0_IP_ADDRESS
:
192.168.61.4
NETWORK_UE_IP
:
'
12.0.0.0/24'
NETWORK_UE_NAT_OPTION
:
'
yes'
MCC
:
'
208'
MNC
:
'
96'
MNC03
:
'
096'
TAC
:
1
GW_ID
:
1
REALM
:
openairinterface.org
healthcheck
:
test
:
/bin/bash -c "pgrep oai_spgwu"
interval
:
10s
timeout
:
5s
retries
:
5
flexran_rtc
:
image
:
flexran-rtc:production
privileged
:
true
container_name
:
rfsim4g-flexran-rtc
networks
:
public_net
:
ipv4_address
:
192.168.61.10
healthcheck
:
test
:
/bin/bash -c "pgrep rt_controller"
interval
:
10s
timeout
:
5s
retries
:
5
trf_gen
:
image
:
trf-gen:production
privileged
:
true
container_name
:
rfsim4g-trf-gen
networks
:
public_net
:
ipv4_address
:
192.168.61.11
entrypoint
:
/bin/bash -c "ip route add 12.0.0.0/24 via 192.168.61.5 dev eth0; sleep infinity"
healthcheck
:
test
:
/bin/bash -c "ping -c 2 192.168.61.5"
interval
:
10s
timeout
:
5s
retries
:
5
enb
:
image
:
oai-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
public_net
:
ipv4_address
:
192.168.61.20
environment
:
TZ
:
Europe/Paris
USE_FDD_MONO
:
'
yes'
RFSIMULATOR
:
enb
ENB_NAME
:
eNB-rf-sim
MCC
:
'
208'
MNC
:
'
96'
MNC_LENGTH
:
2
TAC
:
1
UTRA_BAND_ID
:
7
DL_FREQUENCY_IN_MHZ
:
2680
UL_FREQUENCY_OFFSET_IN_MHZ
:
120
NID_CELL
:
10
NB_PRB
:
25
MME_S1C_IP_ADDRESS
:
192.168.61.3
ENB_S1C_IF_NAME
:
eth0
ENB_S1C_IP_ADDRESS
:
192.168.61.20
ENB_S1U_IF_NAME
:
eth0
ENB_S1U_IP_ADDRESS
:
192.168.61.20
ENB_X2_IP_ADDRESS
:
192.168.61.20
FLEXRAN_ENABLED
:
'
no'
FLEXRAN_INTERFACE_NAME
:
eth0
FLEXRAN_IPV4_ADDRESS
:
192.168.61.10
USE_ADDITIONAL_OPTIONS
:
--rfsim
oai_ue0
:
image
:
oai-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
public_net
:
ipv4_address
:
192.168.61.30
expose
:
-
"
10000"
environment
:
TZ
:
Europe/Paris
HOSTNAME
:
oai_ue0
RFSIMULATOR
:
192.168.61.20
MCC
:
'
208'
MNC
:
'
96'
SHORT_IMSI
:
'
0100000001'
LTE_KEY
:
'
fec86ba6eb707ed08905757b1bb44b8f'
OPC
:
'
c42449363bbad02b66d16bc975d77cc1'
MSISDN
:
'
001011234561010'
HPLMN
:
20896
USE_ADDITIONAL_OPTIONS
:
--rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod
1
networks
:
private_net
:
name
:
rfsim4g-oai-private-net
ipam
:
config
:
-
subnet
:
192.168.68.0/26
public_net
:
name
:
rfsim4g-oai-public-net
ipam
:
config
:
-
subnet
:
192.168.61.0/26
ci-scripts/yaml_files/4g_rfsimulator/oai_db.cql
0 → 100644
View file @
5c70aa96
CREATE KEYSPACE IF NOT EXISTS vhss WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '1'};
CREATE TABLE IF NOT EXISTS vhss.users_imsi (
imsi text PRIMARY KEY,
access_restriction int,
idmmeidentity int,
imei text,
imei_sv text,
key text,
lipa_permissions text,
mme_cap int,
mmehost text,
mmeidentity_idmmeidentity int,
mmerealm text,
ms_ps_status text,
msisdn bigint,
niddvalidity text,
nir_dest_host text,
nir_dest_realm text,
opc text,
pgw_id int,
rand text,
rfsp_index varint,
sqn bigint,
subscription_data text,
ue_reachability varint,
urrp_mme varint,
user_identifier text,
visited_plmnid text);
CREATE TABLE IF NOT EXISTS vhss.msisdn_imsi (
msisdn bigint PRIMARY KEY,
imsi text
);
CREATE TABLE IF NOT EXISTS vhss.global_ids (
table_name text PRIMARY KEY,
id counter);
CREATE TABLE IF NOT EXISTS vhss.mmeidentity_host (
mmehost text PRIMARY KEY,
idmmeidentity int,
mmerealm text,
ue_reachability varint,
mmeisdn text);
CREATE TABLE IF NOT EXISTS vhss.mmeidentity (
idmmeidentity int PRIMARY KEY,
mmehost text,
mmerealm text,
ue_reachability varint,
mmeisdn text);
CREATE TABLE IF NOT EXISTS vhss.events (
scef_id text,
scef_ref_id bigint,
extid text,
monitoring_event_configuration text,
monitoring_type int,
msisdn bigint,
user_identifier text,
primary key (scef_id, scef_ref_id)
);
CREATE TABLE IF NOT EXISTS vhss.events_msisdn (
msisdn bigint,
scef_id text,
scef_ref_id bigint,
primary key (msisdn, scef_id, scef_ref_id)
);
CREATE TABLE IF NOT EXISTS vhss.events_extid (
extid text,
scef_id text,
scef_ref_id bigint,
primary key (extid, scef_id, scef_ref_id)
);
CREATE TABLE IF NOT EXISTS vhss.extid (
extid text primary key
);
CREATE TABLE IF NOT EXISTS vhss.extid_imsi (
extid text,
imsi text,
primary key (extid, imsi)
);
CREATE TABLE IF NOT EXISTS vhss.extid_imsi_xref (
imsi text,
extid text,
primary key (imsi, extid)
);
doc/FEATURE_SET.md
View file @
5c70aa96
...
...
@@ -283,7 +283,7 @@ The following features are valid for the gNB and the 5G-NR UE.
-
PTRS support
-
Support for 1, 2 and 4 TX antennas
-
Support for up to 2 layers (currently limited to DMRS configuration type 2)
*
NR-CSI
Generation of sequence at PHY (
**under integration**
)
*
NR-CSI
RS Generation of sequence at PHY
*
NR-PUSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc).
-
PUSCH mapping type A and B
-
DMRS configuration type 1 and 2
...
...
@@ -319,6 +319,7 @@ The following features are valid for the gNB and the 5G-NR UE.
-
MAC
<->
PHY data interface using FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU
-
Scheduler procedures for SIB1
-
Scheduler procedures for RA
-
Scheduler procedures for CSI-RS
-
MAC downlink scheduler (fixed allocations)
-
MAC header generation (including timing advance)
-
ACK / NACK handling and HARQ procedures for downlink
...
...
@@ -349,7 +350,6 @@ The following features are valid for the gNB and the 5G-NR UE.
-
PTRS support
-
Support for 1, 2 and 4 RX antennas
-
Support for up to 2 layers (currently limited to DMRS configuration type 2)
*
NR-CSI Generation of sequence at PHY (
**under integration**
)
*
NR-PUSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc).
-
PUSCH mapping type A and B
-
DMRS configuration type 1 and 2
...
...
docker/Dockerfile.eNB.ubuntu18
View file @
5c70aa96
...
...
@@ -60,6 +60,7 @@ RUN apt-get update && \
net-tools \
iputils-ping \
iproute2 \
iperf \
libyaml-0-2 && \
# Install UHD driver from ettus ppa
# At time of writing, it is 3.14
...
...
docker/Dockerfile.lteUE.ubuntu18
View file @
5c70aa96
...
...
@@ -61,6 +61,7 @@ RUN apt-get update && \
net-tools \
iputils-ping \
iproute2 \
iperf \
libyaml-0-2 && \
# Install UHD driver from ettus ppa
# At time of writing, it is 3.14
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
5c70aa96
...
...
@@ -1571,8 +1571,7 @@ typedef struct
{
uint8_t
csi_part1_crc
;
uint16_t
csi_part1_bit_len
;
//! fixme
uint8_t
*
csi_part1_payload
;
//uint8_t[ceil(csiPart1BitLen/8)]
uint8_t
*
csi_part1_payload
;
}
nfapi_nr_csi_part1_pdu_t
;
...
...
@@ -1581,8 +1580,7 @@ typedef struct
{
uint8_t
csi_part2_crc
;
uint16_t
csi_part2_bit_len
;
//! fixme
uint8_t
*
csi_part2_payload
;
//uint8_t[ceil(csiPart2BitLen/8)]
uint8_t
*
csi_part2_payload
;
}
nfapi_nr_csi_part2_pdu_t
;
//table 3-63
...
...
openair1/PHY/INIT/nr_init.c
View file @
5c70aa96
...
...
@@ -227,16 +227,14 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
}
}
nr_init_csi_rs
(
gNB
,
cfg
->
cell_config
.
phy_cell_id
.
value
);
/* Generate low PAPR type 1 sequences for PUSCH DMRS, these are used if transform precoding is enabled. */
generate_lowpapr_typ1_refsig_sequences
(
SHRT_MAX
);
nr_init_csi_rs
(
gNB
,
0
);
// TODO scramblingID currently hardcoded to 0, to be taken from higher layer parameter scramblingID when implemented
/// Transport init necessary for NR synchro
init_nr_transport
(
gNB
);
gNB
->
first_run_I0_measurements
=
1
;
common_vars
->
rxdata
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
));
...
...
openair1/PHY/INIT/nr_init_ue.c
View file @
5c70aa96
...
...
@@ -453,9 +453,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
else
ue
->
pdsch_config_dedicated
->
p_a
=
dB0
;
// set channel estimation to do linear interpolation in time
ue
->
high_speed_flag
=
1
;
ue
->
ch_est_alpha
=
24576
;
// enable MIB/SIB decoding by default
ue
->
decode_MIB
=
1
;
ue
->
decode_SIB
=
1
;
...
...
openair1/PHY/NR_REFSIG/nr_gold.c
View file @
5c70aa96
...
...
@@ -145,7 +145,7 @@ void nr_init_csi_rs(PHY_VARS_gNB* gNB, uint32_t Nid)
reset
=
1
;
x2
=
((
1
<<
10
)
*
(
fp
->
symbols_per_slot
*
slot
+
symb
+
1
)
*
((
Nid
<<
1
)
+
1
)
+
(
Nid
));
for
(
uint32_t
n
=
0
;
n
<
NR_MAX_
PDCCH_DM
RS_INIT_LENGTH_DWORD
;
n
++
)
{
for
(
uint32_t
n
=
0
;
n
<
NR_MAX_
CSI_
RS_INIT_LENGTH_DWORD
;
n
++
)
{
csi_rs
[
slot
][
symb
][
n
]
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
reset
=
0
;
}
...
...
openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
View file @
5c70aa96
...
...
@@ -22,17 +22,22 @@
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
#include "PHY/MODULATION/nr_modulation.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
//#define NR_CSIRS_DEBUG
int
nr_generate_csi_rs
(
uint32_t
**
gold_csi_rs
,
int32_t
**
txdataF
,
int16_t
amp
,
NR_DL_FRAME_PARMS
frame_parms
,
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t
csi_params
)
{
int16_t
mod_csi
[
frame_parms
.
symbols_per_slot
][
NR_MAX_CSI_RS_LENGTH
>>
1
];
void
nr_generate_csi_rs
(
PHY_VARS_gNB
*
gNB
,
int16_t
amp
,
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t
csi_params
,
uint16_t
cell_id
,
int
slot
){
NR_DL_FRAME_PARMS
frame_parms
=
gNB
->
frame_parms
;
int32_t
**
txdataF
=
gNB
->
common_vars
.
txdataF
;
int
txdataF_offset
=
(
slot
%
2
)
*
frame_parms
.
samples_per_slot_wCP
;
uint32_t
**
gold_csi_rs
=
gNB
->
nr_gold_csi_rs
[
slot
];
int16_t
mod_csi
[
frame_parms
.
symbols_per_slot
][
NR_MAX_CSI_RS_LENGTH
>>
1
]
__attribute__
((
aligned
(
16
)));;
uint16_t
b
=
csi_params
.
freq_domain
;
uint16_t
n
,
csi_bw
,
csi_start
,
p
,
k
,
l
,
mprime
,
na
,
kpn
,
csi_length
;
uint8_t
size
,
ports
,
kprime
,
lprime
,
i
,
gs
;
...
...
@@ -45,6 +50,22 @@ int nr_generate_csi_rs(uint32_t **gold_csi_rs,
AssertFatal
(
b
!=
0
,
"Invalid CSI frequency domain mapping: no bit selected in bitmap
\n
"
);
// pre-computed for scrambling id equel to cell id
// if the scrambling id is not the cell id we need to re-initialize the rs
if
(
csi_params
.
scramb_id
!=
cell_id
)
{
uint8_t
reset
;
uint32_t
x1
,
x2
;
uint32_t
Nid
=
csi_params
.
scramb_id
;
for
(
uint8_t
symb
=
0
;
symb
<
frame_parms
.
symbols_per_slot
;
symb
++
)
{
reset
=
1
;
x2
=
((
1
<<
10
)
*
(
frame_parms
.
symbols_per_slot
*
slot
+
symb
+
1
)
*
((
Nid
<<
1
)
+
1
)
+
(
Nid
));
for
(
uint32_t
n
=
0
;
n
<
NR_MAX_CSI_RS_INIT_LENGTH_DWORD
;
n
++
)
{
gold_csi_rs
[
symb
][
n
]
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
reset
=
0
;
}
}
}
switch
(
csi_params
.
row
)
{
// implementation of table 7.4.1.5.3-1 of 38.211
// lprime and kprime are the max value of l' and k'
...
...
@@ -495,12 +516,12 @@ int nr_generate_csi_rs(uint32_t **gold_csi_rs,
if
(
rho
<
1
)
{
if
(
csi_params
.
freq_density
==
0
)
csi_length
=
(((
csi_bw
+
csi_start
)
>>
1
)
<<
kprime
)
<<
1
;
csi_length
=
(((
csi_bw
+
csi_start
)
>>
1
)
<<
kprime
)
<<
1
;
else
csi_length
=
((((
csi_bw
+
csi_start
)
>>
1
)
<<
kprime
)
+
1
)
<<
1
;
}
else
csi_length
=
(((
uint16_t
)
rho
*
(
csi_bw
+
csi_start
))
<<
kprime
)
<<
1
;
csi_length
=
(((
uint16_t
)
rho
*
(
csi_bw
+
csi_start
))
<<
kprime
)
<<
1
;
#ifdef NR_CSIRS_DEBUG
printf
(
" start rb %d, n. rbs %d, csi length %d
\n
"
,
csi_start
,
csi_bw
,
csi_length
);
...
...
@@ -514,41 +535,36 @@ int nr_generate_csi_rs(uint32_t **gold_csi_rs,
// NZP CSI RS
if
(
csi_params
.
csi_type
==
1
)
{
// assuming amp is the amplitude of SSB channels
switch
(
csi_params
.
power_control_offset_ss
)
{
case
0
:
beta
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
break
;
case
1
:
beta
=
amp
;
break
;
case
2
:
beta
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
14
;
break
;
case
3
:
beta
=
amp
<<
1
;
break
;
default:
AssertFatal
(
0
==
1
,
"Invalid SS power offset density index for CSI
\n
"
);
}
for
(
lp
=
0
;
lp
<=
lprime
;
lp
++
){
symb
=
csi_params
.
symb_l0
;
nr_modulation
(
gold_csi_rs
[
symb
+
lp
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
lp
]);
if
((
csi_params
.
row
==
5
)
||
(
csi_params
.
row
==
7
)
||
(
csi_params
.
row
==
11
)
||
(
csi_params
.
row
==
13
)
||
(
csi_params
.
row
==
16
))
nr_modulation
(
gold_csi_rs
[
symb
+
1
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
1
]);
if
((
csi_params
.
row
==
14
)
||
(
csi_params
.
row
==
13
)
||
(
csi_params
.
row
==
16
)
||
(
csi_params
.
row
==
17
))
{
symb
=
csi_params
.
symb_l1
;
nr_modulation
(
gold_csi_rs
[
symb
+
lp
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
lp
]);
if
((
csi_params
.
row
==
13
)
||
(
csi_params
.
row
==
16
))
nr_modulation
(
gold_csi_rs
[
symb
+
1
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
1
]);
}
}
// assuming amp is the amplitude of SSB channels
switch
(
csi_params
.
power_control_offset_ss
)
{
case
0
:
beta
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
break
;
case
1
:
beta
=
amp
;
break
;
case
2
:
beta
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
14
;
break
;
case
3
:
beta
=
amp
<<
1
;
break
;
default:
AssertFatal
(
0
==
1
,
"Invalid SS power offset density index for CSI
\n
"
);
}
for
(
lp
=
0
;
lp
<=
lprime
;
lp
++
){
symb
=
csi_params
.
symb_l0
;
nr_modulation
(
gold_csi_rs
[
symb
+
lp
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
lp
]);
if
((
csi_params
.
row
==
5
)
||
(
csi_params
.
row
==
7
)
||
(
csi_params
.
row
==
11
)
||
(
csi_params
.
row
==
13
)
||
(
csi_params
.
row
==
16
))
nr_modulation
(
gold_csi_rs
[
symb
+
1
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
1
]);
if
((
csi_params
.
row
==
14
)
||
(
csi_params
.
row
==
13
)
||
(
csi_params
.
row
==
16
)
||
(
csi_params
.
row
==
17
))
{
symb
=
csi_params
.
symb_l1
;
nr_modulation
(
gold_csi_rs
[
symb
+
lp
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
lp
]);
if
((
csi_params
.
row
==
13
)
||
(
csi_params
.
row
==
16
))
nr_modulation
(
gold_csi_rs
[
symb
+
1
],
csi_length
,
DMRS_MOD_ORDER
,
mod_csi
[
symb
+
1
]);
}
}
}
uint16_t
start_sc
=
frame_parms
.
first_carrier_offset
;
...
...
@@ -586,16 +602,17 @@ int nr_generate_csi_rs(uint32_t **gold_csi_rs,
}
// ZP CSI RS
if
(
csi_params
.
csi_type
==
2
)
{
((
int16_t
*
)
txdataF
[
p
])[(
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
]
=
0
;
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]
=
0
;
((
int16_t
*
)
txdataF
[
p
])[(
(
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
(
2
*
txdataF_offset
)
]
=
0
;
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
(
2
*
txdataF_offset
)
]
=
0
;
}
else
{
((
int16_t
*
)
txdataF
[
p
])[(
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
]
=
(
beta
*
wt
*
wf
*
mod_csi
[
l
][
mprime
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]
=
(
beta
*
wt
*
wf
*
mod_csi
[
l
][(
mprime
<<
1
)
+
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
p
])[(
(
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
(
2
*
txdataF_offset
)
]
=
(
beta
*
wt
*
wf
*
mod_csi
[
l
][
mprime
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
(
2
*
txdataF_offset
)
]
=
(
beta
*
wt
*
wf
*
mod_csi
[
l
][(
mprime
<<
1
)
+
1
])
>>
15
;
}
#ifdef NR_CSIRS_DEBUG
printf
(
"l,k (%d %d) seq. index %d
\t
port %d
\t
(%d,%d)
\n
"
,
l
,
k
-
start_sc
,
mprime
,
p
+
3000
,((
int16_t
*
)
txdataF
[
p
])[(
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
],
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]);
printf
(
"l,k (%d %d) seq. index %d
\t
port %d
\t
(%d,%d)
\n
"
,
l
,
k
,
mprime
,
p
+
3000
,
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
(
2
*
txdataF_offset
)],
((
int16_t
*
)
txdataF
[
p
])[((
l
*
frame_parms
.
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
(
2
*
txdataF_offset
)]);
#endif
}
}
...
...
@@ -603,6 +620,4 @@ int nr_generate_csi_rs(uint32_t **gold_csi_rs,
}
}
}
return
0
;
}
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
View file @
5c70aa96
...
...
@@ -326,11 +326,11 @@ void init_prach_list(PHY_VARS_gNB *gNB);
void
init_prach_ru_list
(
RU_t
*
ru
);
void
free_nr_ru_prach_entry
(
RU_t
*
ru
,
int
prach_id
);
int
nr_generate_csi_rs
(
uint32_t
**
gold_csi_rs
,
int32_t
**
txdataF
,
int16_t
amp
,
NR_DL_FRAME_PARMS
frame_parms
,
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t
csi_params
);
void
nr_generate_csi_rs
(
PHY_VARS_gNB
*
gNB
,
int16_t
amp
,
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t
csi_params
,
uint16_t
cell_id
,
int
slot
);
void
free_nr_prach_entry
(
PHY_VARS_gNB
*
gNB
,
int
prach_id
);
...
...
openair1/PHY/NR_TRANSPORT/pucch_rx.c
View file @
5c70aa96
...
...
@@ -289,7 +289,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
int32_t
corr_re
[
2
];
int32_t
corr_im
[
2
];
//int32_t no_corr = 0;
int
seq_index
;
int64_t
temp
;
int64_t
av_corr
=
0
;
...
...
@@ -1375,7 +1375,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
rp2_im
[
aa
]
=
(
__m256i
*
)
r_im_ext2
[
aa
];
}
__m256i
prod_re
[
Prx2
],
prod_im
[
Prx2
];
int64_t
corr
=
0
;
u
int64_t
corr
=
0
;
int
cw_ML
=
0
;
...
...
@@ -1389,7 +1389,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
}
printf
(
"
\n
"
);
#endif
int64_t
corr_tmp
=
0
;
u
int64_t
corr_tmp
=
0
;
for
(
int
group
=
0
;
group
<
ngroup
;
group
++
)
{
// do complex correlation
...
...
@@ -1421,8 +1421,8 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
prod_im
[
aa
]
=
_mm256_hadds_epi16
(
prod_im
[
aa
],
prod_im
[
aa
]);
}
int64_t
corr_re
=
0
,
corr_im
=
0
;
for
(
int
aa
=
0
;
aa
<
Prx
;
aa
++
)
{
LOG_D
(
PHY
,
"pucch2 cw %d group %d aa %d: (%d,%d)+(%d,%d) = (%d,%d)
\n
"
,
cw
,
group
,
aa
,
corr32_re
[
group
][
aa
],
corr32_im
[
group
][
aa
],
...
...
@@ -1499,11 +1499,11 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
if
(
cw
==
0
)
corr
+=
((
int64_t
)
corr32_re
[
half_prb
>>
2
][
aa
]
*
corr32_re
[
half_prb
>>
2
][
aa
])
+
((
int64_t
)
corr32_im
[
half_prb
>>
2
][
aa
]
*
corr32_im
[
half_prb
>>
2
][
aa
]);
corr_re
=
(
corr32_re
[
half_prb
>>
2
][
aa
]
/
(
2
*
nc_group_size
*
4
/
2
)
+
((
int16_t
*
)(
&
prod_re
[
aa
]))[
0
]);
corr_im
=
(
corr32_im
[
half_prb
>>
2
][
aa
]
/
(
2
*
nc_group_size
*
4
/
2
)
+
((
int16_t
*
)(
&
prod_im
[
aa
]))[
0
]);
corr_tmp
+=
corr_re
*
corr_re
+
corr_im
*
corr_im
;
/*
LOG_D
(
PHY
,
"pucch2 half_prb %d cw %d (%d,%d) aa %d: (%d,%d,%d,%d,%d,%d,%d,%d)x(%d,%d,%d,%d,%d,%d,%d,%d) (%d,%d)+(%d,%d) = (%d,%d) => %d
\n
"
,
half_prb
,
cw
,
cw
&
15
,
cw
>>
4
,
aa
,
((
int16_t
*
)
&
pucch2_polar_4bit
[
cw
&
15
])[
0
],((
int16_t
*
)
&
pucch2_polar_4bit
[
cw
>>
4
])[
0
],
...
...
@@ -1520,15 +1520,15 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
corr_re
,
corr_im
,
corr_tmp
);
*/
}
corr16
=
_mm_set1_epi16
((
int16_t
)(
corr_tmp
>>
8
));
/*
LOG_D
(
PHY
,
"half_prb %d cw %d corr16 %d
\n
"
,
half_prb
,
cw
,
corr_tmp
>>
8
);
*/
llr_num
=
_mm_max_epi16
(
_mm_mullo_epi16
(
corr16
,
pucch2_polar_llr_num_lut
[
cw
]),
llr_num
);
llr_den
=
_mm_max_epi16
(
_mm_mullo_epi16
(
corr16
,
pucch2_polar_llr_den_lut
[
cw
]),
llr_den
);
/*
LOG_D
(
PHY
,
"lut_num (%d,%d,%d,%d,%d,%d,%d,%d)
\n
"
,
((
int16_t
*
)
&
pucch2_polar_llr_num_lut
[
cw
])[
0
],
((
int16_t
*
)
&
pucch2_polar_llr_num_lut
[
cw
])[
1
],
...
...
@@ -1538,7 +1538,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
((
int16_t
*
)
&
pucch2_polar_llr_num_lut
[
cw
])[
5
],
((
int16_t
*
)
&
pucch2_polar_llr_num_lut
[
cw
])[
6
],
((
int16_t
*
)
&
pucch2_polar_llr_num_lut
[
cw
])[
7
]);
LOG_D
(
PHY
,
"llr_num (%d,%d,%d,%d,%d,%d,%d,%d)
\n
"
,
((
int16_t
*
)
&
llr_num
)[
0
],
((
int16_t
*
)
&
llr_num
)[
1
],
...
...
@@ -1557,7 +1557,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
((
int16_t
*
)
&
llr_den
)[
5
],
((
int16_t
*
)
&
llr_den
)[
6
],
((
int16_t
*
)
&
llr_den
)[
7
]);
*/
}
// compute llrs
llrs
[
half_prb
]
=
_mm_subs_epi16
(
llr_num
,
llr_den
);
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
5c70aa96
...
...
@@ -222,10 +222,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
unsigned
int
ssb_offset
=
ue
->
frame_parms
.
first_carrier_offset
+
ue
->
frame_parms
.
ssb_start_subcarrier
;
if
(
ssb_offset
>=
ue
->
frame_parms
.
ofdm_symbol_size
)
ssb_offset
-=
ue
->
frame_parms
.
ofdm_symbol_size
;
if
(
ue
->
high_speed_flag
==
0
)
// use second channel estimate position for temporary storage
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
;
else
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
AssertFatal
(
dmrss
>=
0
&&
dmrss
<
3
,
"symbol %d is illegal for PBCH DM-RS
\n
"
,
...
...
@@ -283,10 +280,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aarx
][
ch_offset
];
memset
(
dl_ch
,
0
,
4
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
if
(
ue
->
high_speed_flag
==
0
)
// multiply previous channel estimate by ch_est_alpha
multadd_complex_vector_real_scalar
(
dl_ch
-
(
ue
->
frame_parms
.
ofdm_symbol_size
<<
1
),
ue
->
ch_est_alpha
,
dl_ch
-
(
ue
->
frame_parms
.
ofdm_symbol_size
<<
1
),
1
,
ue
->
frame_parms
.
ofdm_symbol_size
);
#ifdef DEBUG_CH
printf
(
"pbch ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
0
],
ue
->
frame_parms
.
N_RB_DL
);
printf
(
"k %d, first_carrier %d
\n
"
,
k
,
ue
->
frame_parms
.
first_carrier_offset
);
...
...
@@ -488,11 +482,7 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
int
**
dl_ch_estimates
=
ue
->
pdcch_vars
[
proc
->
thread_id
][
gNB_id
]
->
dl_ch_estimates
;
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
;
if
(
ue
->
high_speed_flag
==
0
)
// use second channel estimate position for temporary storage
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
;
else
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
symbol_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
...
...
@@ -527,10 +517,7 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aarx
][
ch_offset
];
memset
(
dl_ch
,
0
,
4
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
if
(
ue
->
high_speed_flag
==
0
)
// multiply previous channel estimate by ch_est_alpha
multadd_complex_vector_real_scalar
(
dl_ch
-
(
ue
->
frame_parms
.
ofdm_symbol_size
<<
1
),
ue
->
ch_est_alpha
,
dl_ch
-
(
ue
->
frame_parms
.
ofdm_symbol_size
<<
1
),
1
,
ue
->
frame_parms
.
ofdm_symbol_size
);
#ifdef DEBUG_PDCCH
printf
(
"pdcch ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
0
],
ue
->
frame_parms
.
N_RB_DL
);
printf
(
"k %d, first_carrier %d
\n
"
,
k
,
ue
->
frame_parms
.
first_carrier_offset
);
...
...
@@ -677,10 +664,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
int
**
dl_ch_estimates
=
ue
->
pdsch_vars
[
proc
->
thread_id
][
gNB_id
]
->
dl_ch_estimates
;
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
;
if
(
ue
->
high_speed_flag
==
0
)
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
;
else
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
ch_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
symbol_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
...
...
@@ -798,10 +782,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
p
*
ue
->
frame_parms
.
nb_antennas_rx
+
aarx
][
ch_offset
];
memset
(
dl_ch
,
0
,
4
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
if
(
ue
->
high_speed_flag
==
0
)
// multiply previous channel estimate by ch_est_alpha
multadd_complex_vector_real_scalar
(
dl_ch
-
(
ue
->
frame_parms
.
ofdm_symbol_size
<<
1
),
ue
->
ch_est_alpha
,
dl_ch
-
(
ue
->
frame_parms
.
ofdm_symbol_size
<<
1
),
1
,
ue
->
frame_parms
.
ofdm_symbol_size
);
#ifdef DEBUG_PDSCH
printf
(
"ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
0
],
ue
->
frame_parms
.
N_RB_DL
);
printf
(
"k %d, first_carrier %d
\n
"
,
k
,
ue
->
frame_parms
.
first_carrier_offset
);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
5c70aa96
...
...
@@ -392,11 +392,11 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d
Flag %d
type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
high_speed_flag
,
type
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
type
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d
Flag %d
type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
high_speed_flag
,
type
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
type
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
5c70aa96
...
...
@@ -161,13 +161,12 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
#endif
ret
=
nr_rx_pbch
(
ue
,
proc
,
ue
->
pbch_vars
[
0
],
frame_parms
,
0
,
temp_ptr
->
i_ssb
,
SISO
,
ue
->
high_speed_flag
);
proc
,
ue
->
pbch_vars
[
0
],
frame_parms
,
0
,
temp_ptr
->
i_ssb
,
SISO
);
temp_ptr
=
temp_ptr
->
next_ssb
;
}
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
5c70aa96
...
...
@@ -54,7 +54,6 @@ uint16_t nr_pbch_extract(int **rxdataF,
int
**
dl_ch_estimates_ext
,
uint32_t
symbol
,
uint32_t
s_offset
,
uint32_t
high_speed_flag
,
NR_DL_FRAME_PARMS
*
frame_parms
)
{
uint16_t
rb
;
uint8_t
i
,
j
,
aarx
;
...
...
@@ -138,10 +137,7 @@ uint16_t nr_pbch_extract(int **rxdataF,
}
}
if
(
high_speed_flag
==
1
)
dl_ch0
=
&
dl_ch_estimates
[
aarx
][((
symbol
+
s_offset
)
*
(
frame_parms
->
ofdm_symbol_size
))];
else
dl_ch0
=
&
dl_ch_estimates
[
aarx
][
0
];
dl_ch0
=
&
dl_ch_estimates
[
aarx
][((
symbol
+
s_offset
)
*
(
frame_parms
->
ofdm_symbol_size
))];
//printf("dl_ch0 addr %p\n",dl_ch0);
dl_ch0_ext
=
&
dl_ch_estimates_ext
[
aarx
][
symbol
*
20
*
12
];
...
...
@@ -420,8 +416,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
gNB_id
,
uint8_t
i_ssb
,
MIMO_mode_t
mimo_mode
,
uint32_t
high_speed_flag
)
{
MIMO_mode_t
mimo_mode
)
{
NR_UE_COMMON
*
nr_ue_common_vars
=
&
ue
->
common_vars
;
int
max_h
=
0
;
...
...
@@ -470,7 +465,6 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
nr_ue_pbch_vars
->
dl_ch_estimates_ext
,
symbol
,
symbol_offset
,
high_speed_flag
,
frame_parms
);
#ifdef DEBUG_PBCH
LOG_I
(
PHY
,
"[PHY] PBCH Symbol %d ofdm size %d
\n
"
,
symbol
,
frame_parms
->
ofdm_symbol_size
);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
5c70aa96
...
...
@@ -1165,13 +1165,12 @@ int rx_sss(PHY_VARS_NR_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uin
\returns number of tx antennas or -1 if error
*/
int
nr_rx_pbch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_PBCH
*
nr_ue_pbch_vars
,
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
eNB_id
,
uint8_t
i_ssb
,
MIMO_mode_t
mimo_mode
,
uint32_t
high_speed_flag
);
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_PBCH
*
nr_ue_pbch_vars
,
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
eNB_id
,
uint8_t
i_ssb
,
MIMO_mode_t
mimo_mode
);
int
nr_pbch_detection
(
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
...
...
openair1/PHY/defs_gNB.h
View file @
5c70aa96
...
...
@@ -120,6 +120,13 @@ typedef struct {
nfapi_nr_dl_tti_pdcch_pdu
pdcch_pdu
;
}
NR_gNB_PDCCH_t
;
typedef
struct
{
uint8_t
active
;
int
frame
;
int
slot
;
nfapi_nr_dl_tti_csi_rs_pdu
csirs_pdu
;
}
NR_gNB_CSIRS_t
;
typedef
struct
{
int
frame
;
int
slot
;
...
...
@@ -760,6 +767,7 @@ typedef struct PHY_VARS_gNB_s {
NR_gNB_PUSCH
*
pusch_vars
[
NUMBER_OF_NR_ULSCH_MAX
];
NR_gNB_PUCCH_t
*
pucch
[
NUMBER_OF_NR_PUCCH_MAX
];
NR_gNB_PDCCH_t
pdcch_pdu
[
NUMBER_OF_NR_PDCCH_MAX
];
NR_gNB_CSIRS_t
csirs_pdu
[
NUMBER_OF_NR_CSIRS_MAX
];
NR_gNB_UL_PDCCH_t
ul_pdcch_pdu
[
NUMBER_OF_NR_PDCCH_MAX
];
NR_gNB_DLSCH_t
*
dlsch
[
NUMBER_OF_NR_DLSCH_MAX
][
2
];
// Nusers times two spatial streams
NR_gNB_ULSCH_t
*
ulsch
[
NUMBER_OF_NR_ULSCH_MAX
][
2
];
// [Nusers times][2 codewords]
...
...
openair1/PHY/defs_nr_UE.h
View file @
5c70aa96
...
...
@@ -865,9 +865,9 @@ typedef struct {
uint32_t
X_u
[
64
][
839
];
uint32_t
high_speed_flag
;
uint32_t
perfect_ce
;
int16_t
ch_est_alpha
;
int
generate_ul_signal
[
NUMBER_OF_CONNECTED_gNB_MAX
];
UE_NR_SCAN_INFO_t
scan_info
[
NB_BANDS_MAX
];
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
5c70aa96
...
...
@@ -111,10 +111,9 @@ void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB,
nr_fill_dci
(
gNB
,
frame
,
slot
,
pdcch_pdu
);
}
void
handle_nfapi_nr_ul_dci_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_ul_dci_request_pdus_t
*
ul_dci_request_pdu
)
{
...
...
@@ -128,6 +127,30 @@ void handle_nfapi_nr_ul_dci_pdu(PHY_VARS_gNB *gNB,
}
void
handle_nfapi_nr_csirs_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_csi_rs_pdu
*
csirs_pdu
)
{
int
found
=
0
;
for
(
int
id
=
0
;
id
<
NUMBER_OF_NR_CSIRS_MAX
;
id
++
)
{
NR_gNB_CSIRS_t
*
csirs
=
&
gNB
->
csirs_pdu
[
id
];
if
(
csirs
->
active
==
0
)
{
LOG_D
(
PHY
,
"Frame %d Slot %d CSI_RS with ID %d is now active
\n
"
,
frame
,
slot
,
id
);
csirs
->
frame
=
frame
;
csirs
->
slot
=
slot
;
csirs
->
active
=
1
;
memcpy
((
void
*
)
&
csirs
->
csirs_pdu
,
(
void
*
)
csirs_pdu
,
sizeof
(
nfapi_nr_dl_tti_csi_rs_pdu
));
found
=
1
;
break
;
}
}
if
(
found
==
0
)
LOG_E
(
MAC
,
"CSI-RS list is full
\n
"
);
}
void
handle_nr_nfapi_pdsch_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
uint8_t
*
sdu
)
...
...
@@ -195,6 +218,12 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
pdcch_received
=
1
;
break
;
case
NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE
:
LOG_D
(
PHY
,
"frame %d, slot %d, Got NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE for %d.%d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
);
handle_nfapi_nr_csirs_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
csi_rs_pdu
);
break
;
case
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
:
{
...
...
openair1/SCHED_NR/fapi_nr_l1.h
View file @
5c70aa96
...
...
@@ -43,6 +43,10 @@ void handle_nr_nfapi_ssb_pdu(PHY_VARS_gNB *gNB,
void
nr_schedule_response
(
NR_Sched_Rsp_t
*
Sched_INFO
);
void
handle_nfapi_nr_csirs_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_csi_rs_pdu
*
csirs_pdu
);
void
handle_nfapi_nr_pdcch_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
subframe
,
nfapi_nr_dl_tti_pdcch_pdu
*
dcl_dl_pdu
);
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
5c70aa96
...
...
@@ -194,6 +194,18 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH
,
0
);
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_CSIRS_MAX
;
i
++
){
NR_gNB_CSIRS_t
*
csirs
=
&
gNB
->
csirs_pdu
[
i
];
if
((
csirs
->
active
==
1
)
&&
(
csirs
->
frame
==
frame
)
&&
(
csirs
->
slot
==
slot
)
)
{
LOG_D
(
PHY
,
"CSI-RS generation started in frame %d.%d
\n
"
,
frame
,
slot
);
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t
csi_params
=
csirs
->
csirs_pdu
.
csi_rs_pdu_rel15
;
nr_generate_csi_rs
(
gNB
,
AMP
,
csi_params
,
gNB
->
gNB_config
.
cell_config
.
phy_cell_id
.
value
,
slot
);
csirs
->
active
=
0
;
}
}
if
(
do_meas
==
1
)
stop_meas
(
&
gNB
->
phy_proc_tx
);
if
((
frame
&
127
)
==
0
)
dump_pdsch_stats
(
gNB
);
...
...
@@ -202,7 +214,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
for
(
aa
=
0
;
aa
<
cfg
->
carrier_config
.
num_tx_ant
.
value
;
aa
++
)
{
apply_nr_rotation
(
fp
,(
int16_t
*
)
&
gNB
->
common_vars
.
txdataF
[
aa
][
txdataF_offset
],
slot
,
0
,
fp
->
Ncp
==
EXTENDED
?
12
:
14
,
fp
->
ofdm_symbol_size
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX
+
offset
,
0
);
}
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
5c70aa96
...
...
@@ -372,12 +372,11 @@ void nr_ue_pbch_procedures(uint8_t gNB_id,
LOG_D
(
PHY
,
"[UE %d] Frame %d Slot %d, Trying PBCH (NidCell %d, gNB_id %d)
\n
"
,
ue
->
Mod_id
,
frame_rx
,
nr_slot_rx
,
ue
->
frame_parms
.
Nid_cell
,
gNB_id
);
ret
=
nr_rx_pbch
(
ue
,
proc
,
ue
->
pbch_vars
[
gNB_id
],
&
ue
->
frame_parms
,
gNB_id
,
(
ue
->
frame_parms
.
ssb_index
)
&
7
,
SISO
,
ue
->
high_speed_flag
);
ue
->
pbch_vars
[
gNB_id
],
&
ue
->
frame_parms
,
gNB_id
,
(
ue
->
frame_parms
.
ssb_index
)
&
7
,
SISO
);
if
(
ret
==
0
)
{
...
...
@@ -806,8 +805,6 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int gNB_
}
#endif
}
if
(
ue
->
high_speed_flag
==
0
)
//for slow speed case only estimate the channel once per slot
break
;
}
}
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
5c70aa96
...
...
@@ -706,13 +706,12 @@ int main(int argc, char **argv)
}
ret
=
nr_rx_pbch
(
UE
,
&
proc
,
UE
->
pbch_vars
[
0
],
frame_parms
,
0
,
ssb_index
%
8
,
SISO
,
UE
->
high_speed_flag
);
&
proc
,
UE
->
pbch_vars
[
0
],
frame_parms
,
0
,
ssb_index
%
8
,
SISO
);
if
(
ret
==
0
)
{
//UE->rx_ind.rx_indication_body->mib_pdu.ssb_index; //not yet detected automatically
...
...
openair2/GNB_APP/MACRLC_nr_paramdef.h
View file @
5c70aa96
...
...
@@ -107,9 +107,9 @@
#define MACRLC_LOCAL_S_PORTD_IDX 15
#define MACRLC_REMOTE_S_PORTD_IDX 16
#define MACRLC_ULSCH_MAX_SLOTS_INACTIVITY 17
#define MACRLC_PUSCHTARGETSNRX10_IDX 1
7
#define MACRLC_PUCCHTARGETSNRX10_IDX 1
8
#define MACRLC_PUCCHFAILURETHRES_IDX
19
#define MACRLC_PUSCHFAILURETHRES_IDX 2
0
#define MACRLC_PUSCHTARGETSNRX10_IDX 1
8
#define MACRLC_PUCCHTARGETSNRX10_IDX 1
9
#define MACRLC_PUCCHFAILURETHRES_IDX
20
#define MACRLC_PUSCHFAILURETHRES_IDX 2
1
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
#endif
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
5c70aa96
...
...
@@ -1985,10 +1985,13 @@ find_UE_id(module_id_t mod_idP,
{
int
UE_id
;
UE_info_t
*
UE_info
=
&
RC
.
mac
[
mod_idP
]
->
UE_info
;
if
(
!
UE_info
)
return
-
1
;
for
(
UE_id
=
0
;
UE_id
<
MAX_MOBILES_PER_ENB
;
UE_id
++
)
{
if
(
UE_info
->
active
[
UE_id
]
==
TRUE
)
{
if
(
UE_info
->
UE_template
[
UE_PCCID
(
mod_idP
,
UE_id
)][
UE_id
].
rnti
==
rntiP
)
{
int
CC_id
=
UE_PCCID
(
mod_idP
,
UE_id
);
if
(
CC_id
>=
0
&&
CC_id
<
NFAPI_CC_MAX
&&
UE_info
->
UE_template
[
CC_id
][
UE_id
].
rnti
==
rntiP
)
{
return
UE_id
;
}
}
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
5c70aa96
...
...
@@ -3253,9 +3253,76 @@ uint16_t get_ssb_start_symbol(const long band, NR_SubcarrierSpacing_t scs, int i
}
}
void
csi_period_offset
(
const
NR_CSI_ReportConfig_t
*
csirep
,
void
csi_period_offset
(
NR_CSI_ReportConfig_t
*
csirep
,
NR_NZP_CSI_RS_Resource_t
*
nzpcsi
,
int
*
period
,
int
*
offset
)
{
if
(
nzpcsi
!=
NULL
)
{
NR_CSI_ResourcePeriodicityAndOffset_PR
p_and_o
=
nzpcsi
->
periodicityAndOffset
->
present
;
switch
(
p_and_o
){
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots4
:
*
period
=
4
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots4
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots5
:
*
period
=
5
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots5
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots8
:
*
period
=
8
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots8
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots10
:
*
period
=
10
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots10
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots16
:
*
period
=
16
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots16
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots20
:
*
period
=
20
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots20
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots32
:
*
period
=
32
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots32
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots40
:
*
period
=
40
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots40
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots64
:
*
period
=
64
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots64
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots80
:
*
period
=
80
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots80
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots160
:
*
period
=
160
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots160
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots320
:
*
period
=
320
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots320
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots640
:
*
period
=
640
;
*
offset
=
nzpcsi
->
periodicityAndOffset
->
choice
.
slots640
;
break
;
default:
AssertFatal
(
1
==
0
,
"No periodicity and offset found in CSI resource"
);
}
}
if
(
csirep
!=
NULL
)
{
NR_CSI_ReportPeriodicityAndOffset_PR
p_and_o
=
csirep
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
;
switch
(
p_and_o
){
...
...
@@ -3302,8 +3369,10 @@ void csi_period_offset(const NR_CSI_ReportConfig_t *csirep,
default:
AssertFatal
(
1
==
0
,
"No periodicity and offset resource found in CSI report"
);
}
}
}
void
get_type0_PDCCH_CSS_config_parameters
(
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
,
frame_t
frameP
,
NR_MIB_t
*
mib
,
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
5c70aa96
...
...
@@ -152,7 +152,8 @@ int16_t get_N_RA_RB (int delta_f_RA_PRACH,int delta_f_PUSCH);
void
find_period_offest_SR
(
NR_SchedulingRequestResourceConfig_t
*
SchedulingReqRec
,
int
*
period
,
int
*
offset
);
void
csi_period_offset
(
const
NR_CSI_ReportConfig_t
*
csirep
,
void
csi_period_offset
(
NR_CSI_ReportConfig_t
*
csirep
,
NR_NZP_CSI_RS_Resource_t
*
nzpcsi
,
int
*
period
,
int
*
offset
);
void
reverse_n_bits
(
uint8_t
*
value
,
uint16_t
bitlen
);
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
5c70aa96
...
...
@@ -789,46 +789,35 @@ void nr_ra_succeeded(module_id_t mod_id, frame_t frame, int slot){
}
// Handlig failure of RA procedure @ MAC layer
// Handli
n
g failure of RA procedure @ MAC layer
// according to section 5 of 3GPP TS 38.321 version 16.2.1 Release 16
// todo:
// - complete handling of received contention-based RA preamble
// - 2-step RA implementation
void
nr_ra_failed
(
uint8_t
mod_id
,
uint8_t
CC_id
,
NR_PRACH_RESOURCES_t
*
prach_resources
,
frame_t
frame
,
int
slot
)
{
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
RA_config_t
*
ra
=
&
mac
->
ra
;
ra
->
first_Msg3
=
1
;
ra
->
ra_PreambleIndex
=
-
1
;
ra
->
ra_PreambleIndex
=
-
1
;
ra
->
generate_nr_prach
=
RA_FAILED
;
ra
->
ra_state
=
RA_UE_IDLE
;
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
++
;
if
(
prach_resources
->
RA_TYPE
==
RA_4STEP
){
if
(
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
==
ra
->
preambleTransMax
+
1
){
LOG_D
(
MAC
,
"In %s: [UE %d][%d.%d] Maximum number of RACH attempts (%d) reached, selecting backoff time...
\n
"
,
__FUNCTION__
,
mod_id
,
frame
,
slot
,
ra
->
preambleTransMax
);
if
(
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
==
ra
->
preambleTransMax
+
1
){
ra
->
RA_backoff_cnt
=
rand
()
%
(
prach_resources
->
RA_PREAMBLE_BACKOFF
+
1
);
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
=
1
;
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+=
2
;
// 2 dB increment
prach_resources
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
=
nr_get_Po_NOMINAL_PUSCH
(
prach_resources
,
mod_id
,
CC_id
);
}
else
{
LOG_D
(
MAC
,
"In %s: [UE %d][%d.%d] Maximum number of RACH attempts (%d) reached, selecting backoff time...
\n
"
,
__FUNCTION__
,
mod_id
,
frame
,
slot
,
ra
->
preambleTransMax
);
// Resetting RA window
nr_get_RA_window
(
mac
);
}
}
else
if
(
prach_resources
->
RA_TYPE
==
RA_2STEP
){
LOG_E
(
MAC
,
"Missing implementation of RA failure handling for 2-step RA...
\n
"
);
ra
->
RA_backoff_cnt
=
rand
()
%
(
prach_resources
->
RA_PREAMBLE_BACKOFF
+
1
);
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
=
1
;
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+=
2
;
// 2 dB increment
prach_resources
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
=
nr_get_Po_NOMINAL_PUSCH
(
prach_resources
,
mod_id
,
CC_id
);
}
else
{
// Resetting RA window
nr_get_RA_window
(
mac
);
}
}
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
5c70aa96
...
...
@@ -2162,11 +2162,11 @@ uint8_t nr_get_csi_measurements(NR_UE_MAC_INST_t *mac,
NR_CSI_MeasConfig_t
*
csi_measconfig
=
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
;
for
(
int
csi_report_id
=
0
;
csi_report_id
<
csi_measconfig
->
csi_ReportConfigToAddModList
->
list
.
count
;
csi_report_id
++
){
const
NR_CSI_ReportConfig_t
*
csirep
=
csi_measconfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
];
NR_CSI_ReportConfig_t
*
csirep
=
csi_measconfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
];
if
(
csirep
->
reportConfigType
.
present
==
NR_CSI_ReportConfig__reportConfigType_PR_periodic
){
int
period
,
offset
;
csi_period_offset
(
csirep
,
&
period
,
&
offset
);
csi_period_offset
(
csirep
,
NULL
,
&
period
,
&
offset
);
int
scs
;
NR_BWP_Uplink_t
*
ubwp
=
mac
->
ULbwp
[
0
];
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
5c70aa96
...
...
@@ -430,6 +430,9 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
// This schedule SR
nr_sr_reporting
(
module_idP
,
frame
,
slot
);
// Schedule CSI-RS transmission
nr_csirs_scheduling
(
module_idP
,
frame
,
slot
,
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
]);
// Schedule CSI measurement reporting: check in slot 0 for the whole frame
if
(
slot
==
0
)
nr_csi_meas_reporting
(
module_idP
,
frame
,
slot
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
5c70aa96
...
...
@@ -1539,8 +1539,10 @@ void nr_clear_ra_proc(module_id_t module_idP, int CC_id, frame_t frameP, NR_RA_t
ra
->
state
=
RA_IDLE
;
ra
->
timing_offset
=
0
;
ra
->
RRC_timer
=
20
;
ra
->
rnti
=
0
;
ra
->
msg3_round
=
0
;
if
(
ra
->
cfra
==
false
)
{
ra
->
rnti
=
0
;
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
5c70aa96
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
5c70aa96
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
5c70aa96
...
...
@@ -711,7 +711,7 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
current_rnti
);
if
(
(
frameP
==
ra
->
Msg3_frame
)
&&
(
slotP
==
ra
->
Msg3_slot
)
)
{
LOG_W
(
NR_MAC
,
"Random Access %i failed at state %i (TC_RNTI %04x RNTI %04x
\n
"
,
i
,
ra
->
state
,
ra
->
rnti
,
current_rnti
);
LOG_W
(
NR_MAC
,
"Random Access %i failed at state %i (TC_RNTI %04x RNTI %04x
)
\n
"
,
i
,
ra
->
state
,
ra
->
rnti
,
current_rnti
);
nr_mac_remove_ra_rnti
(
gnb_mod_idP
,
ra
->
rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
}
...
...
@@ -722,6 +722,13 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
int
UE_id
=-
1
;
UE_id
=
add_new_nr_ue
(
gnb_mod_idP
,
ra
->
rnti
,
ra
->
CellGroup
);
if
(
UE_id
<
0
)
{
LOG_W
(
NR_MAC
,
"Random Access %i discarded at state %i (TC_RNTI %04x RNTI %04x): max number of users achieved!
\n
"
,
i
,
ra
->
state
,
ra
->
rnti
,
current_rnti
);
nr_mac_remove_ra_rnti
(
gnb_mod_idP
,
ra
->
rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
return
;
}
UE_info
->
UE_beam_index
[
UE_id
]
=
ra
->
beam_id
;
// re-initialize ta update variables after RA procedure completion
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
5c70aa96
...
...
@@ -178,6 +178,11 @@ void nr_schedule_pucch(int Mod_idP,
frame_t
frameP
,
sub_frame_t
slotP
);
void
nr_csirs_scheduling
(
int
Mod_idP
,
frame_t
frame
,
sub_frame_t
slot
,
int
n_slots_frame
);
void
nr_csi_meas_reporting
(
int
Mod_idP
,
frame_t
frameP
,
sub_frame_t
slotP
);
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
5c70aa96
...
...
@@ -440,7 +440,8 @@ struct CRI_RI_LI_PMI_CQI {
uint8_t
li
;
uint8_t
pmi_x1
;
uint8_t
pmi_x2
;
uint8_t
cqi
;
uint8_t
wb_cqi_1tb
;
uint8_t
wb_cqi_2tb
;
};
typedef
struct
CRI_SSB_RSRP
{
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
5c70aa96
...
...
@@ -3070,7 +3070,10 @@ void nr_rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
ue_context_p
,
NGAP_CAUSE_RADIO_NETWORK
,
30
);
}
else
{
}
// Remove here the MAC and RRC context when RRC is not connected or gNB is not connected to CN5G
if
(
ue_context_p
->
ue_context
.
StatusRrc
<
NR_RRC_CONNECTED
||
ue_context_p
->
ue_context
.
gNB_ue_ngap_id
==
0
)
{
mac_remove_nr_ue
(
ctxt_pP
->
module_id
,
ctxt_pP
->
rnti
);
rrc_rlc_remove_ue
(
ctxt_pP
);
pdcp_remove_UE
(
ctxt_pP
);
...
...
@@ -3082,6 +3085,7 @@ void nr_rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
LOG_I
(
NR_RRC
,
"remove UE %x
\n
"
,
ctxt_pP
->
rnti
);
}
}
break
;
// break RB_FOREACH
}
}
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
5c70aa96
This diff is collapsed.
Click to expand it.
openair3/NAS/UE/nas_parser.c
View file @
5c70aa96
...
...
@@ -86,10 +86,7 @@ static parser_command_line_t nasParserCommandLine = {
"-trace"
,
"<mask>"
,
"Logging trace level
\t\t
"
,
NAS_PARSER_DEFAULT_TRACE_LEVEL
},
{
"-uhost"
,
"<uhost>"
,
"User app layer's hostname
\t
"
,
NAS_PARSER_DEFAULT_USER_HOSTNAME
},
{
"-uhost"
,
"<uhost>"
,
"User app layer's hostname
\t
"
,
"NULL"
},
{
"-nhost"
,
"<nhost>"
,
"Network layer's hostname
\t
"
,
NAS_PARSER_DEFAULT_NETWORK_HOSTNAME
...
...
openair3/NAS/UE/nas_parser.h
View file @
5c70aa96
...
...
@@ -55,7 +55,7 @@ Description NAS command line parser
#define NAS_PARSER_DEFAULT_UE_ID "1"
/* User application layer default hostname */
#define NAS_PARSER_DEFAULT_USER_HOSTNAME
"localhost"
#define NAS_PARSER_DEFAULT_USER_HOSTNAME
NULL
/* User application layer default port number */
#define NAS_PARSER_DEFAULT_USER_PORT_NUMBER "10000"
...
...
targets/COMMON/openairinterface5g_limits.h
View file @
5c70aa96
...
...
@@ -13,7 +13,8 @@
# define NUMBER_OF_NR_ULSCH_MAX 8
# define NUMBER_OF_NR_DLSCH_MAX 8
# define NUMBER_OF_NR_UCI_MAX 16
# define nUMBER_OF_NR_SRS_MAX 16
# define NUMBER_OF_NR_SRS_MAX 16
# define NUMBER_OF_NR_CSIRS_MAX 16
# define NUMBER_OF_SCH_STATS_MAX 16
# define NUMBER_OF_NR_SCH_STATS_MAX 16
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
View file @
5c70aa96
...
...
@@ -25,10 +25,6 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
#pusch_TargetSNRx10 = 200;
#pucch_TargetSNRx10 = 200;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -233,10 +229,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf
View file @
5c70aa96
...
...
@@ -24,8 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -226,10 +224,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
View file @
5c70aa96
...
...
@@ -24,8 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -210,10 +208,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
View file @
5c70aa96
...
...
@@ -24,8 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -224,10 +222,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
View file @
5c70aa96
...
...
@@ -263,7 +263,7 @@ RUs = (
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
118
;
eNB_instances
= [
0
];
clock_src
=
"
ex
ternal"
;
clock_src
=
"
in
ternal"
;
}
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
View file @
5c70aa96
...
...
@@ -24,8 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -224,10 +222,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
@@ -249,7 +249,7 @@ RUs = (
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
114
;
eNB_instances
= [
0
];
#clock_src = "ex
ternal";
clock_src
=
"in
ternal"
;
}
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf
View file @
5c70aa96
...
...
@@ -24,8 +24,6 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -240,10 +238,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
View file @
5c70aa96
...
...
@@ -226,10 +226,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
100
;
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
100
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
View file @
5c70aa96
...
...
@@ -226,10 +226,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
100
;
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
ulsch_max_slots_inactivity
=
100
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf
View file @
5c70aa96
...
...
@@ -255,10 +255,12 @@ gNBs =
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
L1s
= (
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment