From 6c4f58a0a0a5ba63c49848d17cf1b5e7ad489349 Mon Sep 17 00:00:00 2001
From: Navid Nikaein <navid.nikaein@eurecom.fr>
Date: Fri, 1 Jun 2018 00:03:26 +0200
Subject: [PATCH] move UE_list/slice init in dedicated functions

---
 openair2/LAYER2/MAC/mac_proto.h |  4 ++
 openair2/LAYER2/MAC/main.c      | 89 ++++++++++++++++++---------------
 2 files changed, 54 insertions(+), 39 deletions(-)

diff --git a/openair2/LAYER2/MAC/mac_proto.h b/openair2/LAYER2/MAC/mac_proto.h
index 1400d862d6..0d4cd72ae9 100644
--- a/openair2/LAYER2/MAC/mac_proto.h
+++ b/openair2/LAYER2/MAC/mac_proto.h
@@ -165,6 +165,10 @@ void add_msg3(module_id_t module_idP, int CC_id, RA_t * ra, frame_t frameP,
 
 //main.c
 
+void init_UE_list(UE_list_t *UE_list);
+
+void init_slice_info(slice_info_t *sli);
+
 int mac_top_init(int eMBMS_active, char *uecap_xer,
 		 uint8_t cba_group_active, uint8_t HO_active);
 
diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c
index b325c9b3ea..8fb8d44e0a 100644
--- a/openair2/LAYER2/MAC/main.c
+++ b/openair2/LAYER2/MAC/main.c
@@ -46,12 +46,57 @@
 
 extern RAN_CONTEXT_t RC;
 
+void init_UE_list(UE_list_t *UE_list)
+{
+  int list_el;
+  UE_list->num_UEs = 0;
+  UE_list->head = -1;
+  UE_list->head_ul = -1;
+  UE_list->avail = 0;
+  for (list_el = 0; list_el < MAX_MOBILES_PER_ENB - 1; list_el++) {
+    UE_list->next[list_el] = list_el + 1;
+    UE_list->next_ul[list_el] = list_el + 1;
+  }
+  UE_list->next[list_el] = -1;
+  UE_list->next_ul[list_el] = -1;
+  memset(UE_list->DLSCH_pdu, 0, sizeof(UE_list->DLSCH_pdu));
+  memset(UE_list->UE_template, 0, sizeof(UE_list->UE_template));
+  memset(UE_list->eNB_UE_stats, 0, sizeof(UE_list->eNB_UE_stats));
+  memset(UE_list->UE_sched_ctrl, 0, sizeof(UE_list->UE_sched_ctrl));
+  memset(UE_list->active, 0, sizeof(UE_list->active));
+  memset(UE_list->assoc_dl_slice_idx, 0, sizeof(UE_list->assoc_dl_slice_idx));
+  memset(UE_list->assoc_ul_slice_idx, 0, sizeof(UE_list->assoc_ul_slice_idx));
+}
+
+void init_slice_info(slice_info_t *sli)
+{
+  sli->intraslice_share_active = 1;
+  sli->interslice_share_active = 1;
+
+  sli->n_dl = 1;
+  memset(sli->dl, 0, sizeof(slice_sched_conf_dl_t) * MAX_NUM_SLICES);
+  sli->dl[0].pct = 1.0;
+  sli->dl[0].prio = 10;
+  sli->dl[0].pos_high = N_RBG_MAX;
+  sli->dl[0].maxmcs = 28;
+  sli->dl[0].sorting = 0x012345;
+  sli->dl[0].sched_name = "schedule_ue_spec";
+  sli->dl[0].sched_cb = dlsym(NULL, sli->dl[0].sched_name);
+  AssertFatal(sli->dl[0].sched_cb, "DLSCH scheduler callback is NULL\n");
+
+  sli->n_ul = 1;
+  memset(sli->ul, 0, sizeof(slice_sched_conf_ul_t) * MAX_NUM_SLICES);
+  sli->ul[0].pct = 1.0;
+  sli->ul[0].maxmcs = 20;
+  sli->ul[0].sorting = 0x0123;
+  sli->ul[0].sched_name = "schedule_ulsch_rnti";
+  sli->ul[0].sched_cb = dlsym(NULL, sli->ul[0].sched_name);
+  AssertFatal(sli->ul[0].sched_cb, "ULSCH scheduler callback is NULL\n");
+}
+
 void mac_top_init_eNB(void)
 {
   module_id_t i, j;
-  int list_el;
-  UE_list_t *UE_list;
-  slice_info_t *sli;
   eNB_MAC_INST **mac;
 
   LOG_I(MAC, "[MAIN] Init function start:nb_macrlc_inst=%d\n",
@@ -95,42 +140,8 @@ void mac_top_init_eNB(void)
 
     mac[i]->if_inst = IF_Module_init(i);
 
-    UE_list = &mac[i]->UE_list;
-    UE_list->num_UEs = 0;
-    UE_list->head = -1;
-    UE_list->head_ul = -1;
-    UE_list->avail = 0;
-
-    for (list_el = 0; list_el < MAX_MOBILES_PER_ENB - 1; list_el++) {
-	    UE_list->next[list_el] = list_el + 1;
-	    UE_list->next_ul[list_el] = list_el + 1;
-    }
-    UE_list->next[list_el] = -1;
-    UE_list->next_ul[list_el] = -1;
-
-    sli = &mac[i]->slice_info;
-    sli->intraslice_share_active = 1;
-    sli->interslice_share_active = 1;
-
-    sli->n_dl = 1;
-    memset(sli->dl, 0, sizeof(slice_sched_conf_dl_t) * MAX_NUM_SLICES);
-    sli->dl[0].pct = 1.0;
-    sli->dl[0].prio = 10;
-    sli->dl[0].pos_high = N_RBG_MAX;
-    sli->dl[0].maxmcs = 28;
-    sli->dl[0].sorting = 0x012345;
-    sli->dl[0].sched_name = "schedule_ue_spec";
-    sli->dl[0].sched_cb = dlsym(NULL, sli->dl[0].sched_name);
-    AssertFatal(sli->dl[0].sched_cb, "DLSCH scheduler callback is NULL\n");
-
-    sli->n_ul = 1;
-    memset(sli->ul, 0, sizeof(slice_sched_conf_ul_t) * MAX_NUM_SLICES);
-    sli->ul[0].pct = 1.0;
-    sli->ul[0].maxmcs = 20;
-    sli->ul[0].sorting = 0x0123;
-    sli->ul[0].sched_name = "schedule_ulsch_rnti";
-    sli->ul[0].sched_cb = dlsym(NULL, sli->ul[0].sched_name);
-    AssertFatal(sli->ul[0].sched_cb, "ULSCH scheduler callback is NULL\n");
+    init_UE_list(&mac[i]->UE_list);
+    init_slice_info(&mac[i]->slice_info);
   }
 
   RC.mac = mac;
-- 
GitLab