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)
...
@@ -380,9 +380,11 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
}
}
if
(
slot_ind
)
{
if
(
slot_ind
)
{
sfn_slot
=
*
slot_ind
;
sfn_slot
=
*
slot_ind
;
free_and_zero
(
slot_ind
);
}
}
else
if
(
ch_info
)
{
else
if
(
ch_info
)
{
sfn_slot
=
ch_info
->
sfn_slot
;
sfn_slot
=
ch_info
->
sfn_slot
;
free_and_zero
(
ch_info
);
}
}
frame_t
frame
=
NFAPI_SFNSLOT2SFN
(
sfn_slot
);
frame_t
frame
=
NFAPI_SFNSLOT2SFN
(
sfn_slot
);
...
@@ -465,10 +467,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
...
@@ -465,10 +467,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
pdcp_run
(
&
ctxt
);
pdcp_run
(
&
ctxt
);
}
}
process_queued_nr_nfapi_msgs
(
mac
,
sfn_slot
);
process_queued_nr_nfapi_msgs
(
mac
,
sfn_slot
);
free
(
slot_ind
);
slot_ind
=
NULL
;
free
(
ch_info
);
ch_info
=
NULL
;
}
}
return
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
...
@@ -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
O_CSI
=
0
;
int
N_UCI
=
0
;
int
N_UCI
=
0
;
PUCCH_sched_t
*
pucch
=
calloc
(
1
,
sizeof
(
*
pucch
));
PUCCH_sched_t
pucch
=
{
pucch
->
resource_indicator
=
-
1
;
.
resource_indicator
=
-
1
,
pucch
->
initial_pucch_id
=
-
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
uint16_t
rnti
=
mac
->
crnti
;
//FIXME not sure this is valid for all pucch instances
// SR
// SR
if
(
trigger_periodic_scheduling_request
(
mac
,
pucch
,
frameP
,
slotP
))
{
if
(
trigger_periodic_scheduling_request
(
mac
,
&
pucch
,
frameP
,
slotP
))
{
O_SR
=
1
;
O_SR
=
1
;
/* sr_payload = 1 means that this is a positive SR, sr_payload = 0 means that it is a negative SR */
/* 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
,
frameP
,
slotP
);
slotP
);
}
}
// CSI
// CSI
if
(
mac
->
ra
.
ra_state
==
RA_SUCCEEDED
||
get_softmodem_params
()
->
phy_test
==
1
)
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
// 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_BWP_Id_t
bwp_id
=
mac
->
UL_BWP_Id
;
NR_PUCCH_Config_t
*
pucch_Config
=
NULL
;
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
...
@@ -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
&&
(
pucch_Config
->
format2
->
choice
.
setup
->
simultaneousHARQ_ACK_CSI
==
NULL
))
{
(
pucch_Config
->
format2
->
choice
.
setup
->
simultaneousHARQ_ACK_CSI
==
NULL
))
{
O_CSI
=
0
;
O_CSI
=
0
;
pucch
->
csi_part1_payload
=
0
;
pucch
.
csi_part1_payload
=
0
;
pucch
->
csi_part2_payload
=
0
;
pucch
.
csi_part2_payload
=
0
;
}
}
N_UCI
=
O_SR
+
O_ACK
+
O_CSI
;
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
...
@@ -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
;
mac
->
nr_ue_emul_l1
.
num_csi_reports
=
O_CSI
;
// do no transmit pucch if only SR scheduled and it is negative
// 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
;
return
;
if
(
N_UCI
>
0
)
{
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
);
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
);
pucch
.
resource_set_id
=
find_pucch_resource_set
(
mac
,
O_ACK
+
O_CSI
);
select_pucch_resource
(
mac
,
pucch
);
select_pucch_resource
(
mac
,
&
pucch
);
fapi_nr_ul_config_request_t
*
ul_config
=
get_ul_config_request
(
mac
,
slotP
);
fapi_nr_ul_config_request_t
*
ul_config
=
get_ul_config_request
(
mac
,
slotP
);
pthread_mutex_lock
(
&
ul_config
->
mutex_ul_config
);
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
);
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
...
@@ -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
,
nr_ue_configure_pucch
(
mac
,
slotP
,
slotP
,
rnti
,
rnti
,
pucch
,
&
pucch
,
pucch_pdu
,
pucch_pdu
,
O_SR
,
O_ACK
,
O_CSI
);
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
;
nr_scheduled_response_t
scheduled_response
;
fill_scheduled_response
(
&
scheduled_response
,
NULL
,
ul_config
,
NULL
,
module_idP
,
0
/*TBR fix*/
,
frameP
,
slotP
,
thread_id
);
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
)
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
...
@@ -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
))
if
(
!
put_queue
(
&
nr_ul_tti_req_queue
,
ul_tti_req
))
{
{
LOG_E
(
NR_PHY
,
"put_queue failed for ul_tti_req.
\n
"
);
LOG_E
(
NR_PHY
,
"put_queue failed for ul_tti_req.
\n
"
);
free
(
ul_tti_req
);
ul_tti_req
=
NULL
;
}
}
return
;
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
)
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,
...
@@ -710,20 +707,29 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
slot
=
dl_tti_request
->
Slot
;
slot
=
dl_tti_request
->
Slot
;
LOG_I
(
NR_PHY
,
"[%d, %d] dl_tti_request
\n
"
,
frame
,
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
);
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
/* This checks if the previously recevied DCI matches our current RNTI
value. The assumption is that if the DCI matches our RNTI, then the
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
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
RAR hasn't been processed yet, we do not want to be filtering the
tx_data_requests. */
tx_data_requests. */
if
(
tx_data_request
&&
(
mac
->
nr_ue_emul_l1
.
expected_sib
||
if
(
tx_data_request
)
mac
->
nr_ue_emul_l1
.
expected_rar
||
mac
->
nr_ue_emul_l1
.
expected_dci
))
{
{
frame
=
tx_data_request
->
SFN
;
if
(
mac
->
nr_ue_emul_l1
.
expected_sib
||
slot
=
tx_data_request
->
Slot
;
mac
->
nr_ue_emul_l1
.
expected_rar
||
LOG_I
(
NR_PHY
,
"[%d, %d] PDSCH in tx_request
\n
"
,
frame
,
slot
);
mac
->
nr_ue_emul_l1
.
expected_dci
)
copy_tx_data_req_to_dl_info
(
&
mac
->
dl_info
,
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
);
}
else
{
LOG_D
(
NR_MAC
,
"Unexpected tx_data_req
\n
"
);
}
free_and_zero
(
tx_data_request
);
}
}
else
if
(
ul_dci_request
)
else
if
(
ul_dci_request
)
{
{
...
@@ -731,6 +737,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
...
@@ -731,6 +737,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
slot
=
ul_dci_request
->
Slot
;
slot
=
ul_dci_request
->
Slot
;
LOG_I
(
NR_PHY
,
"[%d, %d] ul_dci_request
\n
"
,
frame
,
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
);
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
)
else
if
(
ul_tti_request
)
{
{
...
@@ -738,6 +745,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_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
;
slot
=
ul_tti_request
->
Slot
;
LOG_D
(
NR_PHY
,
"[%d, %d] ul_tti_request
\n
"
,
frame
,
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
);
copy_ul_tti_data_req_to_dl_info
(
&
mac
->
dl_info
,
ul_tti_request
);
free_and_zero
(
ul_tti_request
);
}
}
else
else
{
{
...
@@ -771,7 +779,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
...
@@ -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
->
tdd_UL_DL_ConfigurationCommon
:
mac
->
scc_SIB
->
tdd_UL_DL_ConfigurationCommon
,
mac
->
scc_SIB
->
tdd_UL_DL_ConfigurationCommon
,
ul_info
.
slot_tx
,
ul_info
.
slot_tx
,
mac
->
frame_type
))
mac
->
frame_type
)
&&
mac
->
ra
.
ra_state
!=
RA_SUCCEEDED
)
{
{
nr_ue_scheduler
(
NULL
,
&
ul_info
);
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
);
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