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
lizhongxiao
OpenXG-RAN
Commits
91d42fd5
Commit
91d42fd5
authored
Mar 17, 2022
by
Melissa Elkadi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing memory leaks and hoping to fix num_dci_option bug
parent
22f4b083
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
29 deletions
+38
-29
executables/nr-ue.c
executables/nr-ue.c
+2
-4
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+17
-14
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+19
-11
No files found.
executables/nr-ue.c
View file @
91d42fd5
...
...
@@ -380,9 +380,11 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
}
if
(
slot_ind
)
{
sfn_slot
=
*
slot_ind
;
free_and_zero
(
slot_ind
);
}
else
if
(
ch_info
)
{
sfn_slot
=
ch_info
->
sfn_slot
;
free_and_zero
(
ch_info
);
}
frame_t
frame
=
NFAPI_SFNSLOT2SFN
(
sfn_slot
);
...
...
@@ -465,10 +467,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
pdcp_run
(
&
ctxt
);
}
process_queued_nr_nfapi_msgs
(
mac
,
sfn_slot
);
free
(
slot_ind
);
slot_ind
=
NULL
;
free
(
ch_info
);
ch_info
=
NULL
;
}
return
NULL
;
}
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
91d42fd5
...
...
@@ -2255,26 +2255,29 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
int
O_CSI
=
0
;
int
N_UCI
=
0
;
PUCCH_sched_t
*
pucch
=
calloc
(
1
,
sizeof
(
*
pucch
));
pucch
->
resource_indicator
=
-
1
;
pucch
->
initial_pucch_id
=
-
1
;
PUCCH_sched_t
pucch
=
{
.
resource_indicator
=
-
1
,
.
initial_pucch_id
=
-
1
};
pucch
.
resource_indicator
=
-
1
;
pucch
.
initial_pucch_id
=
-
1
;
uint16_t
rnti
=
mac
->
crnti
;
//FIXME not sure this is valid for all pucch instances
// SR
if
(
trigger_periodic_scheduling_request
(
mac
,
pucch
,
frameP
,
slotP
))
{
if
(
trigger_periodic_scheduling_request
(
mac
,
&
pucch
,
frameP
,
slotP
))
{
O_SR
=
1
;
/* sr_payload = 1 means that this is a positive SR, sr_payload = 0 means that it is a negative SR */
pucch
->
sr_payload
=
nr_ue_get_SR
(
module_idP
,
pucch
.
sr_payload
=
nr_ue_get_SR
(
module_idP
,
frameP
,
slotP
);
}
// CSI
if
(
mac
->
ra
.
ra_state
==
RA_SUCCEEDED
||
get_softmodem_params
()
->
phy_test
==
1
)
O_CSI
=
nr_get_csi_measurements
(
mac
,
frameP
,
slotP
,
pucch
);
O_CSI
=
nr_get_csi_measurements
(
mac
,
frameP
,
slotP
,
&
pucch
);
// ACKNACK
O_ACK
=
get_downlink_ack
(
mac
,
frameP
,
slotP
,
pucch
);
O_ACK
=
get_downlink_ack
(
mac
,
frameP
,
slotP
,
&
pucch
);
NR_BWP_Id_t
bwp_id
=
mac
->
UL_BWP_Id
;
NR_PUCCH_Config_t
*
pucch_Config
=
NULL
;
...
...
@@ -2304,8 +2307,8 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
pucch_Config
->
format2
&&
(
pucch_Config
->
format2
->
choice
.
setup
->
simultaneousHARQ_ACK_CSI
==
NULL
))
{
O_CSI
=
0
;
pucch
->
csi_part1_payload
=
0
;
pucch
->
csi_part2_payload
=
0
;
pucch
.
csi_part1_payload
=
0
;
pucch
.
csi_part2_payload
=
0
;
}
N_UCI
=
O_SR
+
O_ACK
+
O_CSI
;
...
...
@@ -2314,13 +2317,13 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
mac
->
nr_ue_emul_l1
.
num_csi_reports
=
O_CSI
;
// do no transmit pucch if only SR scheduled and it is negative
if
((
O_ACK
+
O_CSI
)
==
0
&&
pucch
->
sr_payload
==
0
)
if
((
O_ACK
+
O_CSI
)
==
0
&&
pucch
.
sr_payload
==
0
)
return
;
if
(
N_UCI
>
0
)
{
LOG_D
(
NR_MAC
,
"%d.%d configure pucch, O_SR %d, O_ACK %d, O_CSI %d
\n
"
,
frameP
,
slotP
,
O_SR
,
O_ACK
,
O_CSI
);
pucch
->
resource_set_id
=
find_pucch_resource_set
(
mac
,
O_ACK
+
O_CSI
);
select_pucch_resource
(
mac
,
pucch
);
pucch
.
resource_set_id
=
find_pucch_resource_set
(
mac
,
O_ACK
+
O_CSI
);
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
);
...
...
@@ -2333,10 +2336,10 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
nr_ue_configure_pucch
(
mac
,
slotP
,
rnti
,
pucch
,
&
pucch
,
pucch_pdu
,
O_SR
,
O_ACK
,
O_CSI
);
LOG_D
(
NR_MAC
,
"Configuring pucch, is_common = %d
\n
"
,
pucch
->
is_common
);
LOG_D
(
NR_MAC
,
"Configuring pucch, is_common = %d
\n
"
,
pucch
.
is_common
);
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
)
...
...
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
91d42fd5
...
...
@@ -640,12 +640,9 @@ static void copy_ul_tti_data_req_to_dl_info(nr_downlink_indication_t *dl_info, n
if
(
!
put_queue
(
&
nr_ul_tti_req_queue
,
ul_tti_req
))
{
LOG_E
(
NR_PHY
,
"put_queue failed for ul_tti_req.
\n
"
);
free
(
ul_tti_req
);
ul_tti_req
=
NULL
;
}
return
;
}
free
(
ul_tti_req
);
}
static
void
fill_dci_from_dl_config
(
nr_downlink_indication_t
*
dl_ind
,
fapi_nr_dl_config_request_t
*
dl_config
)
...
...
@@ -710,20 +707,29 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
slot
=
dl_tti_request
->
Slot
;
LOG_I
(
NR_PHY
,
"[%d, %d] dl_tti_request
\n
"
,
frame
,
slot
);
copy_dl_tti_req_to_dl_info
(
&
mac
->
dl_info
,
dl_tti_request
);
free_and_zero
(
dl_tti_request
);
}
/* This checks if the previously recevied DCI matches our current RNTI
value. The assumption is that if the DCI matches our RNTI, then the
incoming tx_data_request is also destined for the current UE. If the
RAR hasn't been processed yet, we do not want to be filtering the
tx_data_requests. */
if
(
tx_data_request
&&
(
mac
->
nr_ue_emul_l1
.
expected_sib
||
mac
->
nr_ue_emul_l1
.
expected_rar
||
mac
->
nr_ue_emul_l1
.
expected_dci
))
if
(
tx_data_request
)
{
frame
=
tx_data_request
->
SFN
;
slot
=
tx_data_request
->
Slot
;
LOG_I
(
NR_PHY
,
"[%d, %d] PDSCH in tx_request
\n
"
,
frame
,
slot
);
copy_tx_data_req_to_dl_info
(
&
mac
->
dl_info
,
tx_data_request
);
if
(
mac
->
nr_ue_emul_l1
.
expected_sib
||
mac
->
nr_ue_emul_l1
.
expected_rar
||
mac
->
nr_ue_emul_l1
.
expected_dci
)
{
frame
=
tx_data_request
->
SFN
;
slot
=
tx_data_request
->
Slot
;
LOG_I
(
NR_PHY
,
"[%d, %d] PDSCH in tx_request
\n
"
,
frame
,
slot
);
copy_tx_data_req_to_dl_info
(
&
mac
->
dl_info
,
tx_data_request
);
}
else
{
LOG_D
(
NR_MAC
,
"Unexpected tx_data_req
\n
"
);
}
free_and_zero
(
tx_data_request
);
}
else
if
(
ul_dci_request
)
{
...
...
@@ -731,6 +737,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
slot
=
ul_dci_request
->
Slot
;
LOG_I
(
NR_PHY
,
"[%d, %d] ul_dci_request
\n
"
,
frame
,
slot
);
copy_ul_dci_data_req_to_dl_info
(
&
mac
->
dl_info
,
ul_dci_request
);
free_and_zero
(
ul_dci_request
);
}
else
if
(
ul_tti_request
)
{
...
...
@@ -738,6 +745,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
slot
=
ul_tti_request
->
Slot
;
LOG_D
(
NR_PHY
,
"[%d, %d] ul_tti_request
\n
"
,
frame
,
slot
);
copy_ul_tti_data_req_to_dl_info
(
&
mac
->
dl_info
,
ul_tti_request
);
free_and_zero
(
ul_tti_request
);
}
else
{
...
...
@@ -771,7 +779,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
mac
->
scc
->
tdd_UL_DL_ConfigurationCommon
:
mac
->
scc_SIB
->
tdd_UL_DL_ConfigurationCommon
,
ul_info
.
slot_tx
,
mac
->
frame_type
))
mac
->
frame_type
)
&&
mac
->
ra
.
ra_state
!=
RA_SUCCEEDED
)
{
nr_ue_scheduler
(
NULL
,
&
ul_info
);
nr_ue_prach_scheduler
(
ul_info
.
module_id
,
ul_info
.
frame_tx
,
ul_info
.
slot_tx
,
ul_info
.
thread_id
);
...
...
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