diff --git a/openair1/PHY/impl_defs_lte.h b/openair1/PHY/impl_defs_lte.h
index e9604a36f649735e668407e431864ef9260cb186..5707aedd27ccdff32b079a7ce142d77522dddd5e 100755
--- a/openair1/PHY/impl_defs_lte.h
+++ b/openair1/PHY/impl_defs_lte.h
@@ -320,7 +320,7 @@ typedef struct {
   uint16_t srs_ConfigIndex;
   /// Parameter: \f$n^\text{CS}_\text{SRS}\f$. See TS 36.211 (5.5.3.1). \vr{[0..7]} \note the specification sais it is an enumerated value.
   uint8_t cyclicShift;
-  // Parameter: ue srs subframe for internal implementation
+  // Parameter: internal implementation: UE SRS configured
   uint8_t srsConfigDedicatedSetup;
   // Parameter: cell srs subframe for internal implementation
   uint8_t srsCellSubframe;
diff --git a/openair1/SCHED/defs.h b/openair1/SCHED/defs.h
index ac2d7957f2ffc72aaea81ca0a0753687560ae9c0..f283014af7b188c03bb229415defd369e45179f2 100644
--- a/openair1/SCHED/defs.h
+++ b/openair1/SCHED/defs.h
@@ -514,6 +514,10 @@ void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
 void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe, uint16_t coded_bits_per_codeword,int round, unsigned char harq_pid);
 
 
+int is_srs_occasion_common(LTE_DL_FRAME_PARMS *frame_parms,int frame_tx,int subframe_tx);
+
+void compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsPeriodicity,uint16_t *psrsOffset);
+
 /*@}*/
 
 
diff --git a/openair1/SCHED/phy_procedures_lte_common.c b/openair1/SCHED/phy_procedures_lte_common.c
index ae61f7be0dcd58017d1f7feacb99146b86f409f5..e5753483daf8c7966fd4684b985dc4d7c03f51f4 100644
--- a/openair1/SCHED/phy_procedures_lte_common.c
+++ b/openair1/SCHED/phy_procedures_lte_common.c
@@ -942,3 +942,148 @@ MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t  CC_id, rnti_t rnti)
 
   return &PHY_vars_eNB_g[Mod_id][CC_id]->mu_mimo_mode[UE_id];
 }
+
+int is_srs_occasion_common(LTE_DL_FRAME_PARMS *frame_parms,int frame_tx,int subframe_tx)
+{
+  uint8_t isSubframeSRS   = 0; // SRS Cell Occasion
+
+  //ue->ulsch[eNB_id]->srs_active   = 0;
+  //ue->ulsch[eNB_id]->Nsymb_pusch  = 12-(frame_parms->Ncp<<1)- ue->ulsch[eNB_id]->srs_active;
+  if(frame_parms->soundingrs_ul_config_common.enabled_flag)
+  {
+
+    LOG_D(PHY," SRS SUBFRAMECONFIG: %d\n", frame_parms->soundingrs_ul_config_common.srs_SubframeConfig);
+
+      uint8_t  TSFC;
+      uint16_t deltaTSFC; // bitmap
+      uint8_t  srs_SubframeConfig;
+
+      // table resuming TSFC (Period) and deltaSFC (offset)
+      const uint16_t deltaTSFCTabType1[15][2] = { {1,1},{1,2},{2,2},{1,5},{2,5},{4,5},{8,5},{3,5},{12,5},{1,10},{2,10},{4,10},{8,10},{351,10},{383,10} };      // Table 5.5.3.3-2 3GPP 36.211 FDD
+      const uint16_t deltaTSFCTabType2[14][2] = { {2,5},{6,5},{10,5},{18,5},{14,5},{22,5},{26,5},{30,5},{70,10},{74,10},{194,10},{326,10},{586,10},{210,10} }; // Table 5.5.3.3-2 3GPP 36.211 TDD
+
+      srs_SubframeConfig = frame_parms->soundingrs_ul_config_common.srs_SubframeConfig;
+      if (FDD == frame_parms->frame_type)
+      {
+          // srs_SubframeConfig =< 14
+          deltaTSFC = deltaTSFCTabType1[srs_SubframeConfig][0];
+          TSFC      = deltaTSFCTabType1[srs_SubframeConfig][1];
+      }
+      else
+      {
+          // srs_SubframeConfig =< 13
+          deltaTSFC = deltaTSFCTabType2[srs_SubframeConfig][0];
+          TSFC      = deltaTSFCTabType2[srs_SubframeConfig][1];
+      }
+
+      // Sounding reference signal subframes are the subframes satisfying ns/2 mod TSFC (- deltaTSFC
+      uint16_t tmp = (subframe_tx %  TSFC);
+      if((1<<tmp) & deltaTSFC)
+      {
+          // This is a Sounding reference signal subframes
+          isSubframeSRS = 1;
+      }
+      LOG_D(PHY," ISTDD: %d, TSFC: %d, deltaTSFC: %d, AbsSubframeTX: %d.%d\n", frame_parms->frame_type, TSFC, deltaTSFC, frame_tx, subframe_tx);
+  }
+  return(isSubframeSRS);
+}
+
+void compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsPeriodicity,uint16_t *psrsOffset)
+{
+    if(TDD == frameType)
+    {
+        if(isrs<10)
+        {
+            mac_xface->macphy_exit("2 ms SRS periodicity not supported");
+        }
+
+        if((isrs>9)&&(isrs<15))
+        {
+            *psrsPeriodicity=5;
+            *psrsOffset=isrs-10;
+        }
+        if((isrs>14)&&(isrs<25))
+        {
+            *psrsPeriodicity=10;
+            *psrsOffset=isrs-15;
+        }
+        if((isrs>24)&&(isrs<45))
+        {
+            *psrsPeriodicity=20;
+            *psrsOffset=isrs-25;
+        }
+        if((isrs>44)&&(isrs<85))
+        {
+            *psrsPeriodicity=40;
+            *psrsOffset=isrs-45;
+        }
+        if((isrs>84)&&(isrs<165))
+        {
+            *psrsPeriodicity=80;
+            *psrsOffset=isrs-85;
+        }
+        if((isrs>164)&&(isrs<325))
+        {
+            *psrsPeriodicity=160;
+            *psrsOffset=isrs-165;
+        }
+        if((isrs>324)&&(isrs<645))
+        {
+            *psrsPeriodicity=320;
+            *psrsOffset=isrs-325;
+        }
+
+        if(isrs>644)
+        {
+            mac_xface->macphy_exit("Isrs out of range");
+        }
+
+    }
+    else
+    {
+        if(isrs<2)
+        {
+            *psrsPeriodicity=2;
+            *psrsOffset=isrs;
+        }
+        if((isrs>1)&&(isrs<7))
+        {
+            *psrsPeriodicity=5;
+            *psrsOffset=isrs-2;
+        }
+        if((isrs>6)&&(isrs<17))
+        {
+            *psrsPeriodicity=10;
+            *psrsOffset=isrs-7;
+        }
+        if((isrs>16)&&(isrs<37))
+        {
+            *psrsPeriodicity=20;
+            *psrsOffset=isrs-17;
+        }
+        if((isrs>36)&&(isrs<77))
+        {
+            *psrsPeriodicity=40;
+            *psrsOffset=isrs-37;
+        }
+        if((isrs>76)&&(isrs<157))
+        {
+            *psrsPeriodicity=80;
+            *psrsOffset=isrs-77;
+        }
+        if((isrs>156)&&(isrs<317))
+        {
+            *psrsPeriodicity=160;
+            *psrsOffset=isrs-157;
+        }
+        if((isrs>316)&&(isrs<637))
+        {
+            *psrsPeriodicity=320;
+            *psrsOffset=isrs-317;
+        }
+        if(isrs>636)
+        {
+            mac_xface->macphy_exit("Isrs out of range");
+        }
+    }
+}
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index e9f1125a34fcac8af696f56527e6335ec85f956d..9257b0d48f9d8eee453af0e8548bc2e3cfa3ea49 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -307,8 +307,6 @@ void phy_procedures_emos_eNB_TX(unsigned char subframe, PHY_VARS_eNB *eNB)
 }
 #endif
 
-
-
 void phy_procedures_eNB_S_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,relaying_type_t r_type)
 {
   UNUSED(r_type);
@@ -824,6 +822,9 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
   int frame = proc->frame_tx;
   int subframe = proc->subframe_tx;
+  uint16_t srsPeriodicity;
+  uint16_t srsOffset;
+  uint16_t do_srs=0;
 
   LOG_D(PHY,
 	"[eNB %"PRIu8"][PUSCH %"PRIu8"] Frame %d subframe %d UL Frame %"PRIu32", UL Subframe %"PRIu8", Generated ULSCH (format0) DCI (rnti %"PRIx16", dci %"PRIx8"), aggregation %d\n",
@@ -839,6 +840,12 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
 	dci_alloc->dci_pdu[0],
 	1<<dci_alloc->L);
   
+  if (is_srs_occasion_common(fp,frame,subframe)) {
+    compute_srs_pos(fp->frame_type, eNB->physicalConfigDedicated[UE_id]->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex, &srsPeriodicity, &srsOffset);
+    if ((((10*frame+subframe) % srsPeriodicity) == srsOffset))
+      do_srs = 1;
+  }
+
   generate_eNB_ulsch_params_from_dci(eNB,
 				     proc,
 				     &dci_alloc->dci_pdu[0],
@@ -849,7 +856,7 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
 				     0,
 				     P_RNTI,
 				     CBA_RNTI,
-				     0);  // do_srs
+				     do_srs);  // do_srs
   
   LOG_T(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %"PRIx16") => %d\n",
 	eNB->Mod_id,frame,subframe,dci_alloc->rnti,
@@ -1344,7 +1351,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
   // Apply physicalConfigDedicated if needed
   // This is for UEs that have received this IE, which changes these DL and UL configuration, we apply after a delay for the eNodeB UL parameters
   phy_config_dedicated_eNB_step2(eNB);
-  
+
   // Now loop again over the DCIs for UL configuration
   for (i=0; i<DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) {
     dci_alloc = &DCI_pdu->dci_alloc[i];
@@ -2083,6 +2090,9 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
   PUCCH_FMT_t format;
   const int subframe = proc->subframe_rx;
   const int frame = proc->frame_rx;
+  uint16_t srsPeriodicity;
+  uint16_t srsOffset;
+  uint16_t do_srs=0;
 
   if ((eNB->dlsch[UE_id][0]) &&
       (eNB->dlsch[UE_id][0]->rnti>0) &&
@@ -2092,6 +2102,14 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
     do_SR = is_SR_subframe(eNB,proc,UE_id);
     //      do_SR = 0;
 
+    // check if there is SRS and we have to use shortened format
+    // TODO: check for exceptions in transmission of SRS together with ACK/NACK
+    if (is_srs_occasion_common(fp,frame,subframe)) {
+      compute_srs_pos(fp->frame_type, eNB->physicalConfigDedicated[UE_id]->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex, &srsPeriodicity, &srsOffset);
+      if ((((10*frame+subframe) % srsPeriodicity) == srsOffset))
+	do_srs = 1;
+    }
+
     // Now ACK/NAK
     // First check subframe_tx flag for earlier subframes
 
@@ -2150,7 +2168,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
                                 UE_id,
                                 eNB->scheduling_request_config[UE_id].sr_PUCCH_ResourceIndex,
                                 0, // n2_pucch
-                                0, // shortened format, should be use_srs flag, later
+                                do_srs, // shortened format
                                 &SR_payload,
                                 frame,
                                 subframe,
@@ -2190,7 +2208,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
                              UE_id,
                              (uint16_t)n1_pucch0,
                              0, //n2_pucch
-                             0, // shortened format
+                             do_srs, // shortened format
                              pucch_payload0,
                              frame,
                              subframe,
@@ -2220,7 +2238,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
                              UE_id,
                              eNB->scheduling_request_config[UE_id].sr_PUCCH_ResourceIndex,
                              0, //n2_pucch
-                             0, // shortened format
+                             do_srs, // shortened format
                              pucch_payload0,
                              frame,
                              subframe,
@@ -2281,7 +2299,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
                                UE_id,
                                eNB->scheduling_request_config[UE_id].sr_PUCCH_ResourceIndex,
                                0, //n2_pucch
-                               0, // shortened format
+                               do_srs, // shortened format
                                pucch_payload0,
                                frame,
                                subframe,
@@ -2313,7 +2331,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
                                  UE_id,
                                  (uint16_t)n1_pucch0,
                                  0, // n2_pucch
-                                 0, // shortened format
+				 do_srs, // shortened format
                                  pucch_payload0,
                                  frame,
                                  subframe,
@@ -2338,7 +2356,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
                                  UE_id,
                                  (uint16_t)n1_pucch1,
                                  0, //n2_pucch
-                                 0, // shortened format
+                                 do_srs, // shortened format
                                  pucch_payload1,
                                  frame,
                                  subframe,
@@ -2886,8 +2904,6 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
   eNB->rb_mask_ul[2]=0;
   eNB->rb_mask_ul[3]=0;
 
-
-
   // Check for active processes in current subframe
   harq_pid = subframe2harq_pid(fp,
                                frame,subframe);
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index cd8fbdbc8eec0b3130e91eb6645f9ca69f6f8278..381ea547e4c529de76d925694c3182a4d650ee45 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -435,163 +435,26 @@ uint8_t is_ri_TXOp(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id)
     return(0);
 }
 
-void compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsPeriodicity,uint16_t *psrsOffset)
-{
-    if(TDD == frameType)
-    {
-        if(isrs<10)
-        {
-            mac_xface->macphy_exit("2 ms SRS periodicity not supported");
-        }
 
-        if((isrs>9)&&(isrs<15))
-        {
-            *psrsPeriodicity=5;
-            *psrsOffset=isrs-10;
-        }
-        if((isrs>14)&&(isrs<25))
-        {
-            *psrsPeriodicity=10;
-            *psrsOffset=isrs-15;
-        }
-        if((isrs>24)&&(isrs<45))
-        {
-            *psrsPeriodicity=20;
-            *psrsOffset=isrs-25;
-        }
-        if((isrs>44)&&(isrs<85))
-        {
-            *psrsPeriodicity=40;
-            *psrsOffset=isrs-45;
-        }
-        if((isrs>84)&&(isrs<165))
-        {
-            *psrsPeriodicity=80;
-            *psrsOffset=isrs-85;
-        }
-        if((isrs>164)&&(isrs<325))
-        {
-            *psrsPeriodicity=160;
-            *psrsOffset=isrs-165;
-        }
-        if((isrs>324)&&(isrs<645))
-        {
-            *psrsPeriodicity=320;
-            *psrsOffset=isrs-325;
-        }
-
-        if(isrs>644)
-        {
-            mac_xface->macphy_exit("Isrs out of range");
-        }
-
-    }
-    else
-    {
-        if(isrs<2)
-        {
-            *psrsPeriodicity=2;
-            *psrsOffset=isrs;
-        }
-        if((isrs>1)&&(isrs<7))
-        {
-            *psrsPeriodicity=5;
-            *psrsOffset=isrs-2;
-        }
-        if((isrs>6)&&(isrs<17))
-        {
-            *psrsPeriodicity=10;
-            *psrsOffset=isrs-7;
-        }
-        if((isrs>16)&&(isrs<37))
-        {
-            *psrsPeriodicity=20;
-            *psrsOffset=isrs-17;
-        }
-        if((isrs>36)&&(isrs<77))
-        {
-            *psrsPeriodicity=40;
-            *psrsOffset=isrs-37;
-        }
-        if((isrs>76)&&(isrs<157))
-        {
-            *psrsPeriodicity=80;
-            *psrsOffset=isrs-77;
-        }
-        if((isrs>156)&&(isrs<317))
-        {
-            *psrsPeriodicity=160;
-            *psrsOffset=isrs-157;
-        }
-        if((isrs>316)&&(isrs<637))
-        {
-            *psrsPeriodicity=320;
-            *psrsOffset=isrs-317;
-        }
-        if(isrs>636)
-        {
-            mac_xface->macphy_exit("Isrs out of range");
-        }
-    }
-}
 
-void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id)
+void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t isSubframeSRS) 
 {
-    LTE_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
-    int frame_tx    = proc->frame_tx;
-    int subframe_tx = proc->subframe_tx;
-    uint8_t isSubframeSRS   = 0; // SRS Cell Occasion
-
-    uint8_t is_pucch2_subframe = 0;
-    uint8_t is_sr_an_subframe  = 0;
-
-    SOUNDINGRS_UL_CONFIG_DEDICATED *pSoundingrs_ul_config_dedicated=&ue->soundingrs_ul_config_dedicated[eNB_id];
+  
+  LTE_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
+  int frame_tx    = proc->frame_tx;
+  int subframe_tx = proc->subframe_tx;
+  SOUNDINGRS_UL_CONFIG_DEDICATED *pSoundingrs_ul_config_dedicated=&ue->soundingrs_ul_config_dedicated[eNB_id];
+  uint16_t srsPeriodicity;
+  uint16_t srsOffset;
+  uint8_t is_pucch2_subframe = 0;
+  uint8_t is_sr_an_subframe  = 0;
 
   // check for SRS opportunity
   pSoundingrs_ul_config_dedicated->srsUeSubframe   = 0;
-  pSoundingrs_ul_config_dedicated->srsCellSubframe = 0;
+  pSoundingrs_ul_config_dedicated->srsCellSubframe = isSubframeSRS;
 
-  ue->ulsch[eNB_id]->srs_active   = 0;
-  ue->ulsch[eNB_id]->Nsymb_pusch  = 12-(frame_parms->Ncp<<1)- ue->ulsch[eNB_id]->srs_active;
-  if(frame_parms->soundingrs_ul_config_common.enabled_flag)
-  {
-
-      LOG_D(PHY," SRS SUBFRAMECONFIG: %d, Isrs: %d \n", frame_parms->soundingrs_ul_config_common.srs_SubframeConfig, pSoundingrs_ul_config_dedicated->srs_ConfigIndex);
-
-      uint8_t  TSFC;
-      uint16_t deltaTSFC; // bitmap
-      uint8_t  srs_SubframeConfig;
-      uint16_t srsPeriodicity;
-      uint16_t srsOffset;
-
-      // table resuming TSFC (Period) and deltaSFC (offset)
-      const uint16_t deltaTSFCTabType1[15][2] = { {1,1},{1,2},{2,2},{1,5},{2,5},{4,5},{8,5},{3,5},{12,5},{1,10},{2,10},{4,10},{8,10},{351,10},{383,10} };      // Table 5.5.3.3-2 3GPP 36.211 FDD
-      const uint16_t deltaTSFCTabType2[14][2] = { {2,5},{6,5},{10,5},{18,5},{14,5},{22,5},{26,5},{30,5},{70,10},{74,10},{194,10},{326,10},{586,10},{210,10} }; // Table 5.5.3.3-2 3GPP 36.211 TDD
-
-      srs_SubframeConfig = frame_parms->soundingrs_ul_config_common.srs_SubframeConfig;
-      if (FDD == frame_parms->frame_type)
-      {
-          // srs_SubframeConfig =< 14
-          deltaTSFC = deltaTSFCTabType1[srs_SubframeConfig][0];
-          TSFC      = deltaTSFCTabType1[srs_SubframeConfig][1];
-      }
-      else
-      {
-          // srs_SubframeConfig =< 13
-          deltaTSFC = deltaTSFCTabType2[srs_SubframeConfig][0];
-          TSFC      = deltaTSFCTabType2[srs_SubframeConfig][1];
-      }
-
-      // Sounding reference signal subframes are the subframes satisfying ns/2 mod TSFC (- deltaTSFC
-      uint16_t tmp = (subframe_tx %  TSFC);
-      if((1<<tmp) & deltaTSFC)
-      {
-          // This is a Sounding reference signal subframes
-          isSubframeSRS = 1;
-          pSoundingrs_ul_config_dedicated->srsCellSubframe  = 1;
-      }
-      LOG_D(PHY," ISTDD: %d, TSFC: %d, deltaTSFC: %d, AbsSubframeTX: %d.%d, srsCellSubframe: %d \n", frame_parms->frame_type, TSFC, deltaTSFC, frame_tx, subframe_tx, pSoundingrs_ul_config_dedicated->srsCellSubframe);
-      LOG_D(PHY," SrsDedicatedSetup: %d \n",pSoundingrs_ul_config_dedicated->srsConfigDedicatedSetup);
+  if (isSubframeSRS) {  
+    LOG_D(PHY," SrsDedicatedSetup: %d \n",pSoundingrs_ul_config_dedicated->srsConfigDedicatedSetup);
       if(pSoundingrs_ul_config_dedicated->srsConfigDedicatedSetup)
       {
           compute_srs_pos(frame_parms->frame_type, pSoundingrs_ul_config_dedicated->srs_ConfigIndex, &srsPeriodicity, &srsOffset);
@@ -666,6 +529,7 @@ void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id
   }
 }
 
+
 void get_cqipmiri_params(PHY_VARS_UE *ue,uint8_t eNB_id)
 {
 
@@ -2131,9 +1995,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
   int subframe_tx = proc->subframe_tx;
   int frame_tx = proc->frame_tx;
   unsigned int aa;
-  
-
-
+  uint8_t isSubframeSRS;
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX,VCD_FUNCTION_IN);
 
@@ -2161,7 +2023,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
       
   if (ue->UE_mode[eNB_id] != PRACH) {
     // check cell srs subframe and ue srs subframe. This has an impact on pusch encoding
-    ue_compute_srs_occasion(ue,proc,eNB_id);
+    isSubframeSRS = is_srs_occasion_common(&ue->frame_parms,proc->frame_tx,proc->subframe_tx);
+
+    ue_compute_srs_occasion(ue,proc,eNB_id,isSubframeSRS);
 
     ue_ulsch_uespec_procedures(ue,proc,eNB_id,abstraction_flag);
 
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 55c6b8387eef3df727539536679b6d4a6a8fa00a..543cc8023ef0baf55ea6551738fc5f6e0c4282d2 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -632,12 +632,14 @@ int main(int argc, char **argv)
 
   UE->pdcch_vars[0]->crnti = 14;
 
+  UE->frame_parms.soundingrs_ul_config_common.enabled_flag = srs_flag;
   UE->frame_parms.soundingrs_ul_config_common.srs_BandwidthConfig = 2;
   UE->frame_parms.soundingrs_ul_config_common.srs_SubframeConfig = 7;
   UE->soundingrs_ul_config_dedicated[eNB_id].srs_Bandwidth = 0;
   UE->soundingrs_ul_config_dedicated[eNB_id].transmissionComb = 0;
   UE->soundingrs_ul_config_dedicated[eNB_id].freqDomainPosition = 0;
 
+  eNB->frame_parms.soundingrs_ul_config_common.enabled_flag = srs_flag;
   eNB->frame_parms.soundingrs_ul_config_common.srs_BandwidthConfig = 2;
   eNB->frame_parms.soundingrs_ul_config_common.srs_SubframeConfig = 7;
 
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 6d0044b346a2484aeccedb1a4932572eb8e1b7cd..585d9c2c1c7c7ac9443b60fb895553233d2d062d 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -885,7 +885,7 @@ abort();
               rb_table_index=UE_template->pre_allocated_rb_table_index_ul;
             } else {
 	      mcs=10;//cmin (10, openair_daq_vars.target_ue_ul_mcs);
-              rb_table_index=5; // for PHR
+              rb_table_index=13; // for PHR
 	    }
 
             UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_mcs2=mcs;
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
index 5ef5a4f50b6e653a75f1c817cc6eeba3804d9d97..19a77a04ec7c16b45e7ffad2f7d9ac0201853bc1 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
@@ -62,11 +62,11 @@ eNBs =
         pusch_nDMRS1                                       = 1;
         phich_duration                                     = "NORMAL";
         phich_resource                                     = "ONESIXTH";
-        srs_enable                                         = "DISABLE";
-        /*  srs_BandwidthConfig                                =;
-        srs_SubframeConfig                                 =;
-        srs_ackNackST                                      =;
-        srs_MaxUpPts                                       =;*/
+        srs_enable                                         = "ENBABLE";
+        srs_BandwidthConfig                                = 2;
+        srs_SubframeConfig                                 = 3;
+        srs_ackNackST                                      = "FALSE";
+        srs_MaxUpPts                                       = "DISABLE";
 
         pusch_p0_Nominal                                   = -90;
         pusch_alpha                                        = "AL1";