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
wangjie
OpenXG-RAN
Commits
8ec4be0b
Commit
8ec4be0b
authored
Jan 06, 2021
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Save TB in MAC, transmit TX_req also on retx
parent
c65b14c1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
13 deletions
+24
-13
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+20
-13
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+4
-0
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
8ec4be0b
...
@@ -805,7 +805,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
...
@@ -805,7 +805,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
retInfo
->
mcs
,
retInfo
->
mcs
,
retInfo
->
numDmrsCdmGrpsNoData
);
retInfo
->
numDmrsCdmGrpsNoData
);
/* we do not have to do anything, since we do not require to get data
/* we do not have to do anything, since we do not require to get data
* from RLC
, encode MAC CEs, or copy data to FAPI structures
*/
* from RLC
or encode MAC CEs. The TX_req structure is filled below
*/
LOG_W
(
MAC
,
LOG_W
(
MAC
,
"%d.%2d DL retransmission UE %d/RNTI %04x HARQ PID %d round %d NDI %d
\n
"
,
"%d.%2d DL retransmission UE %d/RNTI %04x HARQ PID %d round %d NDI %d
\n
"
,
frame
,
frame
,
...
@@ -815,20 +815,16 @@ void nr_schedule_ue_spec(module_id_t module_id,
...
@@ -815,20 +815,16 @@ void nr_schedule_ue_spec(module_id_t module_id,
current_harq_pid
,
current_harq_pid
,
harq
->
round
,
harq
->
round
,
harq
->
ndi
);
harq
->
ndi
);
AssertFatal
(
harq
->
tb_size
==
TBS
,
"UE %d mismatch between scheduled TBS and buffered TB for HARQ PID %d
\n
"
,
UE_id
,
current_harq_pid
);
}
else
{
/* initial transmission */
}
else
{
/* initial transmission */
LOG_D
(
MAC
,
"[%s] Initial HARQ transmission in %d.%d
\n
"
,
__FUNCTION__
,
frame
,
slot
);
LOG_D
(
MAC
,
"[%s] Initial HARQ transmission in %d.%d
\n
"
,
__FUNCTION__
,
frame
,
slot
);
const
int
ntx_req
=
gNB_mac
->
TX_req
[
CC_id
].
Number_of_PDUs
;
nfapi_nr_pdu_t
*
tx_req
=
&
gNB_mac
->
TX_req
[
CC_id
].
pdu_list
[
ntx_req
];
harq
->
tb_size
=
TBS
;
tx_req
->
PDU_length
=
TBS
;
uint8_t
*
buf
=
(
uint8_t
*
)
harq
->
tb
;
tx_req
->
PDU_index
=
pduindex
;
tx_req
->
num_TLV
=
1
;
tx_req
->
TLVs
[
0
].
length
=
TBS
+
2
;
/* pointer to directly generate the PDU into the nFAPI structure */
uint8_t
*
buf
=
(
uint8_t
*
)
tx_req
->
TLVs
[
0
].
value
.
direct
;
gNB_mac
->
TX_req
[
CC_id
].
Number_of_PDUs
++
;
gNB_mac
->
TX_req
[
CC_id
].
SFN
=
frame
;
gNB_mac
->
TX_req
[
CC_id
].
Slot
=
slot
;
/* first, write all CEs that might be there */
/* first, write all CEs that might be there */
int
written
=
nr_write_ce_dlsch_pdu
(
module_id
,
int
written
=
nr_write_ce_dlsch_pdu
(
module_id
,
...
@@ -952,9 +948,20 @@ void nr_schedule_ue_spec(module_id_t module_id,
...
@@ -952,9 +948,20 @@ void nr_schedule_ue_spec(module_id_t module_id,
}
}
T
(
T_GNB_MAC_DL_PDU_WITH_DATA
,
T_INT
(
module_id
),
T_INT
(
CC_id
),
T_INT
(
rnti
),
T
(
T_GNB_MAC_DL_PDU_WITH_DATA
,
T_INT
(
module_id
),
T_INT
(
CC_id
),
T_INT
(
rnti
),
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
current_harq_pid
),
T_BUFFER
(
buf
,
TBS
));
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
current_harq_pid
),
T_BUFFER
(
harq
->
tb
,
TBS
));
}
}
const
int
ntx_req
=
gNB_mac
->
TX_req
[
CC_id
].
Number_of_PDUs
;
nfapi_nr_pdu_t
*
tx_req
=
&
gNB_mac
->
TX_req
[
CC_id
].
pdu_list
[
ntx_req
];
tx_req
->
PDU_length
=
TBS
;
tx_req
->
PDU_index
=
pduindex
;
tx_req
->
num_TLV
=
1
;
tx_req
->
TLVs
[
0
].
length
=
TBS
+
2
;
memcpy
(
tx_req
->
TLVs
[
0
].
value
.
direct
,
harq
->
tb
,
TBS
);
gNB_mac
->
TX_req
[
CC_id
].
Number_of_PDUs
++
;
gNB_mac
->
TX_req
[
CC_id
].
SFN
=
frame
;
gNB_mac
->
TX_req
[
CC_id
].
Slot
=
slot
;
/* mark UE as scheduled */
/* mark UE as scheduled */
sched_ctrl
->
rbSize
=
0
;
sched_ctrl
->
rbSize
=
0
;
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
8ec4be0b
...
@@ -346,6 +346,10 @@ typedef struct NR_UE_harq {
...
@@ -346,6 +346,10 @@ typedef struct NR_UE_harq {
uint8_t
ndi
;
uint8_t
ndi
;
uint8_t
round
;
uint8_t
round
;
uint16_t
feedback_slot
;
uint16_t
feedback_slot
;
/* Transport block to be sent using this HARQ process */
uint32_t
tb
[
16384
];
uint32_t
tb_size
;
}
NR_UE_harq_t
;
}
NR_UE_harq_t
;
typedef
struct
NR_UE_old_sched
{
typedef
struct
NR_UE_old_sched
{
...
...
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