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
promise
OpenXG-RAN
Commits
db6eeb27
Commit
db6eeb27
authored
5 years ago
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing mac pdu generation. to be checked by fraunhofer
parent
b1f224d1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
53 deletions
+33
-53
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+3
-3
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+30
-50
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
db6eeb27
...
@@ -164,13 +164,13 @@ int nr_generate_dlsch_pdu(module_id_t module_idP,
...
@@ -164,13 +164,13 @@ int nr_generate_dlsch_pdu(module_id_t module_idP,
((
NR_MAC_SUBHEADER_FIXED
*
)
mac_pdu_ptr
)
->
LCID
=
DL_SCH_LCID_PADDING
;
((
NR_MAC_SUBHEADER_FIXED
*
)
mac_pdu_ptr
)
->
LCID
=
DL_SCH_LCID_PADDING
;
mac_pdu_ptr
++
;
mac_pdu_ptr
++
;
// compute final offset
offset
=
((
unsigned
char
*
)
mac_pdu_ptr
-
mac_pdu
);
}
else
{
}
else
{
// no MAC subPDU with padding
// no MAC subPDU with padding
}
}
// compute final offset
offset
=
((
unsigned
char
*
)
mac_pdu_ptr
-
mac_pdu
);
//printf("Offset %d \n", ((unsigned char *) mac_pdu_ptr - mac_pdu));
//printf("Offset %d \n", ((unsigned char *) mac_pdu_ptr - mac_pdu));
return
offset
;
return
offset
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
db6eeb27
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
extern
RAN_CONTEXT_t
RC
;
extern
RAN_CONTEXT_t
RC
;
//#define ENABLE_MAC_PAYLOAD_DEBUG 1
//#define ENABLE_MAC_PAYLOAD_DEBUG 1
uint8_t
mac_p
ayload
[
MAX_NR_DLSCH_PAYLOAD_BYTES
];
uint8_t
mac_p
du
[
MAX_NR_DLSCH_PAYLOAD_BYTES
];
/*Scheduling of DLSCH with associated DCI in common search space
/*Scheduling of DLSCH with associated DCI in common search space
* current version has only a DCI for type 1 PDCCH for C_RNTI*/
* current version has only a DCI for type 1 PDCCH for C_RNTI*/
...
@@ -280,18 +280,11 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -280,18 +280,11 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
int
padding
=
0
,
post_padding
=
0
,
ta_len
=
0
,
header_length_total
=
0
,
sdu_length_total
=
0
,
num_sdus
=
0
;
int
padding
=
0
,
post_padding
=
0
,
ta_len
=
0
,
header_length_total
=
0
,
sdu_length_total
=
0
,
num_sdus
=
0
;
int
CC_id
,
lcid
,
offset
,
i
,
j
=
0
,
k
=
0
,
header_length_last
,
TBS_bytes
;
int
CC_id
,
lcid
,
offset
,
i
,
j
=
0
,
k
=
0
,
header_length_last
,
TBS_bytes
;
// hardcoded parameters to 30 kHz
// for DMRS configuration type 1
unsigned
char
dlsch_buffer
[
MAX_NR_DLSCH_PAYLOAD_BYTES
];
uint8_t
Qm
=
2
;
uint16_t
R
=
697
;
uint16_t
nb_rb
=
50
;
uint32_t
TBS
=
nr_compute_tbs
(
Qm
,
R
,
nb_rb
,
12
,
6
,
0
,
1
)
/
8
;
// this is in bits TODO use nr_get_tbs
int
UE_id
=
0
;
int
UE_id
=
0
;
uint16_t
rnti
=
0x1234
;
uint16_t
rnti
=
0x1234
;
uint16_t
sfn_sf
=
frameP
<<
7
|
slotP
;
uint16_t
sfn_sf
=
frameP
<<
7
|
slotP
;
printf
(
"TBS=%d
\n
"
,
TBS
)
;
uint8_t
mac_sdus
[
MAX_NR_DLSCH_PAYLOAD_BYTES
]
;
for
(
CC_id
=
0
;
CC_id
<
RC
.
nb_nr_mac_CC
[
module_idP
];
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
RC
.
nb_nr_mac_CC
[
module_idP
];
CC_id
++
)
{
...
@@ -301,31 +294,28 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -301,31 +294,28 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
TX_req
=
&
gNB_mac
->
TX_req
[
CC_id
].
tx_request_body
.
tx_pdu_list
[
gNB_mac
->
TX_req
[
CC_id
].
tx_request_body
.
number_of_pdus
];
TX_req
=
&
gNB_mac
->
TX_req
[
CC_id
].
tx_request_body
.
tx_pdu_list
[
gNB_mac
->
TX_req
[
CC_id
].
tx_request_body
.
number_of_pdus
];
ta_len
=
gNB_mac
->
ta_len
;
ta_len
=
gNB_mac
->
ta_len
;
TBS_bytes
=
configure_fapi_dl_Tx
(
dl_req
,
TX_req
,
cfg
,
&
gNB_mac
->
coreset
[
CC_id
][
1
],
&
gNB_mac
->
search_space
[
CC_id
][
1
],
gNB_mac
->
pdu_index
[
CC_id
],
dlsch_config
);
//printf("TBS_bytes=%d (bytes)\n",TBS_bytes);
//The --NOS1 use case currently schedules DLSCH transmissions only when there is IP traffic arriving
//The --NOS1 use case currently schedules DLSCH transmissions only when there is IP traffic arriving
//through the LTE stack
//through the LTE stack
if
(
IS_SOFTMODEM_NOS1
){
if
(
IS_SOFTMODEM_NOS1
){
// Hardcode it for now
//TBS = 6784/8; //TBS in bytes
//nr_get_tbs_dl(&dl_config_dlsch_pdu->dlsch_pdu, dl_config_dci_pdu->dci_dl_pdu, *cfg);
//TBS = dl_config_dlsch_pdu->dlsch_pdu.dlsch_pdu_rel15.transport_block_size;
/* TODO
/* TODO
// RLC data on DCCH
// RLC data on DCCH
if (TBS - ta_len - header_length_total - sdu_length_total - 3 > 0) {
if (TBS
_bytes
- ta_len - header_length_total - sdu_length_total - 3 > 0) {
}*/
}*/
/* TODO
/* TODO
// RLC data on DCCH1
// RLC data on DCCH1
if (TBS - ta_len - header_length_total - sdu_length_total - 3 > 0) {
if (TBS
_bytes
- ta_len - header_length_total - sdu_length_total - 3 > 0) {
}*/
}*/
for
(
lcid
=
NB_RB_MAX
-
1
;
lcid
>=
DTCH
;
lcid
--
)
{
for
(
lcid
=
NB_RB_MAX
-
1
;
lcid
>=
DTCH
;
lcid
--
)
{
LOG_D
(
MAC
,
"[gNB %d], Frame %d, DTCH%d->DLSCH, Checking RLC status (tbs %d, len %d)
\n
"
,
LOG_D
(
MAC
,
"[gNB %d], Frame %d, DTCH%d->DLSCH, Checking RLC status (tbs %d, len %d)
\n
"
,
module_idP
,
frameP
,
lcid
,
TBS
,
TBS
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
);
module_idP
,
frameP
,
lcid
,
TBS
_bytes
,
TBS_bytes
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
);
if
(
TBS
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
>
0
)
{
if
(
TBS
_bytes
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
>
0
)
{
rlc_status
=
mac_rlc_status_ind
(
module_idP
,
rlc_status
=
mac_rlc_status_ind
(
module_idP
,
rnti
,
rnti
,
module_idP
,
module_idP
,
...
@@ -334,14 +324,14 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -334,14 +324,14 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
ENB_FLAG_YES
,
ENB_FLAG_YES
,
MBMS_FLAG_NO
,
MBMS_FLAG_NO
,
lcid
,
lcid
,
TBS
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
,
TBS
_bytes
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
,
0
,
0
,
0
);
0
);
if
(
rlc_status
.
bytes_in_buffer
>
0
)
{
if
(
rlc_status
.
bytes_in_buffer
>
0
)
{
LOG_D
(
MAC
,
"[gNB %d][USER-PLANE DEFAULT DRB] Frame %d : DTCH->DLSCH, Requesting %d bytes from RLC (lcid %d total hdr len %d), TBS: %d
\n
\n
"
,
LOG_D
(
MAC
,
"[gNB %d][USER-PLANE DEFAULT DRB] Frame %d : DTCH->DLSCH, Requesting %d bytes from RLC (lcid %d total hdr len %d), TBS
_bytes
: %d
\n
\n
"
,
module_idP
,
frameP
,
TBS
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
,
module_idP
,
frameP
,
TBS
_bytes
-
ta_len
-
header_length_total
-
sdu_length_total
-
3
,
lcid
,
header_length_total
,
TBS
);
lcid
,
header_length_total
,
TBS
_bytes
);
sdu_lengths
[
num_sdus
]
=
mac_rlc_data_req
(
module_idP
,
sdu_lengths
[
num_sdus
]
=
mac_rlc_data_req
(
module_idP
,
rnti
,
rnti
,
...
@@ -350,8 +340,8 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -350,8 +340,8 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
ENB_FLAG_YES
,
ENB_FLAG_YES
,
MBMS_FLAG_NO
,
MBMS_FLAG_NO
,
lcid
,
lcid
,
TBS
,
TBS
_bytes
,
(
char
*
)
&
dlsch_buffer
[
sdu_length_total
],
(
char
*
)
&
mac_sdus
[
sdu_length_total
],
0
,
0
,
0
);
0
);
...
@@ -374,7 +364,7 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -374,7 +364,7 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
//ue_sched_ctl->uplane_inactivity_timer = 0;
//ue_sched_ctl->uplane_inactivity_timer = 0;
}
}
}
else
{
// no TBS left
}
else
{
// no TBS
_bytes
left
break
;
break
;
}
}
}
}
...
@@ -392,26 +382,17 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -392,26 +382,17 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
// fill dlsch_buffer with random data
// fill dlsch_buffer with random data
for
(
i
=
0
;
i
<
TBS
/
8
;
i
++
){
for
(
i
=
0
;
i
<
TBS
_bytes
;
i
++
){
dlsch_buffer
[
i
]
=
(
unsigned
char
)
rand
();
//i&0xFF;
mac_sdus
[
i
]
=
(
unsigned
char
)
rand
();
//i&0xFF;
}
}
//Sending SDUs with size 1
//Sending SDUs with size 1
//Initialize elements of sdu_lcids and sdu_lengths
//Initialize elements of sdu_lcids and sdu_lengths
//TODO this will be eventually be removed
sdu_lcids
[
0
]
=
0x05
;
// DRB
while
(
TBS
>=
3
+
header_length_total
+
sdu_length_total
+
ta_len
){
sdu_lengths
[
0
]
=
TBS_bytes
-
3
;
if
(
k
<
NR_MAX_NB_RB
&&
j
<
NR_MAX_NB_RB
){
sdu_lcids
[
j
]
=
0x05
;
// DRB
sdu_lengths
[
k
]
=
1
;
header_length_total
+=
2
;
header_length_total
+=
2
;
sdu_length_total
+=
1
;
sdu_length_total
+=
sdu_lengths
[
0
]
;
num_sdus
+=
1
;
num_sdus
+=
1
;
k
++
,
j
++
;
}
else
{
break
;
}
}
}
// else IS_SOFTMODEM_NOS1
}
// else IS_SOFTMODEM_NOS1
// there is at least one SDU or TA command
// there is at least one SDU or TA command
...
@@ -419,10 +400,10 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -419,10 +400,10 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
if
(
ta_len
+
sdu_length_total
+
header_length_total
>
0
)
{
if
(
ta_len
+
sdu_length_total
+
header_length_total
>
0
)
{
// Check if there is data from RLC or CE
// Check if there is data from RLC or CE
if
(
TBS
>=
2
+
header_length_total
+
sdu_length_total
+
ta_len
)
{
if
(
TBS
_bytes
>=
2
+
header_length_total
+
sdu_length_total
+
ta_len
)
{
// we have to consider padding
// we have to consider padding
// padding param currently not in use
// padding param currently not in use
padding
=
TBS
-
header_length_total
-
sdu_length_total
-
ta_len
-
1
;
padding
=
TBS
_bytes
-
header_length_total
-
sdu_length_total
-
ta_len
-
1
;
post_padding
=
1
;
post_padding
=
1
;
}
else
{
}
else
{
padding
=
0
;
padding
=
0
;
...
@@ -431,8 +412,8 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -431,8 +412,8 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
offset
=
nr_generate_dlsch_pdu
(
module_idP
,
offset
=
nr_generate_dlsch_pdu
(
module_idP
,
(
unsigned
char
*
)
dlsch_buffer
,
(
unsigned
char
*
)
mac_sdus
,
(
unsigned
char
*
)
mac_p
ayload
,
(
unsigned
char
*
)
mac_p
du
,
num_sdus
,
//num_sdus
num_sdus
,
//num_sdus
sdu_lengths
,
sdu_lengths
,
sdu_lcids
,
sdu_lcids
,
...
@@ -442,15 +423,14 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
...
@@ -442,15 +423,14 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
// Padding: fill remainder of DLSCH with 0
// Padding: fill remainder of DLSCH with 0
if
(
post_padding
>
0
){
if
(
post_padding
>
0
){
for
(
int
j
=
0
;
j
<
(
TBS
-
offset
);
j
++
)
for
(
int
j
=
0
;
j
<
(
TBS
_bytes
-
offset
);
j
++
)
mac_p
ayload
[
offset
+
j
]
=
0
;
mac_p
du
[
offset
+
j
]
=
0
;
}
}
TBS_bytes
=
configure_fapi_dl_Tx
(
dl_req
,
TX_req
,
cfg
,
&
gNB_mac
->
coreset
[
CC_id
][
1
],
&
gNB_mac
->
search_space
[
CC_id
][
1
],
gNB_mac
->
pdu_index
[
CC_id
],
dlsch_config
);
//TX_req->segments[0].segment_length = 8;
//TX_req->segments[0].segment_length = 8;
TX_req
->
segments
[
0
].
segment_length
=
TBS_bytes
+
2
;
TX_req
->
segments
[
0
].
segment_length
=
TBS_bytes
+
2
;
TX_req
->
segments
[
0
].
segment_data
=
mac_p
ayload
;
TX_req
->
segments
[
0
].
segment_data
=
mac_p
du
;
gNB_mac
->
TX_req
[
CC_id
].
tx_request_body
.
number_of_pdus
++
;
gNB_mac
->
TX_req
[
CC_id
].
tx_request_body
.
number_of_pdus
++
;
gNB_mac
->
TX_req
[
CC_id
].
sfn_sf
=
sfn_sf
;
gNB_mac
->
TX_req
[
CC_id
].
sfn_sf
=
sfn_sf
;
...
...
This diff is collapsed.
Click to expand it.
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