diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index dbfae80840c4c76fe605fa11fb8023cfb4877b13..bd3c92454f4be0375d355b624bd83bae51415b07 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -247,6 +247,7 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch)
     Mdlharq = dlsch->Mdlharq;
     dlsch->rnti = 0;
     dlsch->active = 0;
+    dlsch->harq_mask = 0;
 
     for (i=0; i<10; i++)
       dlsch->harq_ids[i] = Mdlharq;
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
index e067137a14b8ff180f67702b906317999efbb7c3..4796d16ba35a9e7862a5e2e81a7a2ab57fc2b58d 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
@@ -170,6 +170,7 @@ void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch)
   //ulsch = (LTE_eNB_ULSCH_t *)malloc16(sizeof(LTE_eNB_ULSCH_t));
   if (ulsch) {
     ulsch->rnti = 0;
+    ulsch->harq_mask = 0;
 
     for (i=0; i<8; i++) {
       if (ulsch->harq_processes[i]) {
diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index 42835a5a8824089a97088e88b66ee042665b195b..e5fd8d941eab7e1c9b23885df1fba16f32c60f7b 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -722,14 +722,18 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP,
                 break;
               }
             }
-
              for (int ii=0; ii<NUMBER_OF_UE_MAX; ii++) {
-                 LTE_eNB_ULSCH_t *ulsch = NULL;
-                 ulsch = RC.eNB[module_idP][CC_id]->ulsch[ii];
+                 LTE_eNB_ULSCH_t *ulsch = RC.eNB[module_idP][CC_id]->ulsch[ii];
                  if((ulsch != NULL) && (ulsch->rnti == rnti)){
                      LOG_I(MAC, "clean_eNb_ulsch UE %x \n", rnti);
                      clean_eNb_ulsch(ulsch);
-                     break;
+                 }
+             }
+             for (int ii=0; ii<NUMBER_OF_UE_MAX; ii++) {
+                 LTE_eNB_DLSCH_t *dlsch = RC.eNB[module_idP][CC_id]->dlsch[ii][0];
+                 if((dlsch != NULL) && (dlsch->rnti == rnti)){
+                     LOG_I(MAC, "clean_eNb_dlsch UE %x \n", rnti);
+                     clean_eNb_dlsch(dlsch);
                  }
              }
 
diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c
index c9ef58129b92b4580a6479622510b0b55085172e..964dd9f3d73a8ac87fbc99cc4a4185239fa9d968 100644
--- a/openair2/RRC/LITE/rrc_eNB.c
+++ b/openair2/RRC/LITE/rrc_eNB.c
@@ -809,6 +809,7 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
   rnti_t rnti = ue_context_pP->ue_context.rnti;
   int i, j , CC_id, pdu_number;
   LTE_eNB_ULSCH_t *ulsch = NULL;
+  LTE_eNB_DLSCH_t *dlsch = NULL;
   nfapi_ul_config_request_body_t *ul_req_tmp = NULL;
   PHY_VARS_eNB *eNB_PHY = NULL;
   eNB_MAC_INST *eNB_MAC = RC.mac[enb_mod_idP];
@@ -851,7 +852,13 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
         if((ulsch != NULL) && (ulsch->rnti == rnti)){
           LOG_I(RRC, "clean_eNb_ulsch UE %x \n", rnti);
           clean_eNb_ulsch(ulsch);
-          break;
+        }
+      }
+      for (i=0; i<NUMBER_OF_UE_MAX; i++) {
+        dlsch = eNB_PHY->dlsch[i][0];
+        if((dlsch != NULL) && (dlsch->rnti == rnti)){
+          LOG_I(RRC, "clean_eNb_dlsch UE %x \n", rnti);
+          clean_eNb_dlsch(dlsch);
         }
       }