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
987363b8
Commit
987363b8
authored
Feb 14, 2022
by
Melissa Elkadi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean up for MR
parent
df06a1e8
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
56 additions
and
137 deletions
+56
-137
executables/nr-ue.c
executables/nr-ue.c
+4
-4
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+12
-34
openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
+7
-7
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+1
-1
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+20
-61
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+12
-30
No files found.
executables/nr-ue.c
View file @
987363b8
...
@@ -201,11 +201,11 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
...
@@ -201,11 +201,11 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
nfapi_nr_dl_tti_request_t
*
dl_tti_request
=
get_queue
(
&
nr_dl_tti_req_queue
);
nfapi_nr_dl_tti_request_t
*
dl_tti_request
=
get_queue
(
&
nr_dl_tti_req_queue
);
nfapi_nr_ul_dci_request_t
*
ul_dci_request
=
get_queue
(
&
nr_ul_dci_req_queue
);
nfapi_nr_ul_dci_request_t
*
ul_dci_request
=
get_queue
(
&
nr_ul_dci_req_queue
);
for
(
int
i
=
0
;
i
<
16
;
i
++
)
{
for
(
int
i
=
0
;
i
<
NR_MAX_HARQ_PROCESSES
;
i
++
)
{
LOG_D
(
NR_MAC
,
"Try to get a ul_tti_req by matching CRC active SFN %d/SLOT %d from queue with %lu items
\n
"
,
LOG_D
(
NR_MAC
,
"Try to get a ul_tti_req by matching CRC active SFN %d/SLOT %d from queue with %lu items
\n
"
,
NFAPI_SFNSLOT2SFN
(
mac
->
nr_ue_emul_l1
.
harq
[
i
].
crc_rx_ind
_sfn_slot
),
NFAPI_SFNSLOT2SFN
(
mac
->
nr_ue_emul_l1
.
harq
[
i
].
active_ul_harq
_sfn_slot
),
NFAPI_SFNSLOT2SLOT
(
mac
->
nr_ue_emul_l1
.
harq
[
i
].
crc_rx_ind
_sfn_slot
),
nr_ul_tti_req_queue
.
num_items
);
NFAPI_SFNSLOT2SLOT
(
mac
->
nr_ue_emul_l1
.
harq
[
i
].
active_ul_harq
_sfn_slot
),
nr_ul_tti_req_queue
.
num_items
);
nfapi_nr_ul_tti_request_t
*
ul_tti_request_crc
=
unqueue_matching
(
&
nr_ul_tti_req_queue
,
MAX_QUEUE_SIZE
,
sfn_slot_matcher
,
&
mac
->
nr_ue_emul_l1
.
harq
[
i
].
crc_rx_ind
_sfn_slot
);
nfapi_nr_ul_tti_request_t
*
ul_tti_request_crc
=
unqueue_matching
(
&
nr_ul_tti_req_queue
,
MAX_QUEUE_SIZE
,
sfn_slot_matcher
,
&
mac
->
nr_ue_emul_l1
.
harq
[
i
].
active_ul_harq
_sfn_slot
);
if
(
ul_tti_request_crc
&&
ul_tti_request_crc
->
n_pdus
>
0
)
if
(
ul_tti_request_crc
&&
ul_tti_request_crc
->
n_pdus
>
0
)
{
{
check_and_process_dci
(
NULL
,
NULL
,
NULL
,
ul_tti_request_crc
);
check_and_process_dci
(
NULL
,
NULL
,
NULL
,
ul_tti_request_crc
);
...
...
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
987363b8
...
@@ -104,8 +104,6 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -104,8 +104,6 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
rx_ind
->
header
.
message_id
=
NFAPI_NR_PHY_MSG_TYPE_RX_DATA_INDICATION
;
rx_ind
->
header
.
message_id
=
NFAPI_NR_PHY_MSG_TYPE_RX_DATA_INDICATION
;
rx_ind
->
sfn
=
scheduled_response
->
ul_config
->
sfn
;
rx_ind
->
sfn
=
scheduled_response
->
ul_config
->
sfn
;
rx_ind
->
slot
=
scheduled_response
->
ul_config
->
slot
;
rx_ind
->
slot
=
scheduled_response
->
ul_config
->
slot
;
LOG_I
(
NR_MAC
,
"This is sched sfn/sl [%d %d] and rx sfn/sl [%d %d]
\n
"
,
scheduled_response
->
frame
,
scheduled_response
->
slot
,
rx_ind
->
sfn
,
rx_ind
->
slot
);
rx_ind
->
number_of_pdus
=
scheduled_response
->
tx_request
->
number_of_pdus
;
rx_ind
->
number_of_pdus
=
scheduled_response
->
tx_request
->
number_of_pdus
;
rx_ind
->
pdu_list
=
CALLOC
(
rx_ind
->
number_of_pdus
,
sizeof
(
*
rx_ind
->
pdu_list
));
rx_ind
->
pdu_list
=
CALLOC
(
rx_ind
->
number_of_pdus
,
sizeof
(
*
rx_ind
->
pdu_list
));
for
(
int
j
=
0
;
j
<
rx_ind
->
number_of_pdus
;
j
++
)
for
(
int
j
=
0
;
j
<
rx_ind
->
number_of_pdus
;
j
++
)
...
@@ -117,7 +115,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -117,7 +115,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
rx_ind
->
pdu_list
[
j
].
pdu
=
CALLOC
(
tx_req_body
->
pdu_length
,
sizeof
(
*
rx_ind
->
pdu_list
[
j
].
pdu
));
rx_ind
->
pdu_list
[
j
].
pdu
=
CALLOC
(
tx_req_body
->
pdu_length
,
sizeof
(
*
rx_ind
->
pdu_list
[
j
].
pdu
));
memcpy
(
rx_ind
->
pdu_list
[
j
].
pdu
,
tx_req_body
->
pdu
,
tx_req_body
->
pdu_length
*
sizeof
(
*
rx_ind
->
pdu_list
[
j
].
pdu
));
memcpy
(
rx_ind
->
pdu_list
[
j
].
pdu
,
tx_req_body
->
pdu
,
tx_req_body
->
pdu_length
*
sizeof
(
*
rx_ind
->
pdu_list
[
j
].
pdu
));
rx_ind
->
pdu_list
[
j
].
rnti
=
pusch_config_pdu
->
rnti
;
rx_ind
->
pdu_list
[
j
].
rnti
=
pusch_config_pdu
->
rnti
;
rx_ind
->
pdu_list
[
j
].
timing_advance
=
scheduled_response
->
tx_request
->
tx_config
.
timing_advance
;
rx_ind
->
pdu_list
[
j
].
timing_advance
=
31
;
rx_ind
->
pdu_list
[
j
].
ul_cqi
=
scheduled_response
->
tx_request
->
tx_config
.
ul_cqi
;
rx_ind
->
pdu_list
[
j
].
ul_cqi
=
scheduled_response
->
tx_request
->
tx_config
.
ul_cqi
;
}
}
...
@@ -130,15 +128,15 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -130,15 +128,15 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
{
{
crc_ind
->
crc_list
[
j
].
handle
=
pusch_config_pdu
->
handle
;
crc_ind
->
crc_list
[
j
].
handle
=
pusch_config_pdu
->
handle
;
crc_ind
->
crc_list
[
j
].
harq_id
=
pusch_config_pdu
->
pusch_data
.
harq_process_id
;
crc_ind
->
crc_list
[
j
].
harq_id
=
pusch_config_pdu
->
pusch_data
.
harq_process_id
;
LOG_
I
(
NR_MAC
,
"This is the harq pid %d for crc_list[%d]
\n
"
,
crc_ind
->
crc_list
[
j
].
harq_id
,
j
);
LOG_
D
(
NR_MAC
,
"This is the harq pid %d for crc_list[%d]
\n
"
,
crc_ind
->
crc_list
[
j
].
harq_id
,
j
);
LOG_
I
(
NR_MAC
,
"This is sched sfn/sl [%d %d] and crc sfn/sl [%d %d]
\n
"
,
LOG_
D
(
NR_MAC
,
"This is sched sfn/sl [%d %d] and crc sfn/sl [%d %d]
\n
"
,
scheduled_response
->
frame
,
scheduled_response
->
slot
,
crc_ind
->
sfn
,
crc_ind
->
slot
);
scheduled_response
->
frame
,
scheduled_response
->
slot
,
crc_ind
->
sfn
,
crc_ind
->
slot
);
crc_ind
->
crc_list
[
j
].
num_cb
=
pusch_config_pdu
->
pusch_data
.
num_cb
;
crc_ind
->
crc_list
[
j
].
num_cb
=
pusch_config_pdu
->
pusch_data
.
num_cb
;
crc_ind
->
crc_list
[
j
].
rnti
=
pusch_config_pdu
->
rnti
;
crc_ind
->
crc_list
[
j
].
rnti
=
pusch_config_pdu
->
rnti
;
crc_ind
->
crc_list
[
j
].
tb_crc_status
=
0
;
crc_ind
->
crc_list
[
j
].
tb_crc_status
=
0
;
crc_ind
->
crc_list
[
j
].
timing_advance
=
scheduled_response
->
tx_request
->
tx_config
.
timing_advance
;
crc_ind
->
crc_list
[
j
].
timing_advance
=
31
;
crc_ind
->
crc_list
[
j
].
ul_cqi
=
255
;
crc_ind
->
crc_list
[
j
].
ul_cqi
=
255
;
mac
->
nr_ue_emul_l1
.
harq
[
crc_ind
->
crc_list
[
j
].
harq_id
].
crc_rx_ind
_sfn_slot
=
NFAPI_SFNSLOT2HEX
(
crc_ind
->
sfn
,
crc_ind
->
slot
);
mac
->
nr_ue_emul_l1
.
harq
[
crc_ind
->
crc_list
[
j
].
harq_id
].
active_ul_harq
_sfn_slot
=
NFAPI_SFNSLOT2HEX
(
crc_ind
->
sfn
,
crc_ind
->
slot
);
LOG_D
(
NR_MAC
,
"This is sched sfn/sl [%d %d] and crc sfn/sl [%d %d] with mcs_index in ul_cqi -> %d
\n
"
,
LOG_D
(
NR_MAC
,
"This is sched sfn/sl [%d %d] and crc sfn/sl [%d %d] with mcs_index in ul_cqi -> %d
\n
"
,
scheduled_response
->
frame
,
scheduled_response
->
slot
,
crc_ind
->
sfn
,
crc_ind
->
slot
,
pusch_config_pdu
->
mcs_index
);
scheduled_response
->
frame
,
scheduled_response
->
slot
,
crc_ind
->
sfn
,
crc_ind
->
slot
,
pusch_config_pdu
->
mcs_index
);
}
}
...
@@ -166,8 +164,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -166,8 +164,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
crc_ind
=
NULL
;
crc_ind
=
NULL
;
}
}
LOG_I
(
PHY
,
"In %s: [%d, %d] Filled queue rx/crc_ind which was filled by ulconfig.
\n
"
,
__FUNCTION__
,
LOG_D
(
PHY
,
"In %s: Filled queue rx/crc_ind which was filled by ulconfig.
\n
"
,
__FUNCTION__
);
scheduled_response
->
frame
,
scheduled_response
->
slot
);
scheduled_response
->
tx_request
->
number_of_pdus
=
0
;
scheduled_response
->
tx_request
->
number_of_pdus
=
0
;
}
}
...
@@ -204,8 +201,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -204,8 +201,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
pdu_0_1
->
ul_cqi
=
255
;
pdu_0_1
->
ul_cqi
=
255
;
pdu_0_1
->
timing_advance
=
0
;
pdu_0_1
->
timing_advance
=
0
;
pdu_0_1
->
rssi
=
0
;
pdu_0_1
->
rssi
=
0
;
LOG_I
(
NR_PHY
,
"In %s: UCI SFN/SLOT: [%d, %d] and mac->nr_ue_emul_l1.num_harq %d
\n
"
,
__FUNCTION__
,
uci_ind
->
sfn
,
uci_ind
->
slot
,
mac
->
nr_ue_emul_l1
.
num_harqs
);
if
(
mac
->
nr_ue_emul_l1
.
num_harqs
>
0
)
{
if
(
mac
->
nr_ue_emul_l1
.
num_harqs
>
0
)
{
int
harq_index
=
0
;
int
harq_index
=
0
;
pdu_0_1
->
pduBitmap
=
2
;
// (value->pduBitmap >> 1) & 0x01) == HARQ and (value->pduBitmap) & 0x01) == SR
pdu_0_1
->
pduBitmap
=
2
;
// (value->pduBitmap >> 1) & 0x01) == HARQ and (value->pduBitmap) & 0x01) == SR
...
@@ -214,29 +210,16 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -214,29 +210,16 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
pdu_0_1
->
harq
->
harq_confidence_level
=
0
;
pdu_0_1
->
harq
->
harq_confidence_level
=
0
;
pdu_0_1
->
harq
->
harq_list
=
CALLOC
(
pdu_0_1
->
harq
->
num_harq
,
sizeof
(
*
pdu_0_1
->
harq
->
harq_list
));
pdu_0_1
->
harq
->
harq_list
=
CALLOC
(
pdu_0_1
->
harq
->
num_harq
,
sizeof
(
*
pdu_0_1
->
harq
->
harq_list
));
int
harq_pid
=
-
1
;
int
harq_pid
=
-
1
;
for
(
int
k
=
0
;
k
<
16
;
k
++
)
for
(
int
k
=
0
;
k
<
NR_MAX_HARQ_PROCESSES
;
k
++
)
{
{
LOG_I
(
NR_MAC
,
"HARQ PID %d active = %d saved sfn_slot = %d.%d vs current sfn.slot %d.%d
\n
"
,
k
,
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active
,
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active_harq_sfn
,
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active_harq_slot
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
if
(
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active
&&
if
(
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active
&&
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active_harq_sfn
==
uci_ind
->
sfn
&&
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active_
dl_
harq_sfn
==
uci_ind
->
sfn
&&
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active_harq_slot
==
uci_ind
->
slot
)
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active_
dl_
harq_slot
==
uci_ind
->
slot
)
{
{
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active
=
false
;
mac
->
nr_ue_emul_l1
.
harq
[
k
].
active
=
false
;
harq_pid
=
k
;
harq_pid
=
k
;
LOG_I
(
NR_MAC
,
"Setting harq_pid = %d and num_harqs %d for %d.%d
\n
"
,
k
,
pdu_0_1
->
harq
->
num_harq
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
pdu_0_1
->
harq
->
harq_list
[
harq_index
].
harq_value
=
!
mac
->
dl_harq_info
[
k
].
ack
;
pdu_0_1
->
harq
->
harq_list
[
harq_index
].
harq_value
=
!
mac
->
dl_harq_info
[
k
].
ack
;
harq_index
++
;
harq_index
++
;
LOG_I
(
NR_PHY
,
"In %s: Building uci_ind_%d with num_harqs %d and pdu_bitmap %d
\n
"
"uci_num %d, SFN/SLOT: [%d, %d]
\n
"
,
__FUNCTION__
,
uci_ind
->
uci_list
[
0
].
pdu_type
,
pdu_0_1
->
harq
->
num_harq
,
pdu_0_1
->
pduBitmap
,
uci_ind
->
num_ucis
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
}
}
}
}
AssertFatal
(
harq_pid
!=
-
1
,
"No active harq_pid, sfn_slot = %u.%u"
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
AssertFatal
(
harq_pid
!=
-
1
,
"No active harq_pid, sfn_slot = %u.%u"
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
...
@@ -244,12 +227,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
...
@@ -244,12 +227,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
}
}
}
}
LOG_I
(
NR_PHY
,
"In %s: Sending uci_ind_%d which was filled by ulconfig.
\n
"
LOG_I
(
NR_PHY
,
"Sending UCI with %d PDUs in sfn.slot %d/%d
\n
"
,
"uci_num %d, SFN/SLOT: [%d, %d] and pdu_bitmap %d
\n
"
,
__FUNCTION__
,
uci_ind
->
uci_list
[
0
].
pdu_type
,
uci_ind
->
num_ucis
,
uci_ind
->
sfn
,
uci_ind
->
slot
,
uci_ind
->
uci_list
[
0
].
pucch_pdu_format_0_1
.
pduBitmap
);
LOG_I
(
NR_MAC
,
"Sending UCI with %d PDUs in sfn.slot %d/%d
\n
"
,
uci_ind
->
num_ucis
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
uci_ind
->
num_ucis
,
uci_ind
->
sfn
,
uci_ind
->
slot
);
NR_UL_IND_t
UL_INFO
=
{
NR_UL_IND_t
UL_INFO
=
{
.
uci_ind
=
*
uci_ind
,
.
uci_ind
=
*
uci_ind
,
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
View file @
987363b8
...
@@ -269,20 +269,20 @@ typedef struct {
...
@@ -269,20 +269,20 @@ typedef struct {
scheduled SFN/Slot transmission for the ACK/NAK. If we
scheduled SFN/Slot transmission for the ACK/NAK. If we
do not save it, then we have to calculate it again as the
do not save it, then we have to calculate it again as the
NRUE MAC layer already does in get_downlink_ack(). */
NRUE MAC layer already does in get_downlink_ack(). */
int
active_harq_sfn
;
int
active_
dl_
harq_sfn
;
int
active_harq_slot
;
int
active_
dl_
harq_slot
;
int
crc_rx_ind
_sfn_slot
;
int
active_ul_harq
_sfn_slot
;
bool
active
;
bool
active
;
}
emul_l1_harq_t
;
}
emul_l1_harq_t
;
typedef
struct
{
typedef
struct
{
bool
expected_sib
;
bool
expected_sib
;
bool
index_has_sib
[
16
];
bool
index_has_sib
[
NR_MAX_HARQ_PROCESSES
];
bool
expected_rar
;
bool
expected_rar
;
bool
index_has_rar
[
16
];
bool
index_has_rar
[
NR_MAX_HARQ_PROCESSES
];
bool
expected_dci
;
bool
expected_dci
;
bool
index_has_dci
[
16
];
bool
index_has_dci
[
NR_MAX_HARQ_PROCESSES
];
emul_l1_harq_t
harq
[
16
];
emul_l1_harq_t
harq
[
NR_MAX_HARQ_PROCESSES
];
int
active_uci_sfn_slot
;
int
active_uci_sfn_slot
;
int
num_srs
;
int
num_srs
;
int
num_harqs
;
int
num_harqs
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
987363b8
...
@@ -432,7 +432,7 @@ typedef struct {
...
@@ -432,7 +432,7 @@ typedef struct {
// Defined for abstracted mode
// Defined for abstracted mode
nr_downlink_indication_t
dl_info
;
nr_downlink_indication_t
dl_info
;
NR_UE_HARQ_STATUS_t
dl_harq_info
[
16
];
NR_UE_HARQ_STATUS_t
dl_harq_info
[
NR_MAX_HARQ_PROCESSES
];
nr_emulated_l1_t
nr_ue_emul_l1
;
nr_emulated_l1_t
nr_ue_emul_l1
;
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
987363b8
This diff is collapsed.
Click to expand it.
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
987363b8
...
@@ -465,7 +465,7 @@ static void fill_rx_ind(nfapi_nr_pdu_t *pdu_list, fapi_nr_rx_indication_t *rx_in
...
@@ -465,7 +465,7 @@ static void fill_rx_ind(nfapi_nr_pdu_t *pdu_list, fapi_nr_rx_indication_t *rx_in
{
{
length
+=
pdu_list
->
TLVs
[
j
].
length
;
length
+=
pdu_list
->
TLVs
[
j
].
length
;
}
}
LOG_I
(
NR_PHY
,
"
Elkadi
%s: num_tlv %d and length %d, pdu index %d
\n
"
,
LOG_I
(
NR_PHY
,
"%s: num_tlv %d and length %d, pdu index %d
\n
"
,
__FUNCTION__
,
pdu_list
->
num_TLV
,
length
,
pdu_idx
);
__FUNCTION__
,
pdu_list
->
num_TLV
,
length
,
pdu_idx
);
uint8_t
*
pdu
=
malloc
(
length
);
uint8_t
*
pdu
=
malloc
(
length
);
AssertFatal
(
pdu
!=
NULL
,
"%s: Out of memory in malloc"
,
__FUNCTION__
);
AssertFatal
(
pdu
!=
NULL
,
"%s: Out of memory in malloc"
,
__FUNCTION__
);
...
@@ -618,7 +618,6 @@ static void copy_ul_dci_data_req_to_dl_info(nr_downlink_indication_t *dl_info, n
...
@@ -618,7 +618,6 @@ static void copy_ul_dci_data_req_to_dl_info(nr_downlink_indication_t *dl_info, n
static
bool
send_crc_ind_and_rx_ind
(
int
sfn_slot
)
static
bool
send_crc_ind_and_rx_ind
(
int
sfn_slot
)
{
{
bool
sent_crc_rx
=
true
;
bool
sent_crc_rx
=
true
;
LOG_I
(
NR_MAC
,
"Melissa, This is the num items in crc %d and rx %d
\n
"
,
nr_crc_ind_queue
.
num_items
,
nr_rx_ind_queue
.
num_items
);
nfapi_nr_rx_data_indication_t
*
rx_ind
=
unqueue_matching
(
&
nr_rx_ind_queue
,
MAX_QUEUE_SIZE
,
sfn_slot_matcher
,
&
sfn_slot
);
nfapi_nr_rx_data_indication_t
*
rx_ind
=
unqueue_matching
(
&
nr_rx_ind_queue
,
MAX_QUEUE_SIZE
,
sfn_slot_matcher
,
&
sfn_slot
);
nfapi_nr_crc_indication_t
*
crc_ind
=
unqueue_matching
(
&
nr_crc_ind_queue
,
MAX_QUEUE_SIZE
,
sfn_slot_matcher
,
&
sfn_slot
);
nfapi_nr_crc_indication_t
*
crc_ind
=
unqueue_matching
(
&
nr_crc_ind_queue
,
MAX_QUEUE_SIZE
,
sfn_slot_matcher
,
&
sfn_slot
);
...
@@ -709,10 +708,8 @@ static void fill_dci_from_dl_config(nr_downlink_indication_t*dl_ind, fapi_nr_dl_
...
@@ -709,10 +708,8 @@ static void fill_dci_from_dl_config(nr_downlink_indication_t*dl_ind, fapi_nr_dl_
dl_ind
->
dci_ind
->
dci_list
[
k
].
dci_format
=
rel15_dci
->
dci_format_options
[
j
];
dl_ind
->
dci_ind
->
dci_list
[
k
].
dci_format
=
rel15_dci
->
dci_format_options
[
j
];
LOG_I
(
NR_PHY
,
"format assigned dl_ind->dci_ind->dci_list[k].dci_format %d
\n
"
,
LOG_I
(
NR_PHY
,
"format assigned dl_ind->dci_ind->dci_list[k].dci_format %d
\n
"
,
dl_ind
->
dci_ind
->
dci_list
[
k
].
dci_format
);
dl_ind
->
dci_ind
->
dci_list
[
k
].
dci_format
);
int
CCEind
=
rel15_dci
->
CCE
[
j
];
dl_ind
->
dci_ind
->
dci_list
[
k
].
n_CCE
=
rel15_dci
->
CCE
[
j
];
int
L
=
rel15_dci
->
L
[
j
];
dl_ind
->
dci_ind
->
dci_list
[
k
].
N_CCE
=
rel15_dci
->
L
[
j
];
dl_ind
->
dci_ind
->
dci_list
[
k
].
n_CCE
=
CCEind
;
dl_ind
->
dci_ind
->
dci_list
[
k
].
N_CCE
=
L
;
}
}
}
}
}
}
...
@@ -796,11 +793,9 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
...
@@ -796,11 +793,9 @@ 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
))
LOG_I
(
NR_MAC
,
"Slot %d. calling nr_ue_ul_ind() from %s
\n
"
,
ul_info
.
slot_tx
,
__FUNCTION__
);
nr_ue_ul_indication
(
&
ul_info
);
nr_ue_ul_indication
(
&
ul_info
);
}
}
}
}
}
void
save_nr_measurement_info
(
nfapi_nr_dl_tti_request_t
*
dl_tti_request
)
void
save_nr_measurement_info
(
nfapi_nr_dl_tti_request_t
*
dl_tti_request
)
...
@@ -918,16 +913,10 @@ static void enqueue_nr_nfapi_msg(void *buffer, ssize_t len, nfapi_p7_message_hea
...
@@ -918,16 +913,10 @@ static void enqueue_nr_nfapi_msg(void *buffer, ssize_t len, nfapi_p7_message_hea
LOG_E
(
NR_PHY
,
"Message ul_tti_request failed to unpack
\n
"
);
LOG_E
(
NR_PHY
,
"Message ul_tti_request failed to unpack
\n
"
);
break
;
break
;
}
}
LOG_I
(
NR_PHY
,
"Received an NFAPI_NR_PHY_MSG_TYPE_UL_TTI_REQUEST message in SFN/slot %d %d.
\n
"
,
ul_tti_request
->
SFN
,
ul_tti_request
->
Slot
);
for
(
int
i
=
0
;
i
<
ul_tti_request
->
n_pdus
;
i
++
)
{
for
(
int
i
=
0
;
i
<
ul_tti_request
->
n_pdus
;
i
++
)
{
LOG_I
(
NR_PHY
,
"Received an NFAPI_NR_PHY_MSG_TYPE_UL_TTI_REQUEST pdu_type %d, ra_state %d.
\n
"
,
if
(
ul_tti_request
->
pdus_list
[
i
].
pdu_type
==
NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE
&&
ul_tti_request
->
pdus_list
[
i
].
pdu_type
,
mac
->
ra
.
ra_state
);
if
(
ul_tti_request
->
pdus_list
[
i
].
pdu_type
==
1
&&
mac
->
ra
.
ra_state
>=
RA_SUCCEEDED
)
{
mac
->
ra
.
ra_state
>=
RA_SUCCEEDED
)
{
LOG_I
(
NR_PHY
,
"Received an NFAPI_NR_PHY_MSG_TYPE_UL_TTI_REQUEST that were queueing with rnti %x!
\n
"
,
ul_tti_request
->
pdus_list
[
i
].
pucch_pdu
.
rnti
);
if
(
!
put_queue
(
&
nr_ul_tti_req_queue
,
ul_tti_request
))
if
(
!
put_queue
(
&
nr_ul_tti_req_queue
,
ul_tti_request
))
{
{
LOG_I
(
NR_PHY
,
"put_queue failed for ul_tti_request, calling put_queue_replace.
\n
"
);
LOG_I
(
NR_PHY
,
"put_queue failed for ul_tti_request, calling put_queue_replace.
\n
"
);
...
@@ -937,8 +926,6 @@ static void enqueue_nr_nfapi_msg(void *buffer, ssize_t len, nfapi_p7_message_hea
...
@@ -937,8 +926,6 @@ static void enqueue_nr_nfapi_msg(void *buffer, ssize_t len, nfapi_p7_message_hea
break
;
break
;
}
}
else
if
(
mac
->
ra
.
ra_state
<
RA_SUCCEEDED
)
{
else
if
(
mac
->
ra
.
ra_state
<
RA_SUCCEEDED
)
{
LOG_I
(
NR_PHY
,
"Received an NFAPI_NR_PHY_MSG_TYPE_UL_TTI_REQUEST before RA_SUCEEDED that were queueing with rnti %x!
\n
"
,
ul_tti_request
->
pdus_list
[
i
].
pucch_pdu
.
rnti
);
if
(
!
put_queue
(
&
nr_ul_tti_req_queue
,
ul_tti_request
))
if
(
!
put_queue
(
&
nr_ul_tti_req_queue
,
ul_tti_request
))
{
{
LOG_I
(
NR_PHY
,
"put_queue failed for ul_tti_request, calling put_queue_replace.
\n
"
);
LOG_I
(
NR_PHY
,
"put_queue failed for ul_tti_request, calling put_queue_replace.
\n
"
);
...
@@ -1098,7 +1085,7 @@ int handle_dci(module_id_t module_id, int cc_id, unsigned int gNB_index, frame_t
...
@@ -1098,7 +1085,7 @@ int handle_dci(module_id_t module_id, int cc_id, unsigned int gNB_index, frame_t
// L2 Abstraction Layer
// L2 Abstraction Layer
// Note: sdu should always be processed because data and timing advance updates are transmitted by the UE
// Note: sdu should always be processed because data and timing advance updates are transmitted by the UE
int8_t
handle_dlsch
(
nr_downlink_indication_t
*
dl_info
,
NR_UL_TIME_ALIGNMENT_t
*
ul_time_alignment
,
int
pdu_id
){
int8_t
handle_dlsch
(
nr_downlink_indication_t
*
dl_info
,
NR_UL_TIME_ALIGNMENT_t
*
ul_time_alignment
,
int
pdu_id
){
if
(
get_softmodem_params
()
->
emulate_l1
)
dl_info
->
rx_ind
->
rx_indication_body
[
pdu_id
].
pdsch_pdu
.
harq_pid
=
g_harq_pid
;
dl_info
->
rx_ind
->
rx_indication_body
[
pdu_id
].
pdsch_pdu
.
harq_pid
=
g_harq_pid
;
update_harq_status
(
dl_info
->
module_id
,
update_harq_status
(
dl_info
->
module_id
,
...
@@ -1147,8 +1134,6 @@ int nr_ue_ul_indication(nr_uplink_indication_t *ul_info){
...
@@ -1147,8 +1134,6 @@ int nr_ue_ul_indication(nr_uplink_indication_t *ul_info){
if
(
is_nr_UL_slot
(
tdd_UL_DL_ConfigurationCommon
,
ul_info
->
slot_tx
,
mac
->
frame_type
)
&&
!
get_softmodem_params
()
->
phy_test
)
if
(
is_nr_UL_slot
(
tdd_UL_DL_ConfigurationCommon
,
ul_info
->
slot_tx
,
mac
->
frame_type
)
&&
!
get_softmodem_params
()
->
phy_test
)
nr_ue_prach_scheduler
(
module_id
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
thread_id
);
nr_ue_prach_scheduler
(
module_id
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
thread_id
);
LOG_I
(
NR_MAC
,
"In %s():%d calling nr_ue_pucch_scheduler in %d.%d
\n
"
,
__FUNCTION__
,
__LINE__
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
);
if
(
is_nr_UL_slot
(
tdd_UL_DL_ConfigurationCommon
,
ul_info
->
slot_tx
,
mac
->
frame_type
)
&&
if
(
is_nr_UL_slot
(
tdd_UL_DL_ConfigurationCommon
,
ul_info
->
slot_tx
,
mac
->
frame_type
)
&&
!
get_softmodem_params
()
->
emulate_l1
)
!
get_softmodem_params
()
->
emulate_l1
)
nr_ue_pucch_scheduler
(
module_id
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
thread_id
);
nr_ue_pucch_scheduler
(
module_id
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
thread_id
);
...
@@ -1184,12 +1169,8 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
...
@@ -1184,12 +1169,8 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
if
(
dl_info
&&
dl_info
->
dci_ind
&&
dl_info
->
dci_ind
->
number_of_dcis
)
{
if
(
dl_info
&&
dl_info
->
dci_ind
&&
dl_info
->
dci_ind
->
number_of_dcis
)
{
LOG_D
(
MAC
,
"[L2][IF MODULE][DL INDICATION][DCI_IND]
\n
"
);
LOG_D
(
MAC
,
"[L2][IF MODULE][DL INDICATION][DCI_IND]
\n
"
);
for
(
int
i
=
0
;
i
<
dl_info
->
dci_ind
->
number_of_dcis
;
i
++
)
{
for
(
int
i
=
0
;
i
<
dl_info
->
dci_ind
->
number_of_dcis
;
i
++
)
{
LOG_D
(
MAC
,
">>>NR_IF_Module i=%d, dl_info->dci_ind->number_of_dcis=%d
\n
"
,
i
,
dl_info
->
dci_ind
->
number_of_dcis
);
fapi_nr_dci_indication_pdu_t
*
dci_index
=
dl_info
->
dci_ind
->
dci_list
+
i
;
fapi_nr_dci_indication_pdu_t
*
dci_index
=
dl_info
->
dci_ind
->
dci_list
+
i
;
LOG_I
(
MAC
,
">>>NR_IF_Module i=%d, dl_info->dci_ind->number_of_dcis=%d, format %d, harq_pid %d
\n
"
,
i
,
dl_info
->
dci_ind
->
number_of_dcis
,
dci_index
->
dci_format
,
mac
->
def_dci_pdu_rel15
[
dci_index
->
dci_format
].
harq_pid
);
nr_scheduled_response_t
scheduled_response
;
nr_scheduled_response_t
scheduled_response
;
int8_t
ret
=
handle_dci
(
dl_info
->
module_id
,
int8_t
ret
=
handle_dci
(
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
cc_id
,
...
@@ -1200,7 +1181,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
...
@@ -1200,7 +1181,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
/* The check below filters out UL_DCIs (format 7) which are being processed as DL_DCIs. */
/* The check below filters out UL_DCIs (format 7) which are being processed as DL_DCIs. */
if
(
dci_index
->
dci_format
==
7
&&
mac
->
ra
.
ra_state
==
RA_SUCCEEDED
)
{
if
(
dci_index
->
dci_format
==
7
&&
mac
->
ra
.
ra_state
==
RA_SUCCEEDED
)
{
LOG_
I
(
NR_MAC
,
"We are filtering a UL_DCI to prevent it from being treated like a DL_DCI
\n
"
);
LOG_
D
(
NR_MAC
,
"We are filtering a UL_DCI to prevent it from being treated like a DL_DCI
\n
"
);
break
;
break
;
}
}
dci_pdu_rel15_t
*
def_dci_pdu_rel15
=
&
mac
->
def_dci_pdu_rel15
[
dci_index
->
dci_format
];
dci_pdu_rel15_t
*
def_dci_pdu_rel15
=
&
mac
->
def_dci_pdu_rel15
[
dci_index
->
dci_format
];
...
@@ -1214,7 +1195,8 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
...
@@ -1214,7 +1195,8 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
fill_scheduled_response
(
&
scheduled_response
,
dl_config
,
NULL
,
NULL
,
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
frame
,
dl_info
->
slot
,
dl_info
->
thread_id
);
fill_scheduled_response
(
&
scheduled_response
,
dl_config
,
NULL
,
NULL
,
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
frame
,
dl_info
->
slot
,
dl_info
->
thread_id
);
nr_ue_if_module_inst
[
module_id
]
->
scheduled_response
(
&
scheduled_response
);
nr_ue_if_module_inst
[
module_id
]
->
scheduled_response
(
&
scheduled_response
);
}
}
//memset(def_dci_pdu_rel15, 0, sizeof(*def_dci_pdu_rel15));
if
(
!
get_softmodem_params
()
->
emulate_l1
)
memset
(
def_dci_pdu_rel15
,
0
,
sizeof
(
*
def_dci_pdu_rel15
));
}
}
free
(
dl_info
->
dci_ind
);
free
(
dl_info
->
dci_ind
);
dl_info
->
dci_ind
=
NULL
;
dl_info
->
dci_ind
=
NULL
;
...
...
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