removed obsolete S1BearerSetupRequest method from EpcEnbS1Sap
authorNicola Baldo <nbaldo@cttc.es>
Wed, 28 Nov 2012 12:21:56 +0100
changeset 9431 d157ce87b1c0
parent 9430 e8b87593ee5b
child 9438 05361705484a
removed obsolete S1BearerSetupRequest method from EpcEnbS1Sap
src/lte/helper/lte-helper.cc
src/lte/model/epc-enb-application.cc
src/lte/model/epc-enb-application.h
src/lte/model/epc-enb-s1-sap.h
src/lte/model/epc-s1ap-sap.h
src/lte/model/lte-enb-rrc.cc
src/lte/test/lte-test-entities.cc
--- a/src/lte/helper/lte-helper.cc	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/helper/lte-helper.cc	Wed Nov 28 12:21:56 2012 +0100
@@ -634,6 +634,7 @@
           EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params;
           params.rnti = rnti;
           params.bearer = bearer;
+          params.bearerId = 0;
           params.gtpTeid = 0; // don't care
           enbRrc->GetS1SapUser ()->DataRadioBearerSetupRequest (params);
           done = true;
--- a/src/lte/model/epc-enb-application.cc	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/model/epc-enb-application.cc	Wed Nov 28 12:21:56 2012 +0100
@@ -128,31 +128,6 @@
 }
 
 void 
-EpcEnbApplication::ErabSetupRequest (uint32_t teid, uint64_t imsi, EpsBearer bearer)
-{
-  NS_LOG_FUNCTION (this << teid << imsi);
-  // request the RRC to setup a radio bearer
-  struct EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params;
-  params.bearer = bearer;
-  params.gtpTeid = teid;
-  std::map<uint64_t, uint16_t>::iterator it = m_imsiRntiMap.find (imsi);
-  NS_ASSERT_MSG (it != m_imsiRntiMap.end (), "unknown IMSI");
-  params.rnti = it->second;
-  m_s1SapUser->DataRadioBearerSetupRequest (params);
-}
-
-void 
-EpcEnbApplication::DoS1BearerSetupRequest (EpcEnbS1SapProvider::S1BearerSetupRequestParameters params)
-{
-  NS_LOG_FUNCTION (this << params.rnti << params.bid);
-  EpsFlowId_t rbid (params.rnti, params.bid);
-  // side effect: create entries if not exist
-  m_rbidTeidMap[rbid] = params.gtpTeid;
-  m_teidRbidMap[params.gtpTeid] = rbid;
-}
-
-
-void 
 EpcEnbApplication::DoInitialUeMessage (uint64_t imsi, uint16_t rnti)
 {
   NS_LOG_FUNCTION (this);
@@ -167,11 +142,29 @@
 {
   NS_LOG_FUNCTION (this);
   
-  for (std::list<EpcS1apSapEnb::ErabToBeSetupItem>::iterator it = erabToBeSetupList.begin ();
-       it != erabToBeSetupList.end ();
-       ++it)
+  for (std::list<EpcS1apSapEnb::ErabToBeSetupItem>::iterator erabIt = erabToBeSetupList.begin ();
+       erabIt != erabToBeSetupList.end ();
+       ++erabIt)
     {
-      ErabSetupRequest (it->sgwTeid, mmeUeS1Id, it->erabLevelQosParameters);
+      // request the RRC to setup a radio bearer
+
+      uint64_t imsi = mmeUeS1Id;
+      std::map<uint64_t, uint16_t>::iterator imsiIt = m_imsiRntiMap.find (imsi);
+      NS_ASSERT_MSG (imsiIt != m_imsiRntiMap.end (), "unknown IMSI");
+      uint16_t rnti = imsiIt->second;
+      
+      struct EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params;
+      params.rnti = rnti;
+      params.bearer = erabIt->erabLevelQosParameters;
+      params.bearerId = erabIt->erabId;
+      params.gtpTeid = erabIt->sgwTeid;
+      m_s1SapUser->DataRadioBearerSetupRequest (params);
+
+      EpsFlowId_t rbid (rnti, erabIt->erabId);
+      // side effect: create entries if not exist
+      m_rbidTeidMap[rbid] = params.gtpTeid;
+      m_teidRbidMap[params.gtpTeid] = rbid;
+
     }
 }
 
--- a/src/lte/model/epc-enb-application.h	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/model/epc-enb-application.h	Wed Nov 28 12:21:56 2012 +0100
@@ -106,18 +106,7 @@
    * \return the ENB side of the S1-AP SAP 
    */
   EpcS1apSapEnb* GetS1apSapEnb ();
-
-  /** 
-   * This method is triggered after the eNB received
-   * a S1-AP message of type E-RAB Setup Request by the MME and will
-   * trigger the corresponding RadioBearer creation 
-   * 
-   * \param teid the Tunnel Endpoint IDentifier of the S1-bearer to be setup.
-   * \param imsi the unique ID of the UE
-   * \param bearer the specification of the corresponding EPS bearer
-   */
-  void ErabSetupRequest (uint32_t teid, uint64_t imsi, EpsBearer bearer);
-
+ 
   /** 
    * Method to be assigned to the recv callback of the LTE socket. It is called when the eNB receives a data packet from the radio interface that is to be forwarded to the SGW.
    * 
@@ -151,7 +140,6 @@
 private:
 
   // ENB S1 SAP provider methods
-  void DoS1BearerSetupRequest (EpcEnbS1SapProvider::S1BearerSetupRequestParameters params);
   void DoInitialUeMessage (uint64_t imsi, uint16_t rnti);
 
   // S1-AP SAP ENB methods
--- a/src/lte/model/epc-enb-s1-sap.h	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/model/epc-enb-s1-sap.h	Wed Nov 28 12:21:56 2012 +0100
@@ -53,12 +53,6 @@
     uint32_t gtpTeid; /**<  S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1  */
   };
 
-  /**
-   * Request the setup of a S1 bearer
-   * 
-   */
-  virtual void S1BearerSetupRequest (S1BearerSetupRequestParameters params) = 0;
-  
   /** 
    * 
    * 
@@ -92,6 +86,7 @@
 			DataRadioBearer is to be created */ 
     EpsBearer bearer; /**< the characteristics of the bearer to be set
                          up */
+    uint8_t bearerId; /**< the EPS Bearer Identifier */
     uint32_t    gtpTeid; /**< S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1 */
     Ipv4Address transportLayerAddress; /**< IP Address of the SGW, see 36.423 9.2.1 */
   };
@@ -119,7 +114,6 @@
   MemberEpcEnbS1SapProvider (C* owner);
 
   // inherited from EpcEnbS1SapProvider
-  virtual void S1BearerSetupRequest (S1BearerSetupRequestParameters params);
   virtual void InitialUeMessage (uint64_t imsi, uint16_t rnti);
 
 private:
@@ -138,12 +132,6 @@
 {
 }
 
-template <class C>
-void MemberEpcEnbS1SapProvider<C>::S1BearerSetupRequest (S1BearerSetupRequestParameters params)
-{
-  m_owner->DoS1BearerSetupRequest (params);
-}
-
 
 template <class C>
 void MemberEpcEnbS1SapProvider<C>::InitialUeMessage (uint64_t imsi, uint16_t rnti)
--- a/src/lte/model/epc-s1ap-sap.h	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/model/epc-s1ap-sap.h	Wed Nov 28 12:21:56 2012 +0100
@@ -110,7 +110,7 @@
 
   struct ErabToBeSetupItem
   {
-    uint16_t    erabId;
+    uint8_t    erabId;
     EpsBearer   erabLevelQosParameters;
     Ipv4Address transportLayerAddress;
     uint32_t    sgwTeid;    
@@ -133,7 +133,7 @@
    */
   struct ErabSwitchedInUplinkItem
   {
-    uint16_t    erabId;
+    uint8_t    erabId;
     Ipv4Address transportLayerAddress;
     uint32_t    enbTeid;    
   };
--- a/src/lte/model/lte-enb-rrc.cc	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/model/lte-enb-rrc.cc	Wed Nov 28 12:21:56 2012 +0100
@@ -1101,15 +1101,10 @@
 void 
 LteEnbRrc::DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters request)
 {
-  EpcEnbS1SapProvider::S1BearerSetupRequestParameters response;
+
   Ptr<UeManager> ueManager = GetUeManager (request.rnti);
-  response.rnti = request.rnti;
-  response.bid = ueManager->SetupDataRadioBearer (request.bearer, request.gtpTeid, request.transportLayerAddress);       
-  response.gtpTeid = request.gtpTeid;
-  if (m_s1SapProvider)
-    {          
-      m_s1SapProvider->S1BearerSetupRequest (response);
-    }
+  uint8_t bid = ueManager->SetupDataRadioBearer (request.bearer, request.gtpTeid, request.transportLayerAddress);       
+  NS_ASSERT_MSG ( request.bearerId == 0 || bid == request.bearerId, "bearer ID mismatch (" << (uint32_t) bid << " != " << (uint32_t) request.bearerId << ", the assumption that ID are allocated in the same way by MME and RRC is not valid any more");
   ueManager->ScheduleRrcConnectionReconfiguration ();
 }
 
--- a/src/lte/test/lte-test-entities.cc	Wed Nov 28 11:37:28 2012 +0100
+++ b/src/lte/test/lte-test-entities.cc	Wed Nov 28 12:21:56 2012 +0100
@@ -657,11 +657,7 @@
 void 
 EpcTestRrc::DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters request)
 {
-  EpcEnbS1SapProvider::S1BearerSetupRequestParameters response;   
-  response.rnti = request.rnti;
-  response.bid = 1;      
-  response.gtpTeid = request.gtpTeid;
-  m_s1SapProvider->S1BearerSetupRequest (response);
+
 }