Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
lizhongxiao
OpenXG UE
Commits
6c8428ea
Commit
6c8428ea
authored
Feb 09, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/ue-fixes' into integration_2021_wk06_b
parents
fda93f4d
2738dd67
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
69 additions
and
47 deletions
+69
-47
ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
...cripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
+1
-1
ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
+1
-1
executables/nr-gnb.c
executables/nr-gnb.c
+1
-4
executables/nr-ue.c
executables/nr-ue.c
+23
-10
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+1
-0
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+18
-15
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+1
-0
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
+2
-5
openair2/GNB_APP/L1_nr_paramdef.h
openair2/GNB_APP/L1_nr_paramdef.h
+3
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+4
-1
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+0
-5
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+1
-0
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+2
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+3
-1
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_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+2
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
+2
-2
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
+1
-1
No files found.
ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
View file @
6c8428ea
Active_gNBs
= (
"gNB-Eurecom-5GNRBox"
);
Active_gNBs
= (
"gNB-Eurecom-5GNRBox"
);
# Asn1_verbosity, choice in: none, info, annoying
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
Asn1_verbosity
=
"none"
;
Num_Threads_PUSCH
=
8
gNBs
=
gNBs
=
...
@@ -251,6 +250,7 @@ L1s = (
...
@@ -251,6 +250,7 @@ L1s = (
{
{
num_cc
=
1
;
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
tr_n_preference
=
"local_mac"
;
pusch_proc_threads
=
8
;
}
}
);
);
...
...
ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
View file @
6c8428ea
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
<testCase
id=
"090102"
>
<testCase
id=
"090102"
>
<class>
Initialize_OAI_UE
</class>
<class>
Initialize_OAI_UE
</class>
<desc>
Initialize NR UE USRP
</desc>
<desc>
Initialize NR UE USRP
</desc>
<Initialize_OAI_UE_args>
--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain
75
--rrc_config_path . --dlsch-parallel 4
</Initialize_OAI_UE_args>
<Initialize_OAI_UE_args>
--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain
50
--rrc_config_path . --dlsch-parallel 4
</Initialize_OAI_UE_args>
<air_interface>
NR
</air_interface>
<air_interface>
NR
</air_interface>
</testCase>
</testCase>
...
...
executables/nr-gnb.c
View file @
6c8428ea
...
@@ -873,10 +873,7 @@ void init_gNB_proc(int inst) {
...
@@ -873,10 +873,7 @@ void init_gNB_proc(int inst) {
gNB
->
threadPool
=
(
tpool_t
*
)
malloc
(
sizeof
(
tpool_t
));
gNB
->
threadPool
=
(
tpool_t
*
)
malloc
(
sizeof
(
tpool_t
));
gNB
->
respDecode
=
(
notifiedFIFO_t
*
)
malloc
(
sizeof
(
notifiedFIFO_t
));
gNB
->
respDecode
=
(
notifiedFIFO_t
*
)
malloc
(
sizeof
(
notifiedFIFO_t
));
int
numCPU
=
sysconf
(
_SC_NPROCESSORS_ONLN
);
int
numCPU
=
sysconf
(
_SC_NPROCESSORS_ONLN
);
uint32_t
num_threads_pusch
;
int
threadCnt
=
min
(
numCPU
,
gNB
->
pusch_proc_threads
);
paramdef_t
PUSCHThreads
[]
=
NUM_THREADS_DESC
;
config_get
(
PUSCHThreads
,
sizeof
(
PUSCHThreads
)
/
sizeof
(
paramdef_t
),
NULL
);
int
threadCnt
=
min
(
numCPU
,
num_threads_pusch
);
char
ul_pool
[
80
];
char
ul_pool
[
80
];
sprintf
(
ul_pool
,
"-1"
);
sprintf
(
ul_pool
,
"-1"
);
int
s_offset
=
0
;
int
s_offset
=
0
;
...
...
executables/nr-ue.c
View file @
6c8428ea
...
@@ -642,8 +642,7 @@ void *UE_thread(void *arg) {
...
@@ -642,8 +642,7 @@ void *UE_thread(void *arg) {
UE
->
rx_offset_diff
=
computeSamplesShift
(
UE
);
UE
->
rx_offset_diff
=
computeSamplesShift
(
UE
);
readBlockSize
=
get_readBlockSize
(
slot_nr
,
&
UE
->
frame_parms
)
-
readBlockSize
=
get_readBlockSize
(
slot_nr
,
&
UE
->
frame_parms
)
-
UE
->
rx_offset_diff
;
UE
->
rx_offset_diff
;
writeBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
((
slot_nr
+
DURATION_RX_TO_TX
-
RX_NB_TH
)
%
nb_slot_frame
,
&
UE
->
frame_parms
)
-
writeBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
((
slot_nr
+
DURATION_RX_TO_TX
-
RX_NB_TH
)
%
nb_slot_frame
,
&
UE
->
frame_parms
)
-
UE
->
rx_offset_diff
;
UE
->
rx_offset_diff
;
}
}
AssertFatal
(
readBlockSize
==
AssertFatal
(
readBlockSize
==
...
@@ -702,13 +701,27 @@ void *UE_thread(void *arg) {
...
@@ -702,13 +701,27 @@ void *UE_thread(void *arg) {
timing_advance
=
UE
->
timing_advance
;
timing_advance
=
UE
->
timing_advance
;
}
}
int
flags
=
0
;
int
slot_tx_usrp
=
slot_nr
+
DURATION_RX_TO_TX
-
RX_NB_TH
;
uint8_t
tdd_period
=
mac
->
phy_config
.
config_req
.
tdd_table
.
tdd_period_in_slots
;
uint8_t
num_UL_slots
=
mac
->
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
nrofUplinkSlots
+
(
mac
->
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
nrofUplinkSymbols
!=
0
);
uint8_t
first_tx_slot
=
tdd_period
-
num_UL_slots
;
if
(
slot_tx_usrp
%
tdd_period
==
first_tx_slot
)
flags
=
2
;
else
if
(
slot_tx_usrp
%
tdd_period
==
first_tx_slot
+
num_UL_slots
-
1
)
flags
=
3
;
else
if
(
slot_tx_usrp
%
tdd_period
>
first_tx_slot
)
flags
=
1
;
if
(
flags
||
IS_SOFTMODEM_RFSIM
)
AssertFatal
(
writeBlockSize
==
AssertFatal
(
writeBlockSize
==
UE
->
rfdevice
.
trx_write_func
(
&
UE
->
rfdevice
,
UE
->
rfdevice
.
trx_write_func
(
&
UE
->
rfdevice
,
writeTimestamp
,
writeTimestamp
,
txp
,
txp
,
writeBlockSize
,
writeBlockSize
,
UE
->
frame_parms
.
nb_antennas_tx
,
UE
->
frame_parms
.
nb_antennas_tx
,
1
),
""
);
flags
),
""
);
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_tx
;
i
++
)
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_tx
;
i
++
)
memset
(
txp
[
i
],
0
,
writeBlockSize
);
memset
(
txp
[
i
],
0
,
writeBlockSize
);
...
@@ -717,7 +730,7 @@ void *UE_thread(void *arg) {
...
@@ -717,7 +730,7 @@ void *UE_thread(void *arg) {
msgToPush
->
key
=
slot_nr
;
msgToPush
->
key
=
slot_nr
;
pushTpool
(
&
(
get_nrUE_params
()
->
Tpool
),
msgToPush
);
pushTpool
(
&
(
get_nrUE_params
()
->
Tpool
),
msgToPush
);
if
(
IS_SOFTMODEM_RFSIM
||
IS_SOFTMODEM_NOS1
)
{
//getenv("RFSIMULATOR")
if
(
IS_SOFTMODEM_RFSIM
)
{
//getenv("RFSIMULATOR")
// FixMe: Wait previous thread is done, because race conditions seems too bad
// FixMe: Wait previous thread is done, because race conditions seems too bad
// in case of actual RF board, the overlap between threads mitigate the issue
// in case of actual RF board, the overlap between threads mitigate the issue
// We must receive one message, that proves the slot processing is done
// We must receive one message, that proves the slot processing is done
...
...
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
6c8428ea
...
@@ -1019,6 +1019,7 @@ typedef struct
...
@@ -1019,6 +1019,7 @@ typedef struct
typedef
struct
typedef
struct
{
{
uint8_t
tdd_period
;
//DL UL Transmission Periodicity. Value:0: ms0p5 1: ms0p625 2: ms1 3: ms1p25 4: ms2 5: ms2p5 6: ms5 7: ms10 8: ms3 9: ms4
uint8_t
tdd_period
;
//DL UL Transmission Periodicity. Value:0: ms0p5 1: ms0p625 2: ms1 3: ms1p25 4: ms2 5: ms2p5 6: ms5 7: ms10 8: ms3 9: ms4
uint8_t
tdd_period_in_slots
;
fapi_nr_max_tdd_periodicity_t
*
max_tdd_periodicity_list
;
fapi_nr_max_tdd_periodicity_t
*
max_tdd_periodicity_list
;
}
fapi_nr_tdd_table_t
;
}
fapi_nr_tdd_table_t
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
6c8428ea
...
@@ -203,7 +203,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
...
@@ -203,7 +203,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
return
(
dlsch
);
return
(
dlsch
);
}
}
LOG_
I
(
PHY
,
"new_ue_dlsch with size %zu: exit_flag = %u
\n
"
,
sizeof
(
NR_DL_UE_HARQ_t
),
exit_flag
);
LOG_
D
(
PHY
,
"new_ue_dlsch with size %zu: exit_flag = %u
\n
"
,
sizeof
(
NR_DL_UE_HARQ_t
),
exit_flag
);
free_nr_ue_dlsch
(
&
dlsch
,
N_RB_DL
);
free_nr_ue_dlsch
(
&
dlsch
,
N_RB_DL
);
return
(
NULL
);
return
(
NULL
);
...
@@ -577,7 +577,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -577,7 +577,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
harq_process
->
F
,
crc_type
))
{
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
harq_process
->
F
,
crc_type
))
{
LOG_
I
(
PHY
,
"Segment %u CRC OK
\n\033
[0m"
,
r
);
LOG_
D
(
PHY
,
"Segment %u CRC OK
\n\033
[0m"
,
r
);
if
(
r
==
0
)
{
if
(
r
==
0
)
{
for
(
int
i
=
0
;
i
<
10
;
i
++
)
LOG_D
(
PHY
,
"byte %d : %x
\n
"
,
i
,((
uint8_t
*
)
llrProcBuf
)[
i
]);
for
(
int
i
=
0
;
i
<
10
;
i
++
)
LOG_D
(
PHY
,
"byte %d : %x
\n
"
,
i
,((
uint8_t
*
)
llrProcBuf
)[
i
]);
}
}
...
@@ -617,13 +617,13 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -617,13 +617,13 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
LOG_
I
(
PHY
,
"AbsSubframe %d.%d CRC failed, segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
LOG_
D
(
PHY
,
"AbsSubframe %d.%d CRC failed, segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
err_flag
=
1
;
err_flag
=
1
;
}
}
}
}
if
(
err_flag
==
1
)
{
if
(
err_flag
==
1
)
{
LOG_
I
(
PHY
,
"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d) Kr %d r %d harq_process->round %d
\n
"
,
LOG_
D
(
PHY
,
"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d) Kr %d r %d harq_process->round %d
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
,
nr_slot_rx
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
harq_process
->
TBS
,
harq_process
->
mcs
,
Kr
,
r
,
harq_process
->
round
);
phy_vars_ue
->
Mod_id
,
frame
,
nr_slot_rx
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
harq_process
->
TBS
,
harq_process
->
mcs
,
Kr
,
r
,
harq_process
->
round
);
harq_process
->
harq_ack
.
ack
=
0
;
harq_process
->
harq_ack
.
ack
=
0
;
...
@@ -639,7 +639,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -639,7 +639,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
if
(
is_crnti
)
if
(
is_crnti
)
{
{
LOG_
I
(
PHY
,
"[UE %d] DLSCH: Setting NACK for nr_slot_rx %d (pid %d, pid status %d, round %d/Max %d, TBS %d)
\n
"
,
LOG_
D
(
PHY
,
"[UE %d] DLSCH: Setting NACK for nr_slot_rx %d (pid %d, pid status %d, round %d/Max %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
dlsch
->
Mdlharq
,
harq_process
->
TBS
);
phy_vars_ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
dlsch
->
Mdlharq
,
harq_process
->
TBS
);
}
}
...
@@ -813,6 +813,9 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -813,6 +813,9 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
nb_rb
=
harq_process
->
nb_rb
;
nb_rb
=
harq_process
->
nb_rb
;
harq_process
->
trials
[
harq_process
->
round
]
++
;
harq_process
->
trials
[
harq_process
->
round
]
++
;
// HARQ stats
phy_vars_ue
->
dl_stats
[
harq_process
->
round
]
++
;
uint16_t
nb_rb_oh
=
0
;
// it was not computed at UE side even before and set to 0 in nr_compute_tbs
uint16_t
nb_rb_oh
=
0
;
// it was not computed at UE side even before and set to 0 in nr_compute_tbs
harq_process
->
TBS
=
nr_compute_tbs
(
harq_process
->
Qm
,
harq_process
->
R
,
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
*
length_dmrs
,
nb_rb_oh
,
0
,
harq_process
->
Nl
);
harq_process
->
TBS
=
nr_compute_tbs
(
harq_process
->
Qm
,
harq_process
->
R
,
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
*
length_dmrs
,
nb_rb_oh
,
0
,
harq_process
->
Nl
);
...
@@ -826,7 +829,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -826,7 +829,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
G
=
harq_process
->
G
;
G
=
harq_process
->
G
;
LOG_
I
(
PHY
,
"DLSCH Decoding main, harq_pid %d TBS %d G %d, nb_re_dmrs %d, length_dmrs %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
,
nb_rb
);
LOG_
D
(
PHY
,
"DLSCH Decoding main, harq_pid %d TBS %d G %d, nb_re_dmrs %d, length_dmrs %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
,
nb_rb
);
proc
->
decoder_main_available
=
1
;
proc
->
decoder_main_available
=
1
;
proc
->
decoder_thread_available
=
0
;
proc
->
decoder_thread_available
=
0
;
...
@@ -905,7 +908,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -905,7 +908,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
return
((
1
+
dlsch
->
max_ldpc_iterations
));
return
((
1
+
dlsch
->
max_ldpc_iterations
));
}
}
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
LOG_
I
(
PHY
,
"Segmentation: C %d, K %d
\n
"
,
harq_process
->
C
,
harq_process
->
K
);
LOG_
D
(
PHY
,
"Segmentation: C %d, K %d
\n
"
,
harq_process
->
C
,
harq_process
->
K
);
notifiedFIFO_elt_t
*
res_dl
;
notifiedFIFO_elt_t
*
res_dl
;
...
@@ -1079,7 +1082,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1079,7 +1082,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
#if UE_TIMING_TRACE
#if UE_TIMING_TRACE
start_meas
(
dlsch_turbo_decoding_stats
);
start_meas
(
dlsch_turbo_decoding_stats
);
#endif
#endif
LOG_
I
(
PHY
,
"mthread AbsSubframe %d.%d Start LDPC segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
LOG_
D
(
PHY
,
"mthread AbsSubframe %d.%d Start LDPC segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
/*for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
/*for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
inv_d[cnt] = (1)*harq_process->d[r][cnt];
inv_d[cnt] = (1)*harq_process->d[r][cnt];
...
@@ -1119,7 +1122,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1119,7 +1122,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
ret
=
2
;
ret
=
2
;
}
}
else
{
else
{
LOG_
I
(
PHY
,
"CRC NOK
\n
"
);
LOG_
D
(
PHY
,
"CRC NOK
\n
"
);
ret
=
1
+
dlsch
->
max_ldpc_iterations
;
ret
=
1
+
dlsch
->
max_ldpc_iterations
;
}
}
...
@@ -1160,7 +1163,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1160,7 +1163,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
LOG_
I
(
PHY
,
"AbsSubframe %d.%d CRC failed, segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
LOG_
D
(
PHY
,
"AbsSubframe %d.%d CRC failed, segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
err_flag
=
1
;
err_flag
=
1
;
}
}
//} //loop r
//} //loop r
...
@@ -1181,7 +1184,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1181,7 +1184,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
}
}
if
(
is_crnti
)
if
(
is_crnti
)
{
{
LOG_
I
(
PHY
,
"[UE %d] DLSCH: Setting NACK for nr_slot_rx %d (pid %d, pid status %d, round %d/Max %d, TBS %d)
\n
"
,
LOG_
D
(
PHY
,
"[UE %d] DLSCH: Setting NACK for nr_slot_rx %d (pid %d, pid status %d, round %d/Max %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
dlsch
->
Mlimit
,
harq_process
->
TBS
);
phy_vars_ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
dlsch
->
Mlimit
,
harq_process
->
TBS
);
}
}
...
@@ -1332,7 +1335,7 @@ void nr_dlsch_decoding_process(void *arg)
...
@@ -1332,7 +1335,7 @@ void nr_dlsch_decoding_process(void *arg)
p_nrLDPC_procBuf
=
harq_process
->
p_nrLDPC_procBuf
[
r
];
p_nrLDPC_procBuf
=
harq_process
->
p_nrLDPC_procBuf
[
r
];
nb_symb_sch
=
harq_process
->
nb_symbols
;
nb_symb_sch
=
harq_process
->
nb_symbols
;
LOG_
I
(
PHY
,
"dlsch decoding process frame %d slot %d segment %d r %u nb symb %d
\n
"
,
frame
,
proc
->
nr_slot_rx
,
proc
->
num_seg
,
r
,
harq_process
->
nb_symbols
);
LOG_
D
(
PHY
,
"dlsch decoding process frame %d slot %d segment %d r %u nb symb %d
\n
"
,
frame
,
proc
->
nr_slot_rx
,
proc
->
num_seg
,
r
,
harq_process
->
nb_symbols
);
nb_rb
=
harq_process
->
nb_rb
;
nb_rb
=
harq_process
->
nb_rb
;
...
@@ -1351,7 +1354,7 @@ void nr_dlsch_decoding_process(void *arg)
...
@@ -1351,7 +1354,7 @@ void nr_dlsch_decoding_process(void *arg)
harq_process
->
G
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
Qm
,
harq_process
->
Nl
);
harq_process
->
G
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
Qm
,
harq_process
->
Nl
);
G
=
harq_process
->
G
;
G
=
harq_process
->
G
;
LOG_
I
(
PHY
,
"DLSCH Decoding process, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
,
nb_rb
);
LOG_
D
(
PHY
,
"DLSCH Decoding process, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
,
nb_rb
);
if
((
harq_process
->
R
)
<
1024
)
if
((
harq_process
->
R
)
<
1024
)
Coderate
=
(
float
)
(
harq_process
->
R
)
/
(
float
)
1024
;
Coderate
=
(
float
)
(
harq_process
->
R
)
/
(
float
)
1024
;
...
@@ -1571,12 +1574,12 @@ void nr_dlsch_decoding_process(void *arg)
...
@@ -1571,12 +1574,12 @@ void nr_dlsch_decoding_process(void *arg)
ret
=
2
;
ret
=
2
;
}
}
else
{
else
{
LOG_
I
(
PHY
,
"Segment %u CRC NOK
\n
"
,
r
);
LOG_
D
(
PHY
,
"Segment %u CRC NOK
\n
"
,
r
);
ret
=
1
+
dlsch
->
max_ldpc_iterations
;
ret
=
1
+
dlsch
->
max_ldpc_iterations
;
}
}
if
(
no_iteration_ldpc
>
10
)
if
(
no_iteration_ldpc
>
10
)
LOG_
I
(
PHY
,
"Error number of iteration LPDC %d
\n
"
,
no_iteration_ldpc
);
LOG_
D
(
PHY
,
"Error number of iteration LPDC %d
\n
"
,
no_iteration_ldpc
);
for
(
int
m
=
0
;
m
<
Kr
>>
3
;
m
++
)
for
(
int
m
=
0
;
m
<
Kr
>>
3
;
m
++
)
...
...
openair1/PHY/defs_gNB.h
View file @
6c8428ea
...
@@ -832,6 +832,7 @@ typedef struct PHY_VARS_gNB_s {
...
@@ -832,6 +832,7 @@ typedef struct PHY_VARS_gNB_s {
notifiedFIFO_t
*
respDecode
;
notifiedFIFO_t
*
respDecode
;
tpool_t
*
threadPool
;
tpool_t
*
threadPool
;
int
nbDecode
;
int
nbDecode
;
uint8_t
pusch_proc_threads
;
}
PHY_VARS_gNB
;
}
PHY_VARS_gNB
;
...
...
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
View file @
6c8428ea
...
@@ -780,19 +780,15 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
...
@@ -780,19 +780,15 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
if
(
harq_status
->
ack
==
DL_ACKNACK_NO_SET
)
{
if
(
harq_status
->
ack
==
DL_ACKNACK_NO_SET
)
{
LOG_E
(
PHY
,
"PUCCH Downlink acknowledgment has not been set : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_E
(
PHY
,
"PUCCH Downlink acknowledgment has not been set : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
0
);
}
}
else
if
(
harq_status
->
vDAI_DL
==
DL_DAI_NO_SET
)
{
else
if
(
harq_status
->
vDAI_DL
==
DL_DAI_NO_SET
)
{
LOG_E
(
PHY
,
"PUCCH Downlink DAI has not been set : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_E
(
PHY
,
"PUCCH Downlink DAI has not been set : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
0
);
}
}
else
if
(
harq_status
->
vDAI_DL
>
NR_DL_MAX_DAI
)
{
else
if
(
harq_status
->
vDAI_DL
>
NR_DL_MAX_DAI
)
{
LOG_E
(
PHY
,
"PUCCH Downlink DAI has an invalid value : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_E
(
PHY
,
"PUCCH Downlink DAI has an invalid value : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
0
);
}
}
else
if
(
harq_status
->
send_harq_status
==
0
)
{
else
if
(
harq_status
->
send_harq_status
==
0
)
{
LOG_E
(
PHY
,
"PUCCH Downlink ack can not be transmitted : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_D
(
PHY
,
"PUCCH Downlink ack can not be transmitted : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
0
);
}
}
else
{
else
{
...
@@ -809,6 +805,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
...
@@ -809,6 +805,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
ack_data
[
code_word
][
dai_current
-
1
]
=
harq_status
->
ack
;
ack_data
[
code_word
][
dai_current
-
1
]
=
harq_status
->
ack
;
dai
[
code_word
][
dai_current
-
1
]
=
dai_current
;
dai
[
code_word
][
dai_current
-
1
]
=
dai_current
;
harq_status
->
slot_for_feedback_ack
=
NR_MAX_SLOTS_PER_FRAME
;
harq_status
->
slot_for_feedback_ack
=
NR_MAX_SLOTS_PER_FRAME
;
harq_status
->
send_harq_status
=
0
;
}
}
if
(
do_reset
==
TRUE
)
{
if
(
do_reset
==
TRUE
)
{
init_downlink_harq_status
(
ue
->
dlsch
[
thread_idx
][
gNB_id
][
code_word
]
->
harq_processes
[
dl_harq_pid
]);
init_downlink_harq_status
(
ue
->
dlsch
[
thread_idx
][
gNB_id
][
code_word
]
->
harq_processes
[
dl_harq_pid
]);
...
...
openair2/GNB_APP/L1_nr_paramdef.h
View file @
6c8428ea
...
@@ -46,6 +46,7 @@
...
@@ -46,6 +46,7 @@
#define CONFIG_STRING_L1_LOCAL_N_PORTD "local_n_portd"
#define CONFIG_STRING_L1_LOCAL_N_PORTD "local_n_portd"
#define CONFIG_STRING_L1_REMOTE_N_PORTD "remote_n_portd"
#define CONFIG_STRING_L1_REMOTE_N_PORTD "remote_n_portd"
#define CONFIG_STRING_L1_TRANSPORT_N_PREFERENCE "tr_n_preference"
#define CONFIG_STRING_L1_TRANSPORT_N_PREFERENCE "tr_n_preference"
#define CONFIG_STRING_L1_PUSCH_PROC_THREADS "pusch_proc_threads"
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/* L1 configuration parameters */
/* L1 configuration parameters */
...
@@ -61,6 +62,7 @@
...
@@ -61,6 +62,7 @@
{CONFIG_STRING_L1_REMOTE_N_PORTC, NULL, 0, uptr:NULL, defintval:50030, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_REMOTE_N_PORTC, NULL, 0, uptr:NULL, defintval:50030, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_LOCAL_N_PORTD, NULL, 0, uptr:NULL, defintval:50031, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_LOCAL_N_PORTD, NULL, 0, uptr:NULL, defintval:50031, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_REMOTE_N_PORTD, NULL, 0, uptr:NULL, defintval:50031, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_REMOTE_N_PORTD, NULL, 0, uptr:NULL, defintval:50031, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PUSCH_PROC_THREADS, NULL, 0, uptr:NULL, defintval:1, TYPE_UINT, 0} \
}
}
#define L1_CC_IDX 0
#define L1_CC_IDX 0
#define L1_TRANSPORT_N_PREFERENCE_IDX 1
#define L1_TRANSPORT_N_PREFERENCE_IDX 1
...
@@ -71,6 +73,7 @@
...
@@ -71,6 +73,7 @@
#define L1_REMOTE_N_PORTC_IDX 6
#define L1_REMOTE_N_PORTC_IDX 6
#define L1_LOCAL_N_PORTD_IDX 7
#define L1_LOCAL_N_PORTD_IDX 7
#define L1_REMOTE_N_PORTD_IDX 8
#define L1_REMOTE_N_PORTD_IDX 8
#define L1_PUSCH_PROC_THREADS 9
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
#endif
#endif
openair2/GNB_APP/gnb_config.c
View file @
6c8428ea
...
@@ -51,7 +51,8 @@
...
@@ -51,7 +51,8 @@
#include "nfapi_vnf.h"
#include "nfapi_vnf.h"
#include "nfapi_pnf.h"
#include "nfapi_pnf.h"
#include "L1_paramdef.h"
//#include "L1_paramdef.h"
#include "L1_nr_paramdef.h"
#include "MACRLC_paramdef.h"
#include "MACRLC_paramdef.h"
#include "common/config/config_userapi.h"
#include "common/config/config_userapi.h"
//#include "RRC_config_tools.h"
//#include "RRC_config_tools.h"
...
@@ -399,6 +400,8 @@ void RCconfig_NR_L1(void) {
...
@@ -399,6 +400,8 @@ void RCconfig_NR_L1(void) {
RC
.
gNB
[
j
]
->
Mod_id
=
j
;
RC
.
gNB
[
j
]
->
Mod_id
=
j
;
}
}
RC
.
gNB
[
j
]
->
pusch_proc_threads
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PUSCH_PROC_THREADS
].
uptr
);
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"local_mac"
)
==
0
)
{
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"local_mac"
)
==
0
)
{
//sf_ahead = 2; // Need 4 subframe gap between RX and TX
//sf_ahead = 2; // Need 4 subframe gap between RX and TX
}
else
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"nfapi"
)
==
0
)
{
}
else
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"nfapi"
)
==
0
)
{
...
...
openair2/GNB_APP/gnb_paramdef.h
View file @
6c8428ea
...
@@ -82,7 +82,6 @@ typedef enum {
...
@@ -82,7 +82,6 @@ typedef enum {
/* global parameters, not under a specific section */
/* global parameters, not under a specific section */
#define GNB_CONFIG_STRING_ASN1_VERBOSITY "Asn1_verbosity"
#define GNB_CONFIG_STRING_ASN1_VERBOSITY "Asn1_verbosity"
#define GNB_CONFIG_STRING_ACTIVE_GNBS "Active_gNBs"
#define GNB_CONFIG_STRING_ACTIVE_GNBS "Active_gNBs"
#define GNB_CONFIG_PUSCH_THREADS "Num_Threads_PUSCH"
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* global configuration parameters */
/* global configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
@@ -92,10 +91,6 @@ typedef enum {
...
@@ -92,10 +91,6 @@ typedef enum {
{GNB_CONFIG_STRING_ACTIVE_GNBS, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRINGLIST, 0} \
{GNB_CONFIG_STRING_ACTIVE_GNBS, NULL, 0, uptr:NULL, defstrval:NULL, TYPE_STRINGLIST, 0} \
}
}
#define NUM_THREADS_DESC { \
{GNB_CONFIG_PUSCH_THREADS, NULL, 0, uptr:&num_threads_pusch, defuintval:1, TYPE_UINT, 0} \
}
#define GNB_ASN1_VERBOSITY_IDX 0
#define GNB_ASN1_VERBOSITY_IDX 0
#define GNB_ACTIVE_GNBS_IDX 1
#define GNB_ACTIVE_GNBS_IDX 1
...
...
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
6c8428ea
...
@@ -82,6 +82,7 @@ int set_tdd_config_nr_ue(fapi_nr_config_request_t *cfg,
...
@@ -82,6 +82,7 @@ int set_tdd_config_nr_ue(fapi_nr_config_request_t *cfg,
}
}
int
nb_slots_per_period
=
((
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
)
/
nb_periods_per_frame
;
int
nb_slots_per_period
=
((
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
)
/
nb_periods_per_frame
;
cfg
->
tdd_table
.
tdd_period_in_slots
=
nb_slots_per_period
;
if
(
(
nrofDownlinkSymbols
+
nrofUplinkSymbols
)
==
0
)
if
(
(
nrofDownlinkSymbols
+
nrofUplinkSymbols
)
==
0
)
AssertFatal
(
nb_slots_per_period
==
(
nrofDownlinkSlots
+
nrofUplinkSlots
),
AssertFatal
(
nb_slots_per_period
==
(
nrofDownlinkSlots
+
nrofUplinkSlots
),
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
6c8428ea
...
@@ -350,6 +350,8 @@ typedef struct {
...
@@ -350,6 +350,8 @@ typedef struct {
RA_config_t
ra
;
RA_config_t
ra
;
/// SSB index from MIB decoding
/// SSB index from MIB decoding
uint8_t
mib_ssb
;
uint8_t
mib_ssb
;
/// Last NDI of UL HARQ processes
uint8_t
UL_ndi
[
NR_MAX_HARQ_PROCESSES
];
//// FAPI-like interface message
//// FAPI-like interface message
fapi_nr_ul_config_request_t
*
ul_config_request
;
fapi_nr_ul_config_request_t
*
ul_config_request
;
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
6c8428ea
...
@@ -889,7 +889,8 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
...
@@ -889,7 +889,8 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
uint16_t
TBS_bytes
=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
tb_size
;
uint16_t
TBS_bytes
=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
tb_size
;
if
(
IS_SOFTMODEM_NOS1
){
// Push data from MAC to PHY only when NDI toggles
if
(
IS_SOFTMODEM_NOS1
&&
(
mac
->
UL_ndi
[
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
]
!=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
)){
// Getting IP traffic to be transmitted
// Getting IP traffic to be transmitted
data_existing
=
nr_ue_get_sdu
(
mod_id
,
data_existing
=
nr_ue_get_sdu
(
mod_id
,
cc_id
,
cc_id
,
...
@@ -901,6 +902,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
...
@@ -901,6 +902,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
&
access_mode
);
&
access_mode
);
}
}
mac
->
UL_ndi
[
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
]
=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
;
//Random traffic to be transmitted if there is no IP traffic available for this Tx opportunity
//Random traffic to be transmitted if there is no IP traffic available for this Tx opportunity
if
(
!
IS_SOFTMODEM_NOS1
||
!
data_existing
)
{
if
(
!
IS_SOFTMODEM_NOS1
||
!
data_existing
)
{
//Use zeros for the header bytes in noS1 mode, in order to make sure that the LCID is not valid
//Use zeros for the header bytes in noS1 mode, in order to make sure that the LCID is not valid
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
6c8428ea
...
@@ -372,6 +372,9 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
...
@@ -372,6 +372,9 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
BIT
(
11
)
|
BIT
(
12
)
|
BIT
(
13
)
|
BIT
(
14
)
|
BIT
(
15
)
|
BIT
(
16
);
|
BIT
(
11
)
|
BIT
(
12
)
|
BIT
(
13
)
|
BIT
(
14
)
|
BIT
(
15
)
|
BIT
(
16
);
const
uint64_t
ulsch_in_slot_bitmap
=
BIT
(
8
)
|
BIT
(
18
);
const
uint64_t
ulsch_in_slot_bitmap
=
BIT
(
8
)
|
BIT
(
18
);
if
(
get_softmodem_params
()
->
phy_test
)
// for testing with OAI-UE
dlsch_in_slot_bitmap
=
(
1
<<
1
);
memset
(
RC
.
nrmac
[
module_idP
]
->
cce_list
[
bwp_id
][
0
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
// coreset0
memset
(
RC
.
nrmac
[
module_idP
]
->
cce_list
[
bwp_id
][
0
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
// coreset0
memset
(
RC
.
nrmac
[
module_idP
]
->
cce_list
[
bwp_id
][
1
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
// coresetid 1
memset
(
RC
.
nrmac
[
module_idP
]
->
cce_list
[
bwp_id
][
1
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
// coresetid 1
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
module_idP
]
->
UE_info
;
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
module_idP
]
->
UE_info
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
6c8428ea
...
@@ -957,7 +957,8 @@ void nr_schedule_ue_spec(module_id_t module_id,
...
@@ -957,7 +957,8 @@ void nr_schedule_ue_spec(module_id_t module_id,
retInfo
->
mcs
,
retInfo
->
mcs
,
retInfo
->
numDmrsCdmGrpsNoData
);
retInfo
->
numDmrsCdmGrpsNoData
);
/* we do not have to do anything, since we do not require to get data
/* we do not have to do anything, since we do not require to get data
* from RLC or encode MAC CEs. The TX_req structure is filled below */
* from RLC or encode MAC CEs. The TX_req structure is filled below
* or copy data to FAPI structures */
LOG_D
(
MAC
,
LOG_D
(
MAC
,
"%d.%2d DL retransmission UE %d/RNTI %04x HARQ PID %d round %d NDI %d
\n
"
,
"%d.%2d DL retransmission UE %d/RNTI %04x HARQ PID %d round %d NDI %d
\n
"
,
frame
,
frame
,
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
View file @
6c8428ea
Active_gNBs
= (
"gNB-Eurecom-5GNRBox"
);
Active_gNBs
= (
"gNB-Eurecom-5GNRBox"
);
# Asn1_verbosity, choice in: none, info, annoying
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
Asn1_verbosity
=
"none"
;
Num_Threads_PUSCH
=
8
;
gNBs
=
gNBs
=
(
(
...
@@ -234,6 +233,7 @@ L1s = (
...
@@ -234,6 +233,7 @@ L1s = (
{
{
num_cc
=
1
;
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
tr_n_preference
=
"local_mac"
;
pusch_proc_threads
=
8
;
}
}
);
);
...
@@ -246,7 +246,7 @@ RUs = (
...
@@ -246,7 +246,7 @@ RUs = (
att_rx
=
0
;
att_rx
=
0
;
bands
= [
7
];
bands
= [
7
];
max_pdschReferenceSignalPower
= -
27
;
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
75
;
max_rxgain
=
50
;
eNB_instances
= [
0
];
eNB_instances
= [
0
];
##beamforming 1x2 matrix: 1 layer x 2 antennas
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights
= [
0
x00007fff
,
0
x0000
];
bf_weights
= [
0
x00007fff
,
0
x0000
];
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
View file @
6c8428ea
Active_gNBs
= (
"gNB-Eurecom-5GNRBox"
);
Active_gNBs
= (
"gNB-Eurecom-5GNRBox"
);
# Asn1_verbosity, choice in: none, info, annoying
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
Asn1_verbosity
=
"none"
;
Num_Threads_PUSCH
=
8
;
gNBs
=
gNBs
=
(
(
...
@@ -250,6 +249,7 @@ L1s = (
...
@@ -250,6 +249,7 @@ L1s = (
{
{
num_cc
=
1
;
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
tr_n_preference
=
"local_mac"
;
pusch_proc_threads
=
8
;
}
}
);
);
...
...
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