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
spbro
OpenXG-RAN
Commits
51483a32
Commit
51483a32
authored
Aug 21, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add option for limited buffer rate-matching for UL
parent
61312ca6
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
95 additions
and
27 deletions
+95
-27
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/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+3
-4
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
+1
-1
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+13
-5
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+23
-8
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+1
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+4
-4
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+26
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+4
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+15
-1
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-0
No files found.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
51483a32
...
...
@@ -333,6 +333,7 @@ typedef struct
//Resource Allocation in time domain
uint8_t
start_symbol_index
;
uint8_t
nr_of_symbols
;
uint32_t
tbslbrm
;
//Optional Data only included if indicated in pduBitmap
nfapi_nr_ue_pusch_data_t
pusch_data
;
nfapi_nr_ue_pusch_uci_t
pusch_uci
;
...
...
openair1/PHY/CODING/nr_rate_matching.c
View file @
51483a32
...
...
@@ -497,10 +497,10 @@ int nr_rate_matching_ldpc_rx(uint32_t Tbslbrm,
N
=
(
BG
==
1
)
?
(
66
*
Z
)
:
(
50
*
Z
);
if
(
Tbslbrm
==
0
)
Ncb
=
N
;
Ncb
=
N
;
else
{
Nref
=
(
3
*
Tbslbrm
/
(
2
*
C
));
//R_LBRM = 2/3
Ncb
=
min
(
N
,
Nref
);
Nref
=
(
3
*
Tbslbrm
/
(
2
*
C
));
//R_LBRM = 2/3
Ncb
=
min
(
N
,
Nref
);
}
ind
=
(
index_k0
[
BG
-
1
][
rvidx
]
*
Ncb
/
N
)
*
Z
;
...
...
@@ -564,7 +564,6 @@ int nr_rate_matching_ldpc_rx(uint32_t Tbslbrm,
}
}
return
0
;
}
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
View file @
51483a32
...
...
@@ -381,7 +381,7 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RATE_MATCHING_LDPC
,
VCD_FUNCTION_IN
);
start_meas
(
&
ue
->
ulsch_rate_matching_stats
);
if
(
nr_rate_matching_ldpc
(
0
,
if
(
nr_rate_matching_ldpc
(
harq_process
->
pusch_pdu
.
tbslbrm
,
harq_process
->
BG
,
*
pz
,
harq_process
->
d
[
r
],
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
51483a32
...
...
@@ -302,7 +302,6 @@ int main(int argc, char **argv)
//unsigned char frame_type = 0;
NR_DL_FRAME_PARMS
*
frame_parms
;
int
loglvl
=
OAILOG_WARNING
;
//uint64_t SSB_positions=0x01;
uint16_t
nb_symb_sch
=
12
;
int
start_symbol
=
0
;
uint16_t
nb_rb
=
50
;
...
...
@@ -337,6 +336,7 @@ int main(int argc, char **argv)
uint8_t
transform_precoding
=
transformPrecoder_disabled
;
// 0 - ENABLE, 1 - DISABLE
uint8_t
num_dmrs_cdm_grps_no_data
=
1
;
uint8_t
mcs_table
=
0
;
int
ilbrm
=
0
;
UE_nr_rxtx_proc_t
UE_proc
;
FILE
*
scg_fd
=
NULL
;
...
...
@@ -375,6 +375,7 @@ int main(int argc, char **argv)
nb_symb_sch
=
atoi
(
optarg
);
AssertFatal
(
nb_symb_sch
>
0
&&
nb_symb_sch
<
15
,
"start_symbol %d is not in 1..14
\n
"
,
nb_symb_sch
);
break
;
case
'c'
:
n_rnti
=
atoi
(
optarg
);
AssertFatal
(
n_rnti
>
0
&&
n_rnti
<=
65535
,
"Illegal n_rnti %x
\n
"
,
n_rnti
);
...
...
@@ -476,7 +477,7 @@ int main(int argc, char **argv)
case
'n'
:
n_trials
=
atoi
(
optarg
);
break
;
case
'p'
:
extended_prefix_flag
=
1
;
break
;
...
...
@@ -561,7 +562,7 @@ int main(int argc, char **argv)
break
;
case
'M'
:
// SSB_positions
= atoi(optarg);
ilbrm
=
atoi
(
optarg
);
break
;
case
'N'
:
...
...
@@ -628,7 +629,6 @@ int main(int argc, char **argv)
printf
(
"-n Number of trials to simulate
\n
"
);
printf
(
"-p Use extended prefix mode
\n
"
);
printf
(
"-q MCS table
\n
"
);
printf
(
"-t Delay spread for multipath channel
\n
"
);
printf
(
"-u Set the numerology
\n
"
);
printf
(
"-w Start PRB for PUSCH
\n
"
);
//printf("-x Transmission mode (1,2,6 for the moment)\n");
...
...
@@ -640,7 +640,7 @@ int main(int argc, char **argv)
printf
(
"-G Offset of samples to read from file (0 default)
\n
"
);
printf
(
"-L <log level, 0(errors), 1(warning), 2(info) 3(debug) 4 (trace)>
\n
"
);
printf
(
"-I Maximum LDPC decoder iterations
\n
"
);
printf
(
"-M
Multiple SSB positions in burst
\n
"
);
printf
(
"-M
Use limited buffer rate-matching
\n
"
);
printf
(
"-N Nid_cell
\n
"
);
printf
(
"-O oversampling factor (1,2,4,8,16)
\n
"
);
printf
(
"-R N_RB_DL
\n
"
);
...
...
@@ -922,6 +922,12 @@ int main(int argc, char **argv)
printf
(
"num dmrs sym %d
\n
"
,
number_dmrs_symbols
);
uint8_t
nb_re_dmrs
=
(
dmrs_config_type
==
pusch_dmrs_type1
)
?
6
:
4
;
uint32_t
tbslbrm
=
0
;
if
(
ilbrm
)
tbslbrm
=
nr_compute_tbslbrm
(
mcs_table
,
N_RB_UL
,
precod_nbr_layers
);
if
((
UE
->
frame_parms
.
nb_antennas_tx
==
4
)
&&
(
precod_nbr_layers
==
4
))
num_dmrs_cdm_grps_no_data
=
2
;
...
...
@@ -1150,6 +1156,7 @@ int main(int argc, char **argv)
pusch_pdu
->
uplink_frequency_shift_7p5khz
=
0
;
pusch_pdu
->
start_symbol_index
=
start_symbol
;
pusch_pdu
->
nr_of_symbols
=
nb_symb_sch
;
pusch_pdu
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
tbslbrm
;
pusch_pdu
->
pusch_data
.
rv_index
=
rv_index
;
pusch_pdu
->
pusch_data
.
harq_process_id
=
0
;
pusch_pdu
->
pusch_data
.
new_data_indicator
=
trial
&
0x1
;
...
...
@@ -1210,6 +1217,7 @@ int main(int argc, char **argv)
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
dmrs_ports
=
((
1
<<
precod_nbr_layers
)
-
1
);
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
absolute_delta_PUSCH
=
0
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
target_code_rate
=
code_rate
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
tbslbrm
=
tbslbrm
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
tb_size
=
TBS
/
8
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
new_data_indicator
=
trial
&
0x1
;
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
51483a32
...
...
@@ -4129,18 +4129,33 @@ uint16_t compute_pucch_prb_size(uint8_t format,
}
int
get_bw_tbslbrm
(
int
scc_bwpsize
,
bool
is_dl
,
NR_CellGroupConfig_t
*
cg
)
{
int
bw
=
scc_bwpsize
;
if
(
cg
&&
cg
->
spCellConfig
&&
cg
->
spCellConfig
->
spCellConfigDedicated
)
{
const
NR_ServingCellConfig_t
*
servingCellConfig
=
cg
->
spCellConfig
->
spCellConfigDedicated
;
if
(
servingCellConfig
->
downlinkBWP_ToAddModList
)
{
struct
NR_ServingCellConfig__downlinkBWP_ToAddModList
*
BWP_list
=
servingCellConfig
->
downlinkBWP_ToAddModList
;
for
(
int
i
=
0
;
i
<
BWP_list
->
list
.
count
;
i
++
)
{
NR_BWP_t
genericParameters
=
BWP_list
->
list
.
array
[
i
]
->
bwp_Common
->
genericParameters
;
int
curr_bw
=
NRRIV2BW
(
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
if
(
curr_bw
>
bw
)
bw
=
curr_bw
;
if
(
is_dl
)
{
if
(
servingCellConfig
->
downlinkBWP_ToAddModList
)
{
const
struct
NR_ServingCellConfig__downlinkBWP_ToAddModList
*
BWP_list
=
servingCellConfig
->
downlinkBWP_ToAddModList
;
for
(
int
i
=
0
;
i
<
BWP_list
->
list
.
count
;
i
++
)
{
NR_BWP_t
genericParameters
=
BWP_list
->
list
.
array
[
i
]
->
bwp_Common
->
genericParameters
;
int
curr_bw
=
NRRIV2BW
(
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
if
(
curr_bw
>
bw
)
bw
=
curr_bw
;
}
}
}
else
{
if
(
servingCellConfig
->
uplinkConfig
&&
servingCellConfig
->
uplinkConfig
->
uplinkBWP_ToAddModList
)
{
const
struct
NR_UplinkConfig__uplinkBWP_ToAddModList
*
BWP_list
=
servingCellConfig
->
uplinkConfig
->
uplinkBWP_ToAddModList
;
for
(
int
i
=
0
;
i
<
BWP_list
->
list
.
count
;
i
++
)
{
NR_BWP_t
genericParameters
=
BWP_list
->
list
.
array
[
i
]
->
bwp_Common
->
genericParameters
;
int
curr_bw
=
NRRIV2BW
(
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
if
(
curr_bw
>
bw
)
bw
=
curr_bw
;
}
}
}
}
...
...
@@ -4738,4 +4753,4 @@ uint16_t nr_get_csi_bitlen(nr_csi_report_t *csi_report_template, uint8_t csi_rep
}
return
csi_bitlen
;
}
\ No newline at end of file
}
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
51483a32
...
...
@@ -143,6 +143,7 @@ uint32_t nr_get_code_rate_ul(uint8_t Imcs, uint8_t table_idx);
uint16_t
get_nr_srs_offset
(
NR_SRS_PeriodicityAndOffset_t
periodicityAndOffset
);
int
get_bw_tbslbrm
(
int
scc_bwpsize
,
bool
is_dl
,
NR_CellGroupConfig_t
*
cg
);
uint32_t
nr_compute_tbslbrm
(
uint16_t
table
,
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
51483a32
...
...
@@ -965,13 +965,13 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
NR_BWP_t
genericParameters
=
mac
->
scc
?
mac
->
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
:
mac
->
scc_SIB
->
downlinkConfigCommon
.
initialDownlinkBWP
.
genericParameters
;
int
BWPSize
=
NRRIV2BW
(
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
bw_tbslbrm
=
get_bw_tbslbrm
(
BWPSize
,
mac
->
cg
);
bw_tbslbrm
=
get_bw_tbslbrm
(
BWPSize
,
true
,
mac
->
cg
);
}
else
bw_tbslbrm
=
dlsch_config_pdu_1_0
->
BWPSize
;
dlsch_config_pdu_1_0
->
tbslbrm
=
nr_compute_tbslbrm
(
dlsch_config_pdu_1_0
->
mcs_table
,
bw_tbslbrm
,
1
);
bw_tbslbrm
,
1
);
/* NDI (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI)*/
dlsch_config_pdu_1_0
->
ndi
=
dci
->
ndi
;
...
...
@@ -1406,7 +1406,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
NR_BWP_t
genericParameters
=
mac
->
scc
?
mac
->
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
:
mac
->
scc_SIB
->
downlinkConfigCommon
.
initialDownlinkBWP
.
genericParameters
;
int
BWPSize
=
NRRIV2BW
(
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
BWPSize
,
mac
->
cg
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
BWPSize
,
true
,
mac
->
cg
);
dlsch_config_pdu_1_1
->
tbslbrm
=
nr_compute_tbslbrm
(
dlsch_config_pdu_1_1
->
mcs_table
,
bw_tbslbrm
,
nl_tbslbrm
);
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
51483a32
...
...
@@ -681,6 +681,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
pusch_config_pdu
->
pusch_data
.
harq_process_id
=
0
;
pusch_config_pdu
->
pusch_data
.
new_data_indicator
=
1
;
// new data
pusch_config_pdu
->
pusch_data
.
num_cb
=
0
;
pusch_config_pdu
->
tbslbrm
=
0
;
}
else
if
(
dci
)
{
NR_BWP_Id_t
dl_bwp_id
=
mac
->
DL_BWP_Id
;
...
...
@@ -863,6 +864,31 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
else
N_PRB_oh
=
0
;
if
(
mac
->
cg
&&
mac
->
cg
->
spCellConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
pusch_ServingCellConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
rateMatching
)
{
long
*
maxMIMO_Layers
=
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
;
if
(
!
maxMIMO_Layers
)
maxMIMO_Layers
=
pusch_Config
?
pusch_Config
->
maxRank
:
NULL
;
AssertFatal
(
maxMIMO_Layers
!=
NULL
,
"Option with max MIMO layers not configured is not supported
\n
"
);
int
bw_tbslbrm
;
if
(
mac
->
scc
||
mac
->
scc_SIB
||
mac
->
cg
)
{
NR_BWP_t
genericParameters
=
initialUplinkBWP
->
genericParameters
;
int
BWPSize
=
NRRIV2BW
(
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
bw_tbslbrm
=
get_bw_tbslbrm
(
BWPSize
,
false
,
mac
->
cg
);
}
else
bw_tbslbrm
=
pusch_config_pdu
->
bwp_size
;
pusch_config_pdu
->
tbslbrm
=
nr_compute_tbslbrm
(
pusch_config_pdu
->
mcs_table
,
bw_tbslbrm
,
*
maxMIMO_Layers
);
}
else
pusch_config_pdu
->
tbslbrm
=
0
;
/* PTRS */
if
(
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
51483a32
...
...
@@ -1318,7 +1318,7 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
}
int
scc_bwpsize
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
ra
->
CellGroup
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
true
,
ra
->
CellGroup
);
pdsch_pdu_rel15
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
nr_compute_tbslbrm
(
mcsTableIdx
,
bw_tbslbrm
,
1
);
...
...
@@ -1699,7 +1699,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
nr_get_tbs_dl
(
&
dl_tti_pdsch_pdu
->
pdsch_pdu
,
x_Overhead
,
pdsch_pdu_rel15
->
numDmrsCdmGrpsNoData
,
tb_scaling
);
int
scc_bwpsize
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
ra
->
CellGroup
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
true
,
ra
->
CellGroup
);
pdsch_pdu_rel15
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
nr_compute_tbslbrm
(
mcsTableIdx
,
bw_tbslbrm
,
1
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
51483a32
...
...
@@ -1056,7 +1056,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
int
nl_tbslbrm
=
*
maxMIMO_Layers
<
4
?
*
maxMIMO_Layers
:
4
;
// Maximum number of PRBs across all configured DL BWPs
int
scc_bwpsize
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
cg
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
true
,
cg
);
pdsch_pdu
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
nr_compute_tbslbrm
(
current_BWP
->
mcsTableIdx
,
bw_tbslbrm
,
nl_tbslbrm
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
51483a32
...
...
@@ -2217,7 +2217,10 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac,
CellGroup
->
spCellConfig
->
spCellConfigDedicated
)
{
const
NR_ServingCellConfig_t
*
servingCellConfig
=
CellGroup
->
spCellConfig
->
spCellConfigDedicated
;
DL_BWP
->
pdsch_servingcellconfig
=
servingCellConfig
->
pdsch_ServingCellConfig
?
servingCellConfig
->
pdsch_ServingCellConfig
->
choice
.
setup
:
NULL
;
DL_BWP
->
pdsch_servingcellconfig
=
servingCellConfig
->
pdsch_ServingCellConfig
?
servingCellConfig
->
pdsch_ServingCellConfig
->
choice
.
setup
:
NULL
;
UL_BWP
->
pusch_servingcellconfig
=
servingCellConfig
->
uplinkConfig
?
(
servingCellConfig
->
uplinkConfig
->
pusch_ServingCellConfig
?
servingCellConfig
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
:
NULL
)
:
NULL
;
target_ss
=
NR_SearchSpace__searchSpaceType_PR_ue_Specific
;
if
(
UE
&&
UE
->
Msg3_dcch_dtch
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
51483a32
...
...
@@ -1683,7 +1683,21 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
pusch_pdu
->
pusch_data
.
tb_size
=
sched_pusch
->
tb_size
;
pusch_pdu
->
pusch_data
.
num_cb
=
0
;
//CBG not supported
pusch_pdu
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
0
;
if
(
current_BWP
->
pusch_servingcellconfig
&&
current_BWP
->
pusch_servingcellconfig
->
rateMatching
)
{
// TBS_LBRM according to section 5.4.2.1 of 38.212
long
*
maxMIMO_Layers
=
current_BWP
->
pusch_servingcellconfig
->
ext1
->
maxMIMO_Layers
;
if
(
!
maxMIMO_Layers
)
maxMIMO_Layers
=
current_BWP
->
pusch_Config
->
maxRank
;
AssertFatal
(
maxMIMO_Layers
!=
NULL
,
"Option with max MIMO layers not configured is not supported
\n
"
);
const
int
scc_bwpsize
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
bw_tbslbrm
=
get_bw_tbslbrm
(
scc_bwpsize
,
false
,
cg
);
pusch_pdu
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
nr_compute_tbslbrm
(
current_BWP
->
mcs_table
,
bw_tbslbrm
,
*
maxMIMO_Layers
);
}
else
pusch_pdu
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
0
;
LOG_D
(
NR_MAC
,
"PUSCH PDU : data_scrambling_identity %x, dmrs_scrambling_id %x
\n
"
,
pusch_pdu
->
data_scrambling_id
,
pusch_pdu
->
ul_dmrs_scrambling_id
);
/* TRANSFORM PRECODING --------------------------------------------------------*/
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
51483a32
...
...
@@ -113,6 +113,7 @@ typedef struct NR_UE_UL_BWP {
long
*
cyclicprefix
;
uint16_t
BWPSize
;
uint16_t
BWPStart
;
NR_PUSCH_ServingCellConfig_t
*
pusch_servingcellconfig
;
NR_PUSCH_TimeDomainResourceAllocationList_t
*
tdaList
;
NR_PUSCH_Config_t
*
pusch_Config
;
NR_PUCCH_Config_t
*
pucch_Config
;
...
...
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