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
f1f31a78
Commit
f1f31a78
authored
Oct 17, 2017
by
Cedric Roux
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
minor: cleanup spacing
parent
78366755
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
382 additions
and
411 deletions
+382
-411
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+382
-411
No files found.
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
f1f31a78
...
@@ -71,9 +71,8 @@ void rx_sdu(const module_id_t enb_mod_idP,
...
@@ -71,9 +71,8 @@ void rx_sdu(const module_id_t enb_mod_idP,
uint8_t
*
sduP
,
uint8_t
*
sduP
,
const
uint16_t
sdu_lenP
,
const
uint16_t
sdu_lenP
,
const
uint16_t
timing_advance
,
const
uint16_t
timing_advance
,
const
uint8_t
ul_cqi
)
{
const
uint8_t
ul_cqi
)
{
unsigned
char
rx_ces
[
MAX_NUM_CE
],
num_ce
,
num_sdu
,
i
,
*
payload_ptr
;
unsigned
char
rx_ces
[
MAX_NUM_CE
],
num_ce
,
num_sdu
,
i
,
*
payload_ptr
;
unsigned
char
rx_lcids
[
NB_RB_MAX
];
unsigned
char
rx_lcids
[
NB_RB_MAX
];
unsigned
short
rx_lengths
[
NB_RB_MAX
];
unsigned
short
rx_lengths
[
NB_RB_MAX
];
...
@@ -103,9 +102,7 @@ void rx_sdu(const module_id_t enb_mod_idP,
...
@@ -103,9 +102,7 @@ void rx_sdu(const module_id_t enb_mod_idP,
enb_mod_idP
,
frameP
,
rntiP
,
sdu_lenP
);
enb_mod_idP
,
frameP
,
rntiP
,
sdu_lenP
);
}
}
if
(
UE_id
!=-
1
)
{
if
(
UE_id
!=-
1
)
{
LOG_D
(
MAC
,
"[eNB %d][PUSCH %d] CC_id %d Received ULSCH sdu round %d from PHY (rnti %x, UE_id %d) ul_cqi %d
\n
"
,
enb_mod_idP
,
harq_pid
,
CC_idP
,
UE_list
->
UE_sched_ctrl
[
UE_id
].
round_UL
[
CC_idP
][
harq_pid
],
LOG_D
(
MAC
,
"[eNB %d][PUSCH %d] CC_id %d Received ULSCH sdu round %d from PHY (rnti %x, UE_id %d) ul_cqi %d
\n
"
,
enb_mod_idP
,
harq_pid
,
CC_idP
,
UE_list
->
UE_sched_ctrl
[
UE_id
].
round_UL
[
CC_idP
][
harq_pid
],
rntiP
,
UE_id
,
ul_cqi
);
rntiP
,
UE_id
,
ul_cqi
);
...
@@ -595,10 +592,8 @@ abort();
...
@@ -595,10 +592,8 @@ abort();
stop_meas
(
&
eNB
->
rx_ulsch_sdu
);
stop_meas
(
&
eNB
->
rx_ulsch_sdu
);
}
}
uint32_t
bytes_to_bsr_index
(
int32_t
nbytes
)
uint32_t
bytes_to_bsr_index
(
int32_t
nbytes
)
{
{
uint32_t
i
=
0
;
uint32_t
i
=
0
;
if
(
nbytes
<
0
)
{
if
(
nbytes
<
0
)
{
...
@@ -615,13 +610,11 @@ uint32_t bytes_to_bsr_index(int32_t nbytes)
...
@@ -615,13 +610,11 @@ uint32_t bytes_to_bsr_index(int32_t nbytes)
void
add_ue_ulsch_info
(
module_id_t
module_idP
,
int
CC_id
,
int
UE_id
,
sub_frame_t
subframeP
,
UE_ULSCH_STATUS
status
)
void
add_ue_ulsch_info
(
module_id_t
module_idP
,
int
CC_id
,
int
UE_id
,
sub_frame_t
subframeP
,
UE_ULSCH_STATUS
status
)
{
{
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
rnti
=
UE_RNTI
(
module_idP
,
UE_id
);
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
rnti
=
UE_RNTI
(
module_idP
,
UE_id
);
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
subframe
=
subframeP
;
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
subframe
=
subframeP
;
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
status
=
status
;
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
status
=
status
;
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
serving_num
++
;
eNB_ulsch_info
[
module_idP
][
CC_id
][
UE_id
].
serving_num
++
;
}
}
unsigned
char
*
parse_ulsch_header
(
unsigned
char
*
mac_header
,
unsigned
char
*
parse_ulsch_header
(
unsigned
char
*
mac_header
,
...
@@ -632,7 +625,6 @@ unsigned char *parse_ulsch_header(unsigned char *mac_header,
...
@@ -632,7 +625,6 @@ unsigned char *parse_ulsch_header(unsigned char *mac_header,
unsigned
short
*
rx_lengths
,
unsigned
short
*
rx_lengths
,
unsigned
short
tb_length
)
unsigned
short
tb_length
)
{
{
unsigned
char
not_done
=
1
,
num_ces
=
0
,
num_sdus
=
0
,
lcid
,
num_sdu_cnt
;
unsigned
char
not_done
=
1
,
num_ces
=
0
,
num_sdus
=
0
,
lcid
,
num_sdu_cnt
;
unsigned
char
*
mac_header_ptr
=
mac_header
;
unsigned
char
*
mac_header_ptr
=
mac_header
;
unsigned
short
length
,
ce_len
=
0
;
unsigned
short
length
,
ce_len
=
0
;
...
@@ -723,12 +715,8 @@ void set_msg3_subframe(module_id_t Mod_id,
...
@@ -723,12 +715,8 @@ void set_msg3_subframe(module_id_t Mod_id,
void
schedule_ulsch
(
module_id_t
module_idP
,
void
schedule_ulsch
(
module_id_t
module_idP
,
frame_t
frameP
,
frame_t
frameP
,
sub_frame_t
subframeP
)
{
sub_frame_t
subframeP
)
{
uint16_t
first_rb
[
MAX_NUM_CCs
],
i
;
uint16_t
first_rb
[
MAX_NUM_CCs
],
i
;
int
CC_id
;
int
CC_id
;
eNB_MAC_INST
*
eNB
=
RC
.
mac
[
module_idP
];
eNB_MAC_INST
*
eNB
=
RC
.
mac
[
module_idP
];
...
@@ -736,7 +724,6 @@ void schedule_ulsch(module_id_t module_idP,
...
@@ -736,7 +724,6 @@ void schedule_ulsch(module_id_t module_idP,
start_meas
(
&
eNB
->
schedule_ulsch
);
start_meas
(
&
eNB
->
schedule_ulsch
);
int
sched_subframe
=
(
subframeP
+
4
)
%
10
;
int
sched_subframe
=
(
subframeP
+
4
)
%
10
;
cc
=
&
eNB
->
common_channels
[
0
];
cc
=
&
eNB
->
common_channels
[
0
];
...
@@ -829,18 +816,14 @@ void schedule_ulsch(module_id_t module_idP,
...
@@ -829,18 +816,14 @@ void schedule_ulsch(module_id_t module_idP,
schedule_ulsch_rnti
(
module_idP
,
frameP
,
subframeP
,
sched_subframe
,
first_rb
);
schedule_ulsch_rnti
(
module_idP
,
frameP
,
subframeP
,
sched_subframe
,
first_rb
);
stop_meas
(
&
eNB
->
schedule_ulsch
);
stop_meas
(
&
eNB
->
schedule_ulsch
);
}
}
void
schedule_ulsch_rnti
(
module_id_t
module_idP
,
void
schedule_ulsch_rnti
(
module_id_t
module_idP
,
frame_t
frameP
,
frame_t
frameP
,
sub_frame_t
subframeP
,
sub_frame_t
subframeP
,
unsigned
char
sched_subframeP
,
unsigned
char
sched_subframeP
,
uint16_t
*
first_rb
)
uint16_t
*
first_rb
)
{
{
int
UE_id
;
int
UE_id
;
uint8_t
aggregation
=
2
;
uint8_t
aggregation
=
2
;
rnti_t
rnti
=
-
1
;
rnti_t
rnti
=
-
1
;
...
@@ -872,8 +855,6 @@ void schedule_ulsch_rnti(module_id_t module_idP,
...
@@ -872,8 +855,6 @@ void schedule_ulsch_rnti(module_id_t module_idP,
nfapi_ul_config_request_pdu_t
*
ul_config_pdu
;
nfapi_ul_config_request_pdu_t
*
ul_config_pdu
;
nfapi_ul_config_request_body_t
*
ul_req_tmp
=
&
eNB
->
UL_req_tmp
[
CC_id
][
sched_subframeP
].
ul_config_request_body
;
nfapi_ul_config_request_body_t
*
ul_req_tmp
=
&
eNB
->
UL_req_tmp
[
CC_id
][
sched_subframeP
].
ul_config_request_body
;
ul_config_pdu
=
&
ul_req_tmp
->
ul_config_pdu_list
[
0
];
ul_config_pdu
=
&
ul_req_tmp
->
ul_config_pdu_list
[
0
];
...
@@ -889,7 +870,6 @@ void schedule_ulsch_rnti(module_id_t module_idP,
...
@@ -889,7 +870,6 @@ void schedule_ulsch_rnti(module_id_t module_idP,
eNB
->
HI_DCI0_req
[
CC_id
].
sfn_sf
=
(
frameP
<<
4
)
+
subframeP
;
eNB
->
HI_DCI0_req
[
CC_id
].
sfn_sf
=
(
frameP
<<
4
)
+
subframeP
;
// loop over all active UEs
// loop over all active UEs
for
(
UE_id
=
UE_list
->
head_ul
;
UE_id
>=
0
;
UE_id
=
UE_list
->
next_ul
[
UE_id
])
{
for
(
UE_id
=
UE_list
->
head_ul
;
UE_id
>=
0
;
UE_id
=
UE_list
->
next_ul
[
UE_id
])
{
...
@@ -966,8 +946,6 @@ abort();
...
@@ -966,8 +946,6 @@ abort();
continue
;
continue
;
}
}
// if (eNB_UE_stats->mode == PUSCH) { // ue has a ulsch channel
// if (eNB_UE_stats->mode == PUSCH) { // ue has a ulsch channel
UE_template
=
&
UE_list
->
UE_template
[
CC_id
][
UE_id
];
UE_template
=
&
UE_list
->
UE_template
[
CC_id
][
UE_id
];
...
@@ -1002,7 +980,6 @@ abort();
...
@@ -1002,7 +980,6 @@ abort();
else
else
cqi_req
=
0
;
cqi_req
=
0
;
//power control
//power control
//compute the expected ULSCH RX power (for the stats)
//compute the expected ULSCH RX power (for the stats)
...
@@ -1117,7 +1094,6 @@ abort();
...
@@ -1117,7 +1094,6 @@ abort();
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
cqi_csi_request
=
cqi_req
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
cqi_csi_request
=
cqi_req
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
dl_assignment_index
=
UE_template
->
DAI_ul
[
sched_subframeP
];
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
dl_assignment_index
=
UE_template
->
DAI_ul
[
sched_subframeP
];
eNB
->
HI_DCI0_req
[
CC_id
].
hi_dci0_request_body
.
number_of_dci
++
;
eNB
->
HI_DCI0_req
[
CC_id
].
hi_dci0_request_body
.
number_of_dci
++
;
LOG_D
(
MAC
,
"[PUSCH %d] Frame %d, Subframe %d: Adding UL CONFIG.Request for UE %d/%x, ulsch_frame %d, ulsch_subframe %d
\n
"
,
LOG_D
(
MAC
,
"[PUSCH %d] Frame %d, Subframe %d: Adding UL CONFIG.Request for UE %d/%x, ulsch_frame %d, ulsch_subframe %d
\n
"
,
...
@@ -1158,8 +1134,6 @@ abort();
...
@@ -1158,8 +1134,6 @@ abort();
ul_req_tmp
->
number_of_pdus
++
;
ul_req_tmp
->
number_of_pdus
++
;
eNB
->
ul_handle
++
;
eNB
->
ul_handle
++
;
add_ue_ulsch_info
(
module_idP
,
add_ue_ulsch_info
(
module_idP
,
CC_id
,
CC_id
,
UE_id
,
UE_id
,
...
@@ -1168,10 +1142,8 @@ abort();
...
@@ -1168,10 +1142,8 @@ abort();
LOG_D
(
MAC
,
"[eNB %d] CC_id %d Frame %d, subframeP %d: Generated ULSCH DCI for next UE_id %d, format 0
\n
"
,
module_idP
,
CC_id
,
frameP
,
subframeP
,
UE_id
);
LOG_D
(
MAC
,
"[eNB %d] CC_id %d Frame %d, subframeP %d: Generated ULSCH DCI for next UE_id %d, format 0
\n
"
,
module_idP
,
CC_id
,
frameP
,
subframeP
,
UE_id
);
// increment first rb for next UE allocation
// increment first rb for next UE allocation
first_rb
[
CC_id
]
+=
rb_table
[
rb_table_index
];
first_rb
[
CC_id
]
+=
rb_table
[
rb_table_index
];
}
}
else
{
// round > 0 => retransmission
else
{
// round > 0 => retransmission
T
(
T_ENB_MAC_UE_UL_SCHEDULE_RETRANSMISSION
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
rnti
),
T_INT
(
frameP
),
T
(
T_ENB_MAC_UE_UL_SCHEDULE_RETRANSMISSION
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
rnti
),
T_INT
(
frameP
),
...
@@ -1262,4 +1234,3 @@ abort();
...
@@ -1262,4 +1234,3 @@ abort();
}
// loop over UE_id
}
// loop over UE_id
}
// loop of CC_id
}
// loop of CC_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