From 0928f049bb9e73fda2bec6376dc678c56d81d613 Mon Sep 17 00:00:00 2001
From: jftt_wangshanshan <wang.shanshan@cn.fujitsu.com>
Date: Wed, 9 May 2018 18:22:22 +0800
Subject: [PATCH] Fix cqi_req_flag, to prevent continously schedule cqi after
 set it to 1 and before actually receive it at the right subframe.

---
 openair1/SCHED/phy_procedures_lte_eNb.c   | 5 +++--
 openair2/LAYER2/MAC/eNB_scheduler_ulsch.c | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 1251463ef4..45ebc0b078 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -1447,9 +1447,10 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
 	fill_ulsch_cqi_indication(eNB,frame,subframe,
 				  ulsch_harq,
 				  ulsch->rnti);
-	        RC.mac[eNB->Mod_id]->UE_list.UE_sched_ctrl[i].cqi_req_flag = 0;
+	        RC.mac[eNB->Mod_id]->UE_list.UE_sched_ctrl[i].cqi_req_flag &= (~(1 << subframe));
       }else{
-          if(RC.mac[eNB->Mod_id]->UE_list.UE_sched_ctrl[i].cqi_req_flag==1){
+          if(RC.mac[eNB->Mod_id]->UE_list.UE_sched_ctrl[i].cqi_req_flag & (1 << subframe) ){
+              RC.mac[eNB->Mod_id]->UE_list.UE_sched_ctrl[i].cqi_req_flag &= (~(1 << subframe));
               RC.mac[eNB->Mod_id]->UE_list.UE_sched_ctrl[i].cqi_req_timer=30;
               LOG_D(PHY,"RM804 Frame %d,Subframe %d, We're supposed to get a cqi here. Set cqi_req_timer to 30.\n",frame,subframe);
           }
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 0f7572a863..1eb3070c0f 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -1324,6 +1324,7 @@ schedule_ulsch_rnti(module_id_t module_idP,
                       cqi_req = 0;
                     } else {
                       cqi_req = 1;
+                      UE_sched_ctrl->cqi_req_flag |= 1 << sched_subframeP;
                     }
 		    UE_sched_ctrl->cqi_req_timer = 0;
 		} else
@@ -1857,7 +1858,7 @@ void schedule_ulsch_rnti(module_id_t   module_idP,
       else if (UE_sched_ctrl->cqi_req_timer>30) {
         cqi_req = 1;
         UE_sched_ctrl->cqi_req_timer=0;
-        UE_sched_ctrl->cqi_req_flag=1;
+        UE_sched_ctrl->cqi_req_flag |= 1 << sched_subframeP;
       }
       else
         cqi_req = 0;
-- 
GitLab