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
spbro
OpenXG-RAN
Commits
6f481e09
Commit
6f481e09
authored
Jun 22, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
abort rtx if RI decreased
parent
12a23fb1
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
29 additions
and
9 deletions
+29
-9
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+24
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+2
-8
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+2
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-0
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
6f481e09
...
...
@@ -365,6 +365,18 @@ void nr_store_dlsch_buffer(module_id_t module_id,
}
}
void
abort_nr_dl_harq
(
NR_UE_info_t
*
UE
,
int8_t
harq_pid
)
{
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
NR_UE_harq_t
*
harq
=
&
sched_ctrl
->
harq_processes
[
harq_pid
];
harq
->
ndi
^=
1
;
harq
->
round
=
0
;
UE
->
mac_stats
.
dl
.
errors
++
;
add_tail_nr_list
(
&
sched_ctrl
->
available_dl_harq
,
harq_pid
);
}
bool
allocate_dl_retransmission
(
module_id_t
module_id
,
frame_t
frame
,
sub_frame_t
slot
,
...
...
@@ -378,6 +390,16 @@ bool allocate_dl_retransmission(module_id_t module_id,
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
NR_sched_pdsch_t
*
retInfo
=
&
sched_ctrl
->
harq_processes
[
current_harq_pid
].
sched_pdsch
;
NR_CellGroupConfig_t
*
cg
=
UE
->
CellGroup
;
NR_pdsch_semi_static_t
*
ps
=
&
sched_ctrl
->
pdsch_semi_static
;
//TODO remove this and handle retransmission with old nrOfLayers
// once ps structure is removed
if
(
ps
->
nrOfLayers
<
retInfo
->
nrOfLayers
)
{
LOG_W
(
NR_MAC
,
"Cannot schedule retransmission. RI changed from %d to %d
\n
"
,
retInfo
->
nrOfLayers
,
ps
->
nrOfLayers
);
abort_nr_dl_harq
(
UE
,
current_harq_pid
);
return
false
;
}
NR_BWP_DownlinkDedicated_t
*
bwpd
=
cg
&&
...
...
@@ -401,7 +423,6 @@ bool allocate_dl_retransmission(module_id_t module_id,
const
uint16_t
bwpSize
=
coresetid
==
0
?
RC
.
nrmac
[
module_id
]
->
cset0_bwp_size
:
NRRIV2BW
(
genericParameters
->
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
rbStart
=
0
;
// start wrt BWPstart
NR_pdsch_semi_static_t
*
ps
=
&
sched_ctrl
->
pdsch_semi_static
;
int
rbSize
=
0
;
const
int
tda
=
get_dl_tda
(
RC
.
nrmac
[
module_id
],
scc
,
slot
);
AssertFatal
(
tda
>=
0
,
"Unable to find PDSCH time domain allocation in list
\n
"
);
...
...
@@ -1355,6 +1376,8 @@ void nr_schedule_ue_spec(module_id_t module_id,
/* save which time allocation has been used, to be used on
* retransmissions */
harq
->
sched_pdsch
.
time_domain_allocation
=
ps
->
time_domain_allocation
;
/* save nr of layers for retransmissions */
harq
->
sched_pdsch
.
nrOfLayers
=
ps
->
nrOfLayers
;
// ta command is sent, values are reset
if
(
sched_ctrl
->
ta_apply
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
6f481e09
...
...
@@ -826,14 +826,8 @@ static void handle_dl_harq(NR_UE_info_t * UE,
harq
->
ndi
^=
1
;
}
else
if
(
harq
->
round
>=
harq_round_max
-
1
)
{
add_tail_nr_list
(
&
UE
->
UE_sched_ctrl
.
available_dl_harq
,
harq_pid
);
harq
->
round
=
0
;
harq
->
ndi
^=
1
;
NR_mac_stats_t
*
stats
=
&
UE
->
mac_stats
;
stats
->
dl
.
errors
++
;
LOG_D
(
NR_MAC
,
"retransmission error for UE %04x (total %"
PRIu64
")
\n
"
,
UE
->
rnti
,
stats
->
dl
.
errors
);
abort_nr_dl_harq
(
UE
,
harq_pid
);
LOG_D
(
NR_MAC
,
"retransmission error for UE %04x (total %"
PRIu64
")
\n
"
,
UE
->
rnti
,
UE
->
mac_stats
.
dl
.
errors
);
}
else
{
LOG_D
(
PHY
,
"NACK for: pid %d, ue %04x
\n
"
,
harq_pid
,
UE
->
rnti
);
add_tail_nr_list
(
&
UE
->
UE_sched_ctrl
.
retrans_dl_harq
,
harq_pid
);
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
6f481e09
...
...
@@ -532,4 +532,6 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
void
process_CellGroup
(
NR_CellGroupConfig_t
*
CellGroup
,
NR_UE_sched_ctrl_t
*
sched_ctrl
);
void
abort_nr_dl_harq
(
NR_UE_info_t
*
UE
,
int8_t
harq_pid
);
#endif
/*__LAYER2_NR_MAC_PROTO_H__*/
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
6f481e09
...
...
@@ -440,6 +440,7 @@ typedef struct NR_sched_pdsch {
/// only important for retransmissions; otherwise, the TDA in
/// NR_pdsch_semi_static_t has precedence
int
time_domain_allocation
;
uint8_t
nrOfLayers
;
}
NR_sched_pdsch_t
;
typedef
struct
NR_UE_harq
{
...
...
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