Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
authormmiozzo
Wed, 25 Apr 2012 17:36:25 +0200
changeset 8729 74de12409ee5
parent 8728 5a99218bfd1b
child 8730 01407f09cafd
Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
src/lte/model/lte-common.h
src/lte/model/lte-enb-mac.cc
src/lte/model/lte-enb-mac.h
src/lte/model/lte-enb-phy-sap.h
src/lte/model/lte-enb-phy.cc
src/lte/model/lte-enb-phy.h
src/lte/model/lte-phy.cc
src/lte/model/lte-ue-mac.cc
src/lte/model/lte-ue-phy.cc
src/lte/model/lte-ue-phy.h
src/lte/model/pf-ff-mac-scheduler.cc
src/lte/model/pf-ff-mac-scheduler.h
src/lte/model/rr-ff-mac-scheduler.cc
src/lte/model/rr-ff-mac-scheduler.h
src/lte/test/lte-test-interference.cc
src/lte/test/lte-test-link-adaptation.cc
src/lte/test/test-lte-antenna.cc
--- a/src/lte/model/lte-common.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-common.h	Wed Apr 25 17:36:25 2012 +0200
@@ -24,6 +24,9 @@
 #include "ns3/uinteger.h"
 #include <math.h>
 
+// see 36.213 section 8
+#define UL_PUSCH_TTIS_DELAY 4
+
 namespace ns3 {
 
 
--- a/src/lte/model/lte-enb-mac.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-enb-mac.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -381,7 +381,7 @@
 void
 LteEnbMac::DoSubframeIndication (uint32_t frameNo, uint32_t subframeNo)
 {
-  NS_LOG_FUNCTION (this);
+  NS_LOG_FUNCTION (this << " EnbMac - frame " << frameNo << " subframe " << subframeNo);
 
   // Store current frame / subframe number
   m_frameNo = frameNo;
@@ -407,8 +407,22 @@
 
 
   // Get downlink transmission opportunities
+//   uint32_t dlSchedFrameNo = (0x3FF & (m_frameNo >> 4));
+//   uint32_t dlSchedSubframeNo = (0xF & m_subframeNo);
+  uint32_t dlSchedFrameNo = m_frameNo;
+  uint32_t dlSchedSubframeNo = m_subframeNo;
+  //   NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
+  if (dlSchedSubframeNo + m_macChTtiDelay > 10)
+    {
+      dlSchedFrameNo++;
+      dlSchedSubframeNo = (dlSchedSubframeNo + m_macChTtiDelay) % 10;
+    }
+  else
+    {
+      dlSchedSubframeNo = dlSchedSubframeNo + m_macChTtiDelay;
+    }
   FfMacSchedSapProvider::SchedDlTriggerReqParameters params;  // to be filled
-  params.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+  params.m_sfnSf = ((0x3FF & dlSchedFrameNo) << 4) | (0xF & dlSchedSubframeNo);
   m_schedSapProvider->SchedDlTriggerReq (params);
 
 
@@ -417,7 +431,14 @@
   if (m_ulCqiReceived.size () > 0)
     {
       FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqiInfoReq;
-      ulcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+      if (subframeNo>1)
+        {        
+          ulcqiInfoReq.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+        }
+      else
+        {
+          ulcqiInfoReq.m_sfnSf = ((0x3FF & (frameNo-1)) << 4) | (0xF & 10);
+        }
       int cqiNum = m_ulCqiReceived.size ();
       if (cqiNum >= 1)
         {
@@ -446,8 +467,21 @@
 
 
   // Get uplink transmission opportunities
+  uint32_t ulSchedFrameNo = m_frameNo;
+  uint32_t ulSchedSubframeNo = m_subframeNo;
+  //   NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
+  if (ulSchedSubframeNo + (m_macChTtiDelay+UL_PUSCH_TTIS_DELAY) > 10)
+    {
+      ulSchedFrameNo++;
+      ulSchedSubframeNo = (ulSchedSubframeNo + (m_macChTtiDelay+UL_PUSCH_TTIS_DELAY)) % 10;
+    }
+  else
+    {
+//       ulSchedSubframeNo = (ulSchedSubframeNo + (2*m_macChTtiDelay)) % 11;
+      ulSchedSubframeNo = ulSchedSubframeNo + (m_macChTtiDelay+UL_PUSCH_TTIS_DELAY);
+    }
   FfMacSchedSapProvider::SchedUlTriggerReqParameters ulparams;
-  ulparams.m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
+  ulparams.m_sfnSf = ((0x3FF & ulSchedFrameNo) << 4) | (0xF & ulSchedSubframeNo);
 
   std::map <uint16_t,UlInfoListElement_s>::iterator it;
   for (it = m_ulInfoListElements.begin (); it != m_ulInfoListElements.end (); it++)
@@ -592,6 +626,7 @@
   // Configure the subset of parameters used by FfMacScheduler
   params.m_ulBandwidth = ulBandwidth;
   params.m_dlBandwidth = dlBandwidth;
+  m_macChTtiDelay = m_enbPhySapProvider->GetMacChTtiDelay ();
   // ...more parameters can be configured
   m_cschedSapProvider->CschedCellConfigReq (params);
 }
--- a/src/lte/model/lte-enb-mac.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-enb-mac.h	Wed Apr 25 17:36:25 2012 +0200
@@ -227,6 +227,9 @@
    * Frame number, Subframe number, RNTI, MCS of TB, size of TB
    */
   TracedCallback<uint32_t, uint32_t, uint16_t, uint8_t, uint16_t> m_ulScheduling;
+  
+  uint8_t m_macChTtiDelay; // delay of MAC, PHY and channel in terms of TTIs
+  
 
 };
 
--- a/src/lte/model/lte-enb-phy-sap.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-enb-phy-sap.h	Wed Apr 25 17:36:25 2012 +0200
@@ -72,6 +72,12 @@
    * \param msg the Ideal Control Message to send
    */
   virtual void SendIdealControlMessage (Ptr<IdealControlMessage> msg) = 0;
+  
+  /**
+  * \brief Get the delay from MAC to Channel expressed in TTIs
+  *
+  */
+  virtual uint8_t GetMacChTtiDelay () = 0;
 
 
 };
--- a/src/lte/model/lte-enb-phy.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-enb-phy.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -56,6 +56,7 @@
   virtual void SetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth);
   virtual void SetCellId (uint16_t cellId);
   virtual void SendIdealControlMessage (Ptr<IdealControlMessage> msg);
+  virtual uint8_t GetMacChTtiDelay ();
   virtual void SetTransmissionMode (uint16_t  rnti, uint8_t txMode);
   
 
@@ -93,6 +94,12 @@
   m_phy->DoSendIdealControlMessage (msg);
 }
 
+uint8_t
+EnbMemberLteEnbPhySapProvider::GetMacChTtiDelay ()
+{
+  return (m_phy->DoGetMacChTtiDelay ());
+}
+
 void
 EnbMemberLteEnbPhySapProvider::SetTransmissionMode (uint16_t  rnti, uint8_t txMode)
 {
@@ -122,11 +129,6 @@
 {
   m_enbPhySapProvider = new EnbMemberLteEnbPhySapProvider (this);
   Simulator::ScheduleNow (&LteEnbPhy::StartFrame, this);
-  for (int i = 0; i < m_macChTtiDelay; i++)
-    {
-      std::list<UlDciIdealControlMessage> l;
-      m_ulDciQueue.push_back (l);
-    }
 }
 
 TypeId
@@ -231,7 +233,20 @@
 LteEnbPhy::SetMacChDelay (uint8_t delay)
 {
   m_macChTtiDelay = delay;
-  m_packetBurstQueue.resize (delay);
+  for (int i = 0; i < m_macChTtiDelay; i++)
+    {
+      Ptr<PacketBurst> pb = CreateObject <PacketBurst> ();
+      m_packetBurstQueue.push_back (pb);
+      std::list<Ptr<IdealControlMessage> > l;
+      m_controlMessagesQueue.push_back (l);
+      std::list<UlDciIdealControlMessage> l1;
+      m_ulDciQueue.push_back (l1);
+    }
+  for (int i = 0; i < UL_PUSCH_TTIS_DELAY; i++)
+    {
+      std::list<UlDciIdealControlMessage> l1;
+      m_ulDciQueue.push_back (l1);
+    }
 }
 
 uint8_t
@@ -283,6 +298,12 @@
   SetMacPdu (p);
 }
 
+uint8_t
+LteEnbPhy::DoGetMacChTtiDelay ()
+{
+  return (m_macChTtiDelay);
+}
+
 
 void
 LteEnbPhy::PhyPduReceived (Ptr<Packet> p)
@@ -534,7 +555,7 @@
 LteEnbPhy::QueueUlDci (UlDciIdealControlMessage m)
 {
   NS_LOG_FUNCTION (this);
-  m_ulDciQueue.at (m_macChTtiDelay - 1).push_back (m);
+  m_ulDciQueue.at (UL_PUSCH_TTIS_DELAY - 1).push_back (m);
 }
 
 std::list<UlDciIdealControlMessage>
--- a/src/lte/model/lte-enb-phy.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-enb-phy.h	Wed Apr 25 17:36:25 2012 +0200
@@ -111,6 +111,8 @@
   * \param p the MAC PDU to sent
   */
   virtual void DoSendMacPdu (Ptr<Packet> p);
+  
+  virtual uint8_t DoGetMacChTtiDelay ();
 
 
   void DoSetDownlinkSubChannels ();
--- a/src/lte/model/lte-phy.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-phy.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -48,19 +48,9 @@
     m_ulBandwidth (0),
     m_dlBandwidth (0),
     m_rbgSize (0),
-    m_macChTtiDelay (2) // 1 TTI delay between MAC and CH
+    m_macChTtiDelay (0)
 {
   NS_LOG_FUNCTION (this);
-  for (int i = 0; i < m_macChTtiDelay; i++)
-    {
-      Ptr<PacketBurst> pb = CreateObject <PacketBurst> ();
-      m_packetBurstQueue.push_back (pb);
-    }
-  for (int i = 0; i < m_macChTtiDelay; i++)
-    {
-      std::list<Ptr<IdealControlMessage> > l;
-      m_controlMessagesQueue.push_back (l);
-    }
 }
 
 
--- a/src/lte/model/lte-ue-mac.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-ue-mac.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -388,8 +388,15 @@
           if (itBsr!=m_ulBsrReceived.end ())
             {
               NS_LOG_FUNCTION (this << "\t" << dci.m_tbSize / m_macSapUserMap.size () << " bytes to LC " << (uint16_t)(*it).first << " queue " << (*itBsr).second);
-              (*it).second->NotifyTxOpportunity (dci.m_tbSize / activeLcs, 0); // UE works only in SISO mode
-              (*itBsr).second -= dci.m_tbSize / activeLcs;
+              (*it).second->NotifyTxOpportunity (dci.m_tbSize / activeLcs, 0);
+              if ((*itBsr).second >=  dci.m_tbSize / activeLcs)
+                {
+                  (*itBsr).second -= dci.m_tbSize / activeLcs;
+                }
+              else
+                {
+                  (*itBsr).second = 0;
+                }
             }
         }
 
--- a/src/lte/model/lte-ue-phy.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-ue-phy.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -35,6 +35,7 @@
 #include "lte-ue-mac.h"
 #include "ff-mac-common.h"
 #include "lte-sinr-chunk-processor.h"
+#include <ns3/lte-common.h>
 
 
 NS_LOG_COMPONENT_DEFINE ("LteUePhy");
@@ -118,8 +119,15 @@
 {
   m_amc = CreateObject <LteAmc> ();
   m_uePhySapProvider = new UeMemberLteUePhySapProvider (this);
+  m_macChTtiDelay = UL_PUSCH_TTIS_DELAY + 1; // +1 for avoiding UL/DL trigger synchronization remove 1 TTI of delay
+  for (int i = 0; i < m_macChTtiDelay; i++)
+    {
+      Ptr<PacketBurst> pb = CreateObject <PacketBurst> ();
+      m_packetBurstQueue.push_back (pb);
+      std::list<Ptr<IdealControlMessage> > l;
+      m_controlMessagesQueue.push_back (l);
+    }
   std::vector <int> ulRb;
-  SetMacChDelay (m_macChTtiDelay + 1); // +1 for avoiding UL/DL trigger synchronization remove 1 TTI of delay
   m_subChannelsForTransmissionQueue.resize (m_macChTtiDelay, ulRb);
 }
 
@@ -253,13 +261,6 @@
   return m_txPower;
 }
 
-void
-LteUePhy::SetMacChDelay (uint8_t delay)
-{
-  m_macChTtiDelay = delay;
-  Ptr<PacketBurst> pb = CreateObject <PacketBurst> ();
-  m_packetBurstQueue.resize (delay, pb);
-}
 
 uint8_t
 LteUePhy::GetMacChDelay (void) const
@@ -527,6 +528,7 @@
   else if (msg->GetMessageType () == IdealControlMessage::UL_DCI) 
     {
       // set the uplink bandwidht according to the UL-CQI
+      NS_LOG_DEBUG (this << " UL DCI");
       Ptr<UlDciIdealControlMessage> msg2 = DynamicCast<UlDciIdealControlMessage> (msg);
       UlDciListElement_s dci = msg2->GetDci ();
       std::vector <int> ulRb;
@@ -592,7 +594,7 @@
   Ptr<PacketBurst> pb = GetPacketBurst ();
   if (pb)
     {
-      NS_LOG_LOGIC (this << " UE " << m_rnti << " start TX " << pb->GetNPackets());
+      NS_LOG_LOGIC (this << " UE - start TX");
       m_uplinkSpectrumPhy->StartTx (pb);
     }
     
--- a/src/lte/model/lte-ue-phy.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/lte-ue-phy.h	Wed Apr 25 17:36:25 2012 +0200
@@ -102,11 +102,6 @@
   double GetNoiseFigure () const;
 
   /**
-   * \param delay the TTI delay between MAC and channel
-   */
-  void SetMacChDelay (uint8_t delay);
-
-  /**
    * \returns the TTI delay between MAC and channel
    */
   uint8_t GetMacChDelay (void) const;
--- a/src/lte/model/pf-ff-mac-scheduler.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/pf-ff-mac-scheduler.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -211,8 +211,6 @@
   :   m_cschedSapUser (0),
     m_schedSapUser (0),
     m_timeWindow (99.0),
-    m_schedTtiDelay (4),
-    // WILD HACK: based on a m_macChTtiDelay = 2
     m_nextRntiUl (0)
 {
   m_amc = CreateObject <LteAmc> ();
@@ -811,7 +809,7 @@
 void
 PfFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params)
 {
-//   NS_LOG_FUNCTION (this << " Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
+  NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
  
   RefreshUlCqiMaps ();
 
@@ -1047,26 +1045,11 @@
 PfFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
-//   NS_LOG_DEBUG (this << " RX SFNID " << params.m_sfnSf << " delay " << (uint32_t)m_schedTtiDelay);
-  // correlate info on UL-CQIs with previous scheduling -> calculate m_sfnSf of transmission
-  uint32_t frameNo = (0x3FF & (params.m_sfnSf >> 4));
-  uint32_t subframeNo = (0xF & params.m_sfnSf);
-//   NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
-  if (subframeNo <= (uint32_t)(m_schedTtiDelay + 1))
-    {
-      frameNo--;
-      subframeNo = (10 + subframeNo - (m_schedTtiDelay + 1)) % 11;
-    }
-  else
-    {
-      subframeNo = (subframeNo - (m_schedTtiDelay + 1)) % 11;
-    }
-  uint16_t sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
-//   NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo << " sfnSf "  << sfnSf);
+//   NS_LOG_DEBUG (this << " RX SFNID " << params.m_sfnSf);
   // retrieve the allocation for this subframe
   std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
   std::map <uint16_t, std::vector <double> >::iterator itCqi;
-  itMap = m_allocationMaps.find (sfnSf);
+  itMap = m_allocationMaps.find (params.m_sfnSf);
   if (itMap == m_allocationMaps.end ())
     {
       NS_LOG_DEBUG (this << " Does not find info on allocation, size : " << m_allocationMaps.size ());
--- a/src/lte/model/pf-ff-mac-scheduler.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/pf-ff-mac-scheduler.h	Wed Apr 25 17:36:25 2012 +0200
@@ -212,7 +212,6 @@
 
 
   double m_timeWindow;
-  uint8_t m_schedTtiDelay; // delay between scheduling and reception (based on m_macChTtiDelay)
 
   uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
   
--- a/src/lte/model/rr-ff-mac-scheduler.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/rr-ff-mac-scheduler.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -212,8 +212,6 @@
 RrFfMacScheduler::RrFfMacScheduler ()
   :   m_cschedSapUser (0),
     m_schedSapUser (0),
-    m_schedTtiDelay (4),
-    // WILD ACK: based on a m_macChTtiDelay = 1
     m_nextRntiDl (0),
     m_nextRntiUl (0)
 {
@@ -537,7 +535,7 @@
 //       int totRbg = lcNum * rbgPerFlow;
 //       totRbg = rbgNum / nTbs;
       int tbSize = (m_amc->GetTbSizeFromMcs (newDci.m_mcs.at (0), rbgPerTb * rbgSize) / 8);
-//       NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " LCs " << (uint16_t)(*itLcRnti).second << " bytes " << tbSize << " PRBs " <<  rbgAllocated * rbgSize << "..." << (rbgAllocated* rbgSize) + (rbgPerTb * rbgSize) - 1 << " mcs " << (uint16_t) newDci.m_mcs.at (0) << " layers " << nLayer);
+      NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " LCs " << (uint16_t)(*itLcRnti).second << " bytes " << tbSize << " PRBs " <<  rbgAllocated * rbgSize << "..." << (rbgAllocated* rbgSize) + (rbgPerTb * rbgSize) - 1 << " mcs " << (uint16_t) newDci.m_mcs.at (0) << " layers " << nLayer);
       uint16_t rlcPduSize = tbSize / lcNum;
       for (int i = 0; i < lcNum ; i++)
         {
@@ -650,7 +648,7 @@
 void
 RrFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params)
 {
-//   NS_LOG_FUNCTION (this << " Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
+  NS_LOG_FUNCTION (this << " Ul - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
 
 
   RefreshUlCqiMaps ();
@@ -763,7 +761,7 @@
         }
         
       uldci.m_tbSize = (m_amc->GetTbSizeFromMcs (uldci.m_mcs, rbPerFlow) / 8); // MCS 0 -> UL-AMC TBD
-//       NS_LOG_DEBUG (this << " UE " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize);
+      NS_LOG_DEBUG (this << " UL - UE " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize);
       UpdateUlRlcBufferInfo (uldci.m_rnti, uldci.m_tbSize);
       uldci.m_ndi = 1;
       uldci.m_cceIndex = 0;
@@ -851,24 +849,11 @@
 {
   NS_LOG_FUNCTION (this);
   NS_LOG_DEBUG (this << " RX SFNID " << params.m_sfnSf);
-  // correlate info on UL-CQIs with previous scheduling -> calculate m_sfnSf of transmission
-  uint32_t frameNo = (0x3FF & (params.m_sfnSf >> 4));
-  uint32_t subframeNo = (0xF & params.m_sfnSf);
-  if (subframeNo <= (uint32_t)(m_schedTtiDelay + 1))
-    {
-      frameNo--;
-      subframeNo = (10 + subframeNo - (m_schedTtiDelay + 1)) % 11;
-    }
-  else
-    {
-      subframeNo = (subframeNo - (m_schedTtiDelay + 1)) % 11;
-    }
-  uint16_t sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
 //     NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo << " sfnSf "  << sfnSf);
   // retrieve the allocation for this subframe
   std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
   std::map <uint16_t, std::vector <double> >::iterator itCqi;
-  itMap = m_allocationMaps.find (sfnSf);
+  itMap = m_allocationMaps.find (params.m_sfnSf);
   if (itMap == m_allocationMaps.end ())
     {
       NS_LOG_DEBUG (this << " Does not find info on allocation");
--- a/src/lte/model/rr-ff-mac-scheduler.h	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/model/rr-ff-mac-scheduler.h	Wed Apr 25 17:36:25 2012 +0200
@@ -178,8 +178,6 @@
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
 
-  uint8_t m_schedTtiDelay; // delay between scheduling and reception (based on m_macChTtiDelay)
-
   uint16_t m_nextRntiDl; // RNTI of the next user to be served next scheduling in DL
   uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
   
--- a/src/lte/test/lte-test-interference.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/test/lte-test-interference.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -202,7 +202,7 @@
                    MakeBoundCallback (&LteTestUlSchedulingCallback, this));
 
 
-  Simulator::Stop (Seconds (0.010));
+  Simulator::Stop (Seconds (0.020));
   Simulator::Run ();
   
 
@@ -232,7 +232,7 @@
    *    For first 4 subframeNo in the first frameNo, the MCS cannot be properly evaluated,
    *    because CQI feedback is still not available at the eNB.
    */
-  if ( (frameNo > 1) || (subframeNo > 8) )
+  if ( (frameNo > 1) || (subframeNo > 9) )
     {
       NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_dlMcs, "Wrong DL MCS ");
     }
@@ -247,7 +247,7 @@
    *    For first 5 subframeNo in the first frameNo, the MCS cannot be properly evaluated,
    *    because CQI feedback is still not available at the eNB.
    */
-  if ( (frameNo > 1) || (subframeNo > 9) )
+  if ( (frameNo > 1) && (subframeNo > 4) )
     {
       NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcs, m_ulMcs, "Wrong UL MCS");
     }
--- a/src/lte/test/lte-test-link-adaptation.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/test/lte-test-link-adaptation.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -232,7 +232,7 @@
    *    For first 4 subframeNo in the first frameNo, the MCS cannot be properly evaluated,
    *    because CQI feedback is still not available at the eNB.
    */
-  if ( (frameNo > 1) || (subframeNo > 6) )
+  if ( (frameNo > 1) || (subframeNo > 8) )
     {
       NS_LOG_INFO (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1);
 
--- a/src/lte/test/test-lte-antenna.cc	Wed Apr 25 15:57:29 2012 +0200
+++ b/src/lte/test/test-lte-antenna.cc	Wed Apr 25 17:36:25 2012 +0200
@@ -144,7 +144,7 @@
   enbphy->GetUplinkSpectrumPhy ()->AddSinrChunkProcessor (testUlSinr);
 
 
-  Simulator::Stop (Seconds (0.010));
+  Simulator::Stop (Seconds (0.020));
   Simulator::Run ();