Fixed problem with sfn_sf recoding in remote scheduler
This commit is contained in:
@@ -54,7 +54,7 @@ void schedule_ue_spec_remote(mid_t mod_id, uint32_t frame, uint32_t subframe,
|
|||||||
dl_mac_config_element_t *dl_config_elem;
|
dl_mac_config_element_t *dl_config_elem;
|
||||||
|
|
||||||
int diff;
|
int diff;
|
||||||
LOG_D(MAC, "Current frame and subframe %d, %d\n", frame, subframe);
|
LOG_D(MAC, "[TEST] Current frame and subframe %d, %d\n", frame, subframe);
|
||||||
// First we check to see if we have a scheduling decision for this sfn_sf already in our queue
|
// First we check to see if we have a scheduling decision for this sfn_sf already in our queue
|
||||||
while(queue_head.tqh_first != NULL) {
|
while(queue_head.tqh_first != NULL) {
|
||||||
dl_config_elem = queue_head.tqh_first;
|
dl_config_elem = queue_head.tqh_first;
|
||||||
@@ -107,12 +107,12 @@ void schedule_ue_spec_remote(mid_t mod_id, uint32_t frame, uint32_t subframe,
|
|||||||
enb_agent_mac_create_empty_dl_config(mod_id, dl_info);
|
enb_agent_mac_create_empty_dl_config(mod_id, dl_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_sf_difference(mid_t mod_id, uint16_t sfn_sf) {
|
int get_sf_difference(mid_t mod_id, uint32_t sfn_sf) {
|
||||||
int diff_in_subframes;
|
int diff_in_subframes;
|
||||||
|
|
||||||
uint16_t current_frame = get_current_system_frame_num(mod_id);
|
uint16_t current_frame = get_current_system_frame_num(mod_id);
|
||||||
uint16_t current_subframe = get_current_subframe(mod_id);
|
uint16_t current_subframe = get_current_subframe(mod_id);
|
||||||
uint16_t current_sfn_sf = get_sfn_sf(mod_id);
|
uint32_t current_sfn_sf = get_sfn_sf(mod_id);
|
||||||
|
|
||||||
if (sfn_sf == current_sfn_sf) {
|
if (sfn_sf == current_sfn_sf) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -124,7 +124,7 @@ int get_sf_difference(mid_t mod_id, uint16_t sfn_sf) {
|
|||||||
uint16_t sf_mask = ((1<<4) - 1);
|
uint16_t sf_mask = ((1<<4) - 1);
|
||||||
uint16_t subframe = (sfn_sf & sf_mask);
|
uint16_t subframe = (sfn_sf & sf_mask);
|
||||||
|
|
||||||
LOG_D(MAC, "Target frame and subframe %d, %d\n", frame, subframe);
|
LOG_D(MAC, "[TEST] Target frame and subframe %d, %d\n", frame, subframe);
|
||||||
|
|
||||||
if (frame == current_frame) {
|
if (frame == current_frame) {
|
||||||
return subframe - current_subframe;
|
return subframe - current_subframe;
|
||||||
|
|||||||
@@ -72,6 +72,6 @@ void schedule_ue_spec_remote(mid_t mod_id, uint32_t frame, uint32_t subframe,
|
|||||||
// 0 for equal
|
// 0 for equal
|
||||||
// positive for future value
|
// positive for future value
|
||||||
// Based on
|
// Based on
|
||||||
int get_sf_difference(mid_t mod_id, uint16_t sfn_sf);
|
int get_sf_difference(mid_t mod_id, uint32_t sfn_sf);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user