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
556f5459
Commit
556f5459
authored
Nov 19, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_ULSCH_decoding' into integration_2021_wk46_c
parents
60f3f085
5a3a00bd
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
125 additions
and
80 deletions
+125
-80
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+2
-0
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+19
-9
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+2
-0
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
+3
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+8
-4
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+91
-67
No files found.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
556f5459
...
...
@@ -16,6 +16,7 @@
#ifndef _FAPI_NR_UE_INTERFACE_H_
#define _FAPI_NR_UE_INTERFACE_H_
#include <pthread.h>
#include "stddef.h"
#include "platform_types.h"
...
...
@@ -349,6 +350,7 @@ typedef struct {
uint16_t
slot
;
uint8_t
number_pdus
;
fapi_nr_ul_config_request_pdu_t
ul_config_list
[
FAPI_NR_UL_CONFIG_LIST_NUM
];
pthread_mutex_t
mutex_ul_config
;
}
fapi_nr_ul_config_request_t
;
...
...
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
556f5459
...
...
@@ -153,6 +153,7 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
fapi_nr_ul_config_request_t
*
ul_config
=
scheduled_response
->
ul_config
;
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
for
(
i
=
0
;
i
<
ul_config
->
number_pdus
;
++
i
){
AssertFatal
(
ul_config
->
ul_config_list
[
i
].
pdu_type
<=
FAPI_NR_UL_CONFIG_TYPES
,
"pdu_type %d out of bounds
\n
"
,
ul_config
->
ul_config_list
[
i
].
pdu_type
);
...
...
@@ -174,6 +175,7 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
pusch_config_pdu
=
&
ul_config
->
ul_config_list
[
i
].
pusch_config_pdu
;
current_harq_pid
=
pusch_config_pdu
->
pusch_data
.
harq_process_id
;
NR_UL_UE_HARQ_t
*
harq_process_ul_ue
=
ulsch0
->
harq_processes
[
current_harq_pid
];
harq_process_ul_ue
->
status
=
0
;
if
(
harq_process_ul_ue
){
...
...
@@ -183,14 +185,16 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
ulsch0
->
f_pusch
=
pusch_config_pdu
->
absolute_delta_PUSCH
;
if
(
scheduled_response
->
tx_request
){
fapi_nr_tx_request_body_t
*
tx_req_body
=
&
scheduled_response
->
tx_request
->
tx_request_body
[
i
];
if
(
scheduled_response
->
tx_request
)
{
for
(
int
j
=
0
;
j
<
scheduled_response
->
tx_request
->
number_of_pdus
;
j
++
)
{
fapi_nr_tx_request_body_t
*
tx_req_body
=
&
scheduled_response
->
tx_request
->
tx_request_body
[
j
];
if
(
tx_req_body
->
pdu_index
==
i
)
{
LOG_D
(
PHY
,
"%d.%d Copying %d bytes to harq_process_ul_ue->a (harq_pid %d)
\n
"
,
scheduled_response
->
frame
,
slot
,
tx_req_body
->
pdu_length
,
current_harq_pid
);
memcpy
(
harq_process_ul_ue
->
a
,
tx_req_body
->
pdu
,
tx_req_body
->
pdu_length
);
harq_process_ul_ue
->
status
=
ACTIVE
;
scheduled_response
->
tx_request
->
number_of_pdus
=
0
;
break
;
}
}
}
}
else
{
...
...
@@ -228,7 +232,13 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
break
;
}
}
memset
(
ul_config
,
0
,
sizeof
(
fapi_nr_ul_config_request_t
));
if
(
scheduled_response
->
tx_request
)
scheduled_response
->
tx_request
->
number_of_pdus
=
0
;
ul_config
->
sfn
=
0
;
ul_config
->
slot
=
0
;
ul_config
->
number_pdus
=
0
;
memset
(
ul_config
->
ul_config_list
,
0
,
sizeof
(
ul_config
->
ul_config_list
));
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
}
}
return
0
;
...
...
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
556f5459
...
...
@@ -660,6 +660,8 @@ int nr_rrc_mac_config_req_ue(
if
(
mac
->
scc_SIB
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
nrofUplinkSymbols
>
0
)
num_slots_ul
++
;
LOG_I
(
MAC
,
"Initializing ul_config_request. num_slots_ul = %d
\n
"
,
num_slots_ul
);
mac
->
ul_config_request
=
(
fapi_nr_ul_config_request_t
*
)
calloc
(
num_slots_ul
,
sizeof
(
fapi_nr_ul_config_request_t
));
for
(
int
i
=
0
;
i
<
num_slots_ul
;
i
++
)
pthread_mutex_init
(
&
(
mac
->
ul_config_request
[
i
].
mutex_ul_config
),
NULL
);
// Setup the SSB to Rach Occasions mapping according to the config
build_ssb_to_ro_map
(
mac
);
//->scc, mac->phy_config.config_req.cell_config.frame_duplex_type);
mac
->
if_module
->
phy_config_request
(
&
mac
->
phy_config
);
...
...
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
View file @
556f5459
...
...
@@ -40,6 +40,7 @@
#include "openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h"
#include "executables/softmodem-common.h"
#include "openair2/LAYER2/nr_pdcp/nr_pdcp.h"
#include <pthread.h>
static
NR_UE_MAC_INST_t
*
nr_ue_mac_inst
;
...
...
@@ -74,6 +75,8 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst) {
num_slots_ul
++
;
LOG_D
(
MAC
,
"Initializing ul_config_request. num_slots_ul = %d
\n
"
,
num_slots_ul
);
nr_ue_mac_inst
->
ul_config_request
=
(
fapi_nr_ul_config_request_t
*
)
calloc
(
num_slots_ul
,
sizeof
(
fapi_nr_ul_config_request_t
));
for
(
int
i
=
0
;
i
<
num_slots_ul
;
i
++
)
pthread_mutex_init
(
&
(
nr_ue_mac_inst
->
ul_config_request
[
i
].
mutex_ul_config
),
NULL
);
}
}
else
{
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
556f5459
...
...
@@ -668,15 +668,15 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
LOG_W
(
MAC
,
"In %s: ul_config request is NULL. Probably due to unexpected UL DCI in frame.slot %d.%d. Ignoring DCI!
\n
"
,
__FUNCTION__
,
frame
,
slot
);
return
-
1
;
}
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
AssertFatal
(
ul_config
->
number_pdus
<
FAPI_NR_UL_CONFIG_LIST_NUM
,
"ul_config->number_pdus %d out of bounds
\n
"
,
ul_config
->
number_pdus
);
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
=
&
ul_config
->
ul_config_list
[
ul_config
->
number_pdus
].
pusch_config_pdu
;
fill_ul_config
(
ul_config
,
frame_tx
,
slot_tx
,
FAPI_NR_UL_CONFIG_TYPE_PUSCH
);
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
// Config PUSCH PDU
ret
=
nr_config_pusch_pdu
(
mac
,
pusch_config_pdu
,
dci
,
NULL
,
rnti
,
&
dci_format
);
}
break
;
...
...
@@ -729,13 +729,15 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
return
-
1
;
}
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
AssertFatal
(
ul_config
->
number_pdus
<
FAPI_NR_UL_CONFIG_LIST_NUM
,
"ul_config->number_pdus %d out of bounds
\n
"
,
ul_config
->
number_pdus
);
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
=
&
ul_config
->
ul_config_list
[
ul_config
->
number_pdus
].
pusch_config_pdu
;
fill_ul_config
(
ul_config
,
frame_tx
,
slot_tx
,
FAPI_NR_UL_CONFIG_TYPE_PUSCH
);
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
// Config PUSCH PDU
ret
=
nr_config_pusch_pdu
(
mac
,
pusch_config_pdu
,
dci
,
NULL
,
rnti
,
&
dci_format
);
}
else
AssertFatal
(
1
==
0
,
"Cannot schedule PUSCH
\n
"
);
break
;
}
...
...
@@ -3921,13 +3923,15 @@ int nr_ue_process_rar(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_t
rnti
=
ra
->
t_crnti
;
}
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
AssertFatal
(
ul_config
->
number_pdus
<
FAPI_NR_UL_CONFIG_LIST_NUM
,
"ul_config->number_pdus %d out of bounds
\n
"
,
ul_config
->
number_pdus
);
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
=
&
ul_config
->
ul_config_list
[
ul_config
->
number_pdus
].
pusch_config_pdu
;
fill_ul_config
(
ul_config
,
frame_tx
,
slot_tx
,
FAPI_NR_UL_CONFIG_TYPE_PUSCH
);
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
// Config Msg3 PDU
nr_config_pusch_pdu
(
mac
,
pusch_config_pdu
,
NULL
,
&
rar_grant
,
rnti
,
NULL
);
}
}
else
{
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
556f5459
...
...
@@ -30,6 +30,7 @@
#include <stdio.h>
#include <math.h>
#include <pthread.h>
/* exe */
#include <common/utils/nr/nr_common.h>
...
...
@@ -59,7 +60,6 @@ static prach_association_pattern_t prach_assoc_pattern;
static
ssb_list_info_t
ssb_list
;
void
fill_ul_config
(
fapi_nr_ul_config_request_t
*
ul_config
,
frame_t
frame_tx
,
int
slot_tx
,
uint8_t
pdu_type
){
ul_config
->
ul_config_list
[
ul_config
->
number_pdus
].
pdu_type
=
pdu_type
;
ul_config
->
slot
=
slot_tx
;
ul_config
->
sfn
=
frame_tx
;
...
...
@@ -945,20 +945,26 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
// Schedule ULSCH only if the current frame and slot match those in ul_config_req
// AND if a UL grant (UL DCI or Msg3) has been received (as indicated by num_pdus)
if
(
ul_config
&&
(
ul_info
->
slot_tx
==
ul_config
->
slot
&&
ul_info
->
frame_tx
==
ul_config
->
sfn
)
&&
ul_config
->
number_pdus
>
0
){
if
(
ul_config
){
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
if
((
ul_info
->
slot_tx
==
ul_config
->
slot
&&
ul_info
->
frame_tx
==
ul_config
->
sfn
)
&&
ul_config
->
number_pdus
>
0
){
LOG_D
(
NR_MAC
,
"In %s:[%d.%d]: number of UL PDUs: %d with UL transmission in [%d.%d]
\n
"
,
__FUNCTION__
,
frame_tx
,
slot_tx
,
ul_config
->
number_pdus
,
ul_config
->
sfn
,
ul_config
->
slot
);
uint8_t
ulsch_input_buffer
[
MAX_ULSCH_PAYLOAD_BYTES
];
uint8_t
ulsch_input_buffer_array
[
NFAPI_MAX_NUM_UL_PDU
]
[
MAX_ULSCH_PAYLOAD_BYTES
];
nr_scheduled_response_t
scheduled_response
;
fapi_nr_tx_request_t
tx_req
;
tx_req
.
slot
=
slot_tx
;
tx_req
.
sfn
=
frame_tx
;
tx_req
.
number_of_pdus
=
0
;
for
(
int
j
=
0
;
j
<
ul_config
->
number_pdus
;
j
++
)
{
uint8_t
*
ulsch_input_buffer
=
&
(
ulsch_input_buffer_array
[
tx_req
.
number_of_pdus
][
MAX_ULSCH_PAYLOAD_BYTES
]);
fapi_nr_ul_config_request_pdu_t
*
ulcfg_pdu
=
&
ul_config
->
ul_config_list
[
j
];
if
(
ulcfg_pdu
->
pdu_type
==
FAPI_NR_UL_CONFIG_TYPE_PUSCH
)
{
int
mac_pdu_exist
=
0
;
uint16_t
TBS_bytes
=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
tb_size
;
LOG_D
(
NR_MAC
,
"harq_id %d, NDI %d NDI_DCI %d, TBS_bytes %d (ra_state %d)
\n
"
,
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
,
...
...
@@ -974,6 +980,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
LOG_D
(
NR_MAC
,
"Flipping NDI for harq_id %d (Msg3)
\n
"
,
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
);
mac
->
UL_ndi
[
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
]
=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
;
mac
->
first_ul_tx
[
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
]
=
0
;
mac_pdu_exist
=
1
;
}
else
{
if
((
mac
->
UL_ndi
[
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
]
!=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
||
...
...
@@ -984,6 +991,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
// Getting IP traffic to be transmitted
nr_ue_get_sdu
(
mod_id
,
cc_id
,
frame_tx
,
slot_tx
,
gNB_index
,
ulsch_input_buffer
,
TBS_bytes
);
mac_pdu_exist
=
1
;
}
LOG_D
(
NR_MAC
,
"Flipping NDI for harq_id %d
\n
"
,
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
);
...
...
@@ -993,29 +1001,32 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
}
// Config UL TX PDU
tx_req
.
slot
=
slot_tx
;
tx_req
.
sfn
=
frame_tx
;
if
(
mac_pdu_exist
)
{
tx_req
.
tx_request_body
[
tx_req
.
number_of_pdus
].
pdu_length
=
TBS_bytes
;
tx_req
.
tx_request_body
[
tx_req
.
number_of_pdus
].
pdu_index
=
j
;
tx_req
.
tx_request_body
[
tx_req
.
number_of_pdus
].
pdu
=
ulsch_input_buffer
;
tx_req
.
number_of_pdus
++
;
tx_req
.
tx_request_body
[
0
].
pdu_length
=
TBS_bytes
;
tx_req
.
tx_request_body
[
0
].
pdu_index
=
j
;
tx_req
.
tx_request_body
[
0
].
pdu
=
ulsch_input_buffer
;
}
if
(
ra
->
ra_state
==
WAIT_CONTENTION_RESOLUTION
&&
!
ra
->
cfra
){
LOG_I
(
NR_MAC
,
"[RAPROC] RA-Msg3 retransmitted
\n
"
);
LOG_I
(
NR_MAC
,
"[RAPROC][%d.%d] RA-Msg3 retransmitted
\n
"
,
frame_tx
,
slot_tx
);
// 38.321 restart the ra-ContentionResolutionTimer at each HARQ retransmission in the first symbol after the end of the Msg3 transmission
nr_Msg3_transmitted
(
ul_info
->
module_id
,
ul_info
->
cc_id
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
gNB_index
);
}
if
(
ra
->
ra_state
==
WAIT_RAR
&&
!
ra
->
cfra
){
LOG_I
(
NR_MAC
,
"[RAPROC] RA-Msg3 transmitted
\n
"
);
LOG_I
(
NR_MAC
,
"[RAPROC][%d.%d] RA-Msg3 transmitted
\n
"
,
frame_tx
,
slot_tx
);
nr_Msg3_transmitted
(
ul_info
->
module_id
,
ul_info
->
cc_id
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
gNB_index
);
}
}
}
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
// avoid double lock
fill_scheduled_response
(
&
scheduled_response
,
NULL
,
ul_config
,
&
tx_req
,
mod_id
,
cc_id
,
rx_frame
,
rx_slot
,
ul_info
->
thread_id
);
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
){
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
}
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
}
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
}
}
...
...
@@ -2144,7 +2155,13 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
pucch
->
resource_set_id
=
find_pucch_resource_set
(
mac
,
N_UCI
);
select_pucch_resource
(
mac
,
pucch
);
fapi_nr_ul_config_request_t
*
ul_config
=
get_ul_config_request
(
mac
,
slotP
);
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
AssertFatal
(
ul_config
->
number_pdus
<
FAPI_NR_UL_CONFIG_LIST_NUM
,
"ul_config->number_pdus %d out of bounds
\n
"
,
ul_config
->
number_pdus
);
fapi_nr_ul_config_pucch_pdu
*
pucch_pdu
=
&
ul_config
->
ul_config_list
[
ul_config
->
number_pdus
].
pucch_config_pdu
;
fill_ul_config
(
ul_config
,
frameP
,
slotP
,
FAPI_NR_UL_CONFIG_TYPE_PUCCH
);
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
nr_ue_configure_pucch
(
mac
,
slotP
,
rnti
,
...
...
@@ -2152,7 +2169,6 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
pucch_pdu
,
O_SR
,
O_ACK
,
O_CSI
);
LOG_D
(
NR_MAC
,
"Configuring pucch, is_common = %d
\n
"
,
pucch
->
is_common
);
fill_ul_config
(
ul_config
,
frameP
,
slotP
,
FAPI_NR_UL_CONFIG_TYPE_PUCCH
);
nr_scheduled_response_t
scheduled_response
;
fill_scheduled_response
(
&
scheduled_response
,
NULL
,
ul_config
,
NULL
,
module_idP
,
0
/*TBR fix*/
,
frameP
,
slotP
,
thread_id
);
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
...
...
@@ -2213,13 +2229,16 @@ void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t s
format0
=
format
&
0xff
;
// single PRACH format
format1
=
(
format
>>
8
)
&
0xff
;
// dual PRACH format
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
AssertFatal
(
ul_config
->
number_pdus
<
FAPI_NR_UL_CONFIG_LIST_NUM
,
"ul_config->number_pdus %d out of bounds
\n
"
,
ul_config
->
number_pdus
);
prach_config_pdu
=
&
ul_config
->
ul_config_list
[
ul_config
->
number_pdus
].
prach_config_pdu
;
memset
(
prach_config_pdu
,
0
,
sizeof
(
fapi_nr_ul_config_prach_pdu
));
fill_ul_config
(
ul_config
,
frameP
,
slotP
,
FAPI_NR_UL_CONFIG_TYPE_PRACH
);
pthread_mutex_unlock
(
&
ul_config
->
mutex_ul_config
);
LOG_D
(
PHY
,
"In %s: (%p) %d UL PDUs:
\n
"
,
__FUNCTION__
,
ul_config
,
ul_config
->
number_pdus
);
memset
(
prach_config_pdu
,
0
,
sizeof
(
fapi_nr_ul_config_prach_pdu
));
ncs
=
get_NCS
(
rach_ConfigGeneric
->
zeroCorrelationZoneConfig
,
format0
,
setup
->
restrictedSetConfig
);
prach_config_pdu
->
phys_cell_id
=
mac
->
physCellId
;
...
...
@@ -2295,6 +2314,7 @@ void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t s
AssertFatal
(
1
==
0
,
"Invalid PRACH format"
);
}
}
// if format1
fill_scheduled_response
(
&
scheduled_response
,
NULL
,
ul_config
,
NULL
,
module_idP
,
0
/*TBR fix*/
,
frameP
,
slotP
,
thread_id
);
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
...
...
@@ -2723,7 +2743,11 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
if
(
sdu_length
>
0
)
{
LOG_D
(
NR_MAC
,
"In %s: Generating UL MAC sub-PDU for SDU %d, length %d bytes, RB with LCID 0x%02x (buflen (TBS) %d bytes)
\n
"
,
__FUNCTION__
,
LOG_D
(
NR_MAC
,
"In %s: [UE %d] [%d.%d] UL-DXCH -> ULSCH, Generating UL MAC sub-PDU for SDU %d, length %d bytes, RB with LCID 0x%02x (buflen (TBS) %d bytes)
\n
"
,
__FUNCTION__
,
module_idP
,
frameP
,
subframe
,
num_sdus
+
1
,
sdu_length
,
lcid
,
...
...
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