From 1790f050e5eca5bc2d2271c3873edc08753b2510 Mon Sep 17 00:00:00 2001
From: Florian Kaltenberger <florian.kaltenberger@eurecom.fr>
Date: Wed, 17 Jun 2015 09:38:09 +0000
Subject: [PATCH] pdcp interface to nasmesh working again in realtime mode (at
 least at eNB)

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7577 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
 openair2/LAYER2/PDCP_v10.1.0/pdcp.c      | 9 +++++----
 openair2/LAYER2/PDCP_v10.1.0/pdcp.h      | 2 ++
 openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c | 5 ++---
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 1d0983f288..9f46939d2e 100755
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -1394,10 +1394,9 @@ pdcp_config_req_asn1 (
   case CONFIG_ACTION_ADD:
     DevAssert(pdcp_pP != NULL);
     if (ctxt_pP->enb_flag == ENB_FLAG_YES) {
-#warning "TODO pdcp_module_id_to_rnti"
       pdcp_pP->is_ue = FALSE;
-      //pdcp_eNB_module_id_to_rnti[ctxt_pP.module_id][] = ctxt_pP->rnti;
-
+      pdcp_eNB_UE_instance_to_rnti[pdcp_eNB_UE_instance_to_rnti_index] = ctxt_pP->rnti;
+      pdcp_eNB_UE_instance_to_rnti_index = (pdcp_eNB_UE_instance_to_rnti_index + 1) % NUMBER_OF_UE_MAX;
     } else {
       pdcp_pP->is_ue = TRUE;
       pdcp_UE_UE_module_id_to_rnti[ctxt_pP->module_id] = ctxt_pP->rnti;
@@ -1845,10 +1844,12 @@ void pdcp_layer_init(void)
         memset(&pdcp_mbms_array_ue[instance][service_id][session_id], 0, sizeof(pdcp_mbms_t));
       }
     }
-
 #endif
+    pdcp_eNB_UE_instance_to_rnti[instance] = NOT_A_RNTI;
   }
+  pdcp_eNB_UE_instance_to_rnti_index = 0; 
 
+    
   for (instance = 0; instance < NUMBER_OF_eNB_MAX; instance++) {
 #if defined(Rel10)
 
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
index 98f1062501..7b3febfd3b 100755
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
@@ -447,6 +447,8 @@ public_pdcp(pdcp_stats_t              eNB_pdcp_stats[NUMBER_OF_eNB_MAX];)
 
 // for UE code conly
 protected_pdcp(rnti_t                 pdcp_UE_UE_module_id_to_rnti[NUMBER_OF_UE_MAX];)
+protected_pdcp(rnti_t                 pdcp_eNB_UE_instance_to_rnti[NUMBER_OF_UE_MAX];) // for noS1 mode
+protected_pdcp(unsigned int           pdcp_eNB_UE_instance_to_rnti_index;)
 #if defined(Rel10)
 public_pdcp(pdcp_mbms_t               pdcp_mbms_array_ue[NUMBER_OF_UE_MAX][maxServiceCount][maxSessionPerPMCH];)   // some constants from openair2/RRC/LITE/MESSAGES/asn1_constants.h
 public_pdcp(pdcp_mbms_t               pdcp_mbms_array_eNB[NUMBER_OF_eNB_MAX][maxServiceCount][maxSessionPerPMCH];) // some constants from openair2/RRC/LITE/MESSAGES/asn1_constants.h
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
index ef18798dce..d09111e2f4 100755
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
@@ -308,7 +308,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const  ctxt_pP)
 int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
 {
 #ifdef PDCP_USE_NETLINK
-  protocol_ctxt_t                ctxt_cpy;
+  protocol_ctxt_t                ctxt_cpy = *ctxt_pP;
   protocol_ctxt_t                ctxt;
   hash_key_t                     key       = HASHTABLE_NOT_A_KEY_VALUE;
   hashtable_rc_t                 h_rc;
@@ -321,8 +321,6 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
   pdcp_transmission_mode_t       pdcp_mode = PDCP_TRANSMISSION_MODE_UNKNOWN;
 
 
-  ctxt_cpy = *ctxt_pP;
-
   while (pdcp_netlink_dequeue_element(ctxt_pP, &data_p) != 0) {
     DevAssert(data_p != NULL);
     rab_id = data_p->pdcp_read_header.rb_id % maxDRB;
@@ -505,6 +503,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
             ctxt.module_id = 0;
             rab_id      = pdcp_read_header_g.rb_id % maxDRB;
           }
+          ctxt.rnti          = pdcp_eNB_UE_instance_to_rnti[ctxt.module_id];
 
 #endif
 
-- 
GitLab