fixes for UE removal (update linked lists) searching of UE lists in schedule_SR/SRS/CSI
This commit is contained in:
@@ -108,8 +108,8 @@ void schedule_SRS(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP)
|
|||||||
|
|
||||||
if((1<<tmp) & deltaTSFC) {
|
if((1<<tmp) & deltaTSFC) {
|
||||||
// This is an SRS subframe, loop over UEs
|
// This is an SRS subframe, loop over UEs
|
||||||
for (UE_id=UE_list->head; UE_id>=0; UE_id=UE_list->next[UE_id]) {
|
for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
|
||||||
|
if (RC.mac[module_idP]->UE_list.active[UE_id]!=TRUE) continue;
|
||||||
ul_req = &RC.mac[module_idP]->UL_req[CC_id].ul_config_request_body;
|
ul_req = &RC.mac[module_idP]->UL_req[CC_id].ul_config_request_body;
|
||||||
|
|
||||||
|
|
||||||
@@ -161,7 +161,8 @@ void schedule_CSI(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP)
|
|||||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||||
|
|
||||||
cc = &eNB->common_channels[CC_id];
|
cc = &eNB->common_channels[CC_id];
|
||||||
for (UE_id=UE_list->head; UE_id>=0; UE_id=UE_list->next[UE_id]) {
|
for (UE_id=0; UE_id < NUMBER_OF_UE_MAX; UE_id++) {
|
||||||
|
if (UE_list->active[UE_id] != TRUE) continue;
|
||||||
|
|
||||||
ul_req = &RC.mac[module_idP]->UL_req[CC_id].ul_config_request_body;
|
ul_req = &RC.mac[module_idP]->UL_req[CC_id].ul_config_request_body;
|
||||||
|
|
||||||
@@ -231,7 +232,8 @@ void schedule_SR(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
|
|||||||
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
||||||
RC.mac[module_idP]->UL_req[CC_id].sfn_sf = (frameP << 4) + subframeP;
|
RC.mac[module_idP]->UL_req[CC_id].sfn_sf = (frameP << 4) + subframeP;
|
||||||
|
|
||||||
for (UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) {
|
for (UE_id = 0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
|
||||||
|
if (RC.mac[module_idP]->UE_list.active[UE_id]!=TRUE) continue;
|
||||||
|
|
||||||
ul_req = &RC.mac[module_idP]->UL_req[CC_id].ul_config_request_body;
|
ul_req = &RC.mac[module_idP]->UL_req[CC_id].ul_config_request_body;
|
||||||
|
|
||||||
|
|||||||
@@ -1766,6 +1766,11 @@ int rrc_mac_remove_ue(module_id_t mod_idP,rnti_t rntiP)
|
|||||||
UE_list->active[UE_id] = FALSE;
|
UE_list->active[UE_id] = FALSE;
|
||||||
UE_list->num_UEs--;
|
UE_list->num_UEs--;
|
||||||
|
|
||||||
|
if (UE_list->head == UE_id) UE_list->head=UE_list->next[UE_id];
|
||||||
|
else UE_list->next[prev(UE_list,UE_id,0)]=UE_list->next[UE_id];
|
||||||
|
if (UE_list->head_ul == UE_id) UE_list->head_ul=UE_list->next_ul[UE_id];
|
||||||
|
else UE_list->next_ul[prev(UE_list,UE_id,0)]=UE_list->next_ul[UE_id];
|
||||||
|
|
||||||
// clear all remaining pending transmissions
|
// clear all remaining pending transmissions
|
||||||
UE_list->UE_template[pCC_id][UE_id].bsr_info[LCGID0] = 0;
|
UE_list->UE_template[pCC_id][UE_id].bsr_info[LCGID0] = 0;
|
||||||
UE_list->UE_template[pCC_id][UE_id].bsr_info[LCGID1] = 0;
|
UE_list->UE_template[pCC_id][UE_id].bsr_info[LCGID1] = 0;
|
||||||
|
|||||||
@@ -398,11 +398,11 @@ void sort_UEs (module_id_t Mod_idP,
|
|||||||
UE_list_t *UE_list = &RC.mac[Mod_idP]->UE_list;
|
UE_list_t *UE_list = &RC.mac[Mod_idP]->UE_list;
|
||||||
|
|
||||||
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
||||||
rnti = UE_RNTI(Mod_idP, i);
|
|
||||||
if (rnti == NOT_A_RNTI)
|
if (UE_list->active[i]==FALSE) continue;
|
||||||
continue;
|
if ((rnti = UE_RNTI(Mod_idP, i)) == NOT_A_RNTI) continue;
|
||||||
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
|
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1) continue;
|
||||||
continue;
|
|
||||||
list[list_size] = i;
|
list[list_size] = i;
|
||||||
list_size++;
|
list_size++;
|
||||||
}
|
}
|
||||||
@@ -1453,11 +1453,9 @@ void sort_ue_ul (module_id_t module_idP,int frameP, sub_frame_t subframeP)
|
|||||||
UE_list_t *UE_list = &RC.mac[module_idP]->UE_list;
|
UE_list_t *UE_list = &RC.mac[module_idP]->UE_list;
|
||||||
|
|
||||||
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
||||||
rnti = UE_RNTI(module_idP, i);
|
if (UE_list->active[i] == FALSE) continue;
|
||||||
if (rnti == NOT_A_RNTI)
|
if ((rnti = UE_RNTI(module_idP, i)) == NOT_A_RNTI) continue;
|
||||||
continue;
|
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1) continue;
|
||||||
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
list[list_size] = i;
|
list[list_size] = i;
|
||||||
list_size++;
|
list_size++;
|
||||||
|
|||||||
Reference in New Issue
Block a user