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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
79117d4c
Commit
79117d4c
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
e8ce9a73
41e2b21d
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 @
79117d4c
...
...
@@ -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 @
79117d4c
...
...
@@ -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 @
79117d4c
...
...
@@ -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 @
79117d4c
...
...
@@ -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 @
79117d4c
...
...
@@ -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 @
79117d4c
...
...
@@ -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