diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index 4d45e056f70c012c4fde872911582c1c89e529bc..1210456fd8d392fced245a62a3b5f9712b096666 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -96,7 +96,8 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
   int           result;
 #endif
   DCI_PDU *DCI_pdu[MAX_NUM_CCs];
-  int CC_id;
+  int CC_id,i;
+  UE_list_t *UE_list=&eNB_mac_inst[module_idP].UE_list;
 
   LOG_D(MAC,"[eNB %d] Frame %d, Subframe %d, entering MAC scheduler\n",module_idP, frameP, subframeP);
 
@@ -195,6 +196,11 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
     }
   }
 #endif
+  // refresh UE list based on UEs dropped by PHY in previous subframe
+  for (i=UE_list->head;i>0;i=UE_list->next[i])
+    if (mac_xface->get_eNB_UE_stats(module_idP,0,UE_RNTI(module_idP,i))==NULL)
+      mac_remove_ue(module_idP,i);
+
 
   switch (subframeP) {
   case 0: