diff --git a/openair-cn/GTPV1-U/gtpv1u_task.c b/openair-cn/GTPV1-U/gtpv1u_task.c
index efb849c5eafe6ad0e2ee420345e655bc9e8e4fda..74d95b63e90769f8b831bd2bc4fd60ce75e10152 100644
--- a/openair-cn/GTPV1-U/gtpv1u_task.c
+++ b/openair-cn/GTPV1-U/gtpv1u_task.c
@@ -54,9 +54,7 @@
 //static NwGtpv1uStackHandleT gtpv1u_stack = 0;
 static gtpv1u_data_t        gtpv1u_sgw_data;
 
-#if !defined(ENABLE_USE_GTPU_IN_KERNEL)
-static int gtpv1u_send_init_udp(uint16_t port_number);
-#endif
+
 static int gtpv1u_create_s1u_tunnel(Gtpv1uCreateTunnelReq *create_tunnel_reqP);
 static int gtpv1u_delete_s1u_tunnel(Teid_t context_teidP, Teid_t S1U_teidP);
 static int gtpv1u_update_s1u_tunnel(Gtpv1uUpdateTunnelReq *reqP);
@@ -149,30 +147,6 @@ void gtpu_print_hex_octets(unsigned char* dataP, unsigned long sizeP)
 }
 
 
-#if !defined(ENABLE_USE_GTPU_IN_KERNEL)
-static int gtpv1u_send_init_udp(uint16_t port_number)
-{
-  // Create and alloc new message
-  MessageDef *message_p;
-  struct in_addr addr;
-
-  message_p = itti_alloc_new_message(TASK_GTPV1_U, UDP_INIT);
-
-  if (message_p == NULL) {
-    return -1;
-  }
-
-  UDP_INIT(message_p).port = port_number;
-  //LG UDP_INIT(message_p).address = "0.0.0.0"; //ANY address
-
-  addr.s_addr = gtpv1u_sgw_data.sgw_ip_address_for_S1u_S12_S4_up;
-  UDP_INIT(message_p).address = inet_ntoa(addr);
-  GTPU_DEBUG("Tx UDP_INIT IP addr %s\n", UDP_INIT(message_p).address);
-
-  return itti_send_msg_to_task(TASK_UDP, INSTANCE_DEFAULT, message_p);
-}
-#endif
-
 NwGtpv1uRcT gtpv1u_log_request(NwGtpv1uLogMgrHandleT hLogMgr,
                                NwU32T logLevel,
                                NwCharT *file,
@@ -183,32 +157,7 @@ NwGtpv1uRcT gtpv1u_log_request(NwGtpv1uLogMgrHandleT hLogMgr,
   return NW_GTPV1U_OK;
 }
 
-#if !defined(ENABLE_USE_GTPU_IN_KERNEL)
-NwGtpv1uRcT gtpv1u_send_udp_msg(
-  NwGtpv1uUdpHandleT udpHandle,
-  NwU8T *buffer,
-  NwU32T buffer_len,
-  NwU32T buffer_offset,
-  NwU32T peerIpAddr,
-  NwU32T peerPort)
-{
-  // Create and alloc new message
-  MessageDef     *message_p;
-  udp_data_req_t *udp_data_req_p;
-
-  message_p = itti_alloc_new_message(TASK_GTPV1_U, UDP_DATA_REQ);
-
-  udp_data_req_p = &message_p->ittiMsg.udp_data_req;
-
-  udp_data_req_p->peer_address  = peerIpAddr;
-  udp_data_req_p->peer_port     = peerPort;
-  udp_data_req_p->buffer        = buffer;
-  udp_data_req_p->buffer_length = buffer_len;
-  udp_data_req_p->buffer_offset = buffer_offset;
 
-  return itti_send_msg_to_task(TASK_UDP, INSTANCE_DEFAULT, message_p);
-}
-#endif
 /* Callback called when a gtpv1u message arrived on UDP interface */
 NwGtpv1uRcT gtpv1u_process_stack_req(
   NwGtpv1uUlpHandleT hUlp,
@@ -451,105 +400,8 @@ static void *gtpv1u_thread(void *args)
     itti_receive_msg(TASK_GTPV1_U, &received_message_p);
     DevAssert(received_message_p != NULL);
 
-#if !defined(ENABLE_USE_GTPU_IN_KERNEL)
 
     switch (ITTI_MSG_ID(received_message_p)) {
-    case GTPV1U_CREATE_TUNNEL_REQ: {
-      gtpv1u_create_s1u_tunnel(&received_message_p->ittiMsg.gtpv1uCreateTunnelReq);
-    }
-    break;
-
-    case GTPV1U_DELETE_TUNNEL_REQ: {
-      gtpv1u_delete_s1u_tunnel(received_message_p->ittiMsg.gtpv1uDeleteTunnelReq.context_teid, received_message_p->ittiMsg.gtpv1uDeleteTunnelReq.S1u_teid);
-    }
-    break;
-
-    case GTPV1U_UPDATE_TUNNEL_REQ: {
-      gtpv1u_update_s1u_tunnel(&received_message_p->ittiMsg.gtpv1uUpdateTunnelReq);
-    }
-    break;
-
-    // DATA COMING FROM UDP
-    case UDP_DATA_IND: {
-      udp_data_ind_t *udp_data_ind_p;
-      udp_data_ind_p = &received_message_p->ittiMsg.udp_data_ind;
-      nwGtpv1uProcessUdpReq(gtpv1u_sgw_data.gtpv1u_stack,
-                            udp_data_ind_p->buffer,
-                            udp_data_ind_p->buffer_length,
-                            udp_data_ind_p->peer_port,
-                            udp_data_ind_p->peer_address);
-      //itti_free(ITTI_MSG_ORIGIN_ID(received_message_p), udp_data_ind_p->buffer);
-    }
-    break;
-
-    // DATA TO BE SENT TO UDP
-    case GTPV1U_TUNNEL_DATA_REQ: {
-      Gtpv1uTunnelDataReq     *data_req_p = NULL;
-      NwGtpv1uUlpApiT          stack_req;
-      NwGtpv1uRcT              rc;
-      hashtable_rc_t           hash_rc;
-      gtpv1u_teid2enb_info_t  *gtpv1u_teid2enb_info = NULL;
-
-      data_req_p = &received_message_p->ittiMsg.gtpv1uTunnelDataReq;
-
-      //GTPU_DEBUG("-- GTPV1U_TUNNEL_DATA_REQ -----------------------------------------------------\n%s :\n",
-      //        __FUNCTION__);
-      //gtpu_print_hex_octets(data_req_p->buffer, data_req_p->length);
-
-
-      memset(&stack_req, 0, sizeof(NwGtpv1uUlpApiT));
-
-      hash_rc = hashtable_get(gtpv1u_sgw_data.S1U_mapping, (uint64_t)data_req_p->local_S1u_teid, (void**)&gtpv1u_teid2enb_info);
-
-      if (hash_rc == HASH_TABLE_KEY_NOT_EXISTS) {
-        GTPU_ERROR("nwGtpv1uProcessUlpReq failed: while getting teid %u in hashtable S1U_mapping\n", data_req_p->local_S1u_teid);
-      } else {
-        stack_req.apiType                   = NW_GTPV1U_ULP_API_SEND_TPDU;
-        //stack_req.apiInfo.sendtoInfo.teid   = data_req_p->local_S1u_teid;
-        stack_req.apiInfo.sendtoInfo.teid   = gtpv1u_teid2enb_info->teid_enb;
-        BUFFER_TO_NwU32T(gtpv1u_teid2enb_info->enb_ip_addr.address.ipv4_address, stack_req.apiInfo.sendtoInfo.ipAddr);
-
-        /*nwGtpv1uGpduMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
-                     NW_IN NwU32T    teid,
-                     NW_IN NwU8T     seqNumFlag,
-                     NW_IN NwU16T    seqNum,
-                     NW_IN NwU8T    *tpdu,
-                     NW_IN NwU16T    tpduLength,
-                     NW_OUT NwGtpv1uMsgHandleT *phMsg)*/
-        GTPU_DEBUG("GTPV1U_TUNNEL_DATA_REQ seq num %d  %d bytes\n",
-                   gtpv1u_sgw_data.seq_num,
-                   data_req_p->length);
-        rc = nwGtpv1uGpduMsgNew(gtpv1u_sgw_data.gtpv1u_stack,
-                                00,// TO DO bearer_p->port, but not needed when looking at processing
-                                NW_FALSE,
-                                gtpv1u_sgw_data.seq_num++,
-                                data_req_p->buffer,
-                                data_req_p->length,
-                                data_req_p->offset,
-                                &(stack_req.apiInfo.sendtoInfo.hMsg));
-
-        if (rc != NW_GTPV1U_OK) {
-          GTPU_ERROR("nwGtpv1uGpduMsgNew failed: 0x%x\n", rc);
-        } else {
-          rc = nwGtpv1uProcessUlpReq(gtpv1u_sgw_data.gtpv1u_stack, &stack_req);
-
-          if (rc != NW_GTPV1U_OK) {
-            GTPU_ERROR("nwGtpv1uProcessUlpReq failed: 0x%x\n", rc);
-          }
-
-          rc = nwGtpv1uMsgDelete(gtpv1u_sgw_data.gtpv1u_stack,
-                                 stack_req.apiInfo.sendtoInfo.hMsg);
-
-          if (rc != NW_GTPV1U_OK) {
-            GTPU_ERROR("nwGtpv1uMsgDelete failed: 0x%x\n", rc);
-          }
-        }
-      }
-
-      /* Buffer is still needed, do not free it */
-      //itti_free(ITTI_MSG_ORIGIN_ID(received_message_p), data_req_p->buffer);
-    }
-    break;
 
     case TERMINATE_MESSAGE: {
       itti_exit_task();
@@ -568,7 +420,6 @@ static void *gtpv1u_thread(void *args)
     break;
     }
 
-#endif
     itti_free(ITTI_MSG_ORIGIN_ID(received_message_p), received_message_p);
     received_message_p = NULL;
   }
@@ -591,82 +442,11 @@ int gtpv1u_init(const mme_config_t *mme_config_p)
 
   gtpv1u_sgw_data.sgw_ip_address_for_S1u_S12_S4_up = mme_config_p->ipv4.sgw_ip_address_for_S1u_S12_S4_up;
 
-#if !defined(ENABLE_USE_GTPU_IN_KERNEL)
-  gtpv1u_sgw_data.S1U_mapping = hashtable_create (8192, NULL, NULL);
-
-  if (gtpv1u_sgw_data.S1U_mapping == NULL) {
-    perror("hashtable_create");
-    GTPU_ERROR("Initializing TASK_GTPV1_U task interface: ERROR\n");
-    return -1;
-  }
-
-  /* Initializing GTPv1-U stack */
-  if ((rc = nwGtpv1uInitialize(&gtpv1u_sgw_data.gtpv1u_stack, GTPU_STACK_SGW)) != NW_GTPV1U_OK) {
-    GTPU_ERROR("Failed to setup nwGtpv1u stack %x\n", rc);
-    return -1;
-  }
-
-  if ((rc = nwGtpv1uSetLogLevel(gtpv1u_sgw_data.gtpv1u_stack,
-                                NW_LOG_LEVEL_DEBG)) != NW_GTPV1U_OK) {
-    GTPU_ERROR("Failed to setup loglevel for stack %x\n", rc);
-    return -1;
-  }
-
-  /* Set the ULP API callback. Called once message have been processed by the
-   * nw-gtpv1u stack.
-   */
-  ulp.ulpReqCallback = gtpv1u_process_stack_req;
-
-  if ((rc = nwGtpv1uSetUlpEntity(gtpv1u_sgw_data.gtpv1u_stack, &ulp)) != NW_GTPV1U_OK) {
-    GTPU_ERROR("nwGtpv1uSetUlpEntity: %x", rc);
-    return -1;
-  }
-
-  /* nw-gtpv1u stack requires an udp callback to send data over UDP.
-   * We provide a wrapper to UDP task.
-   */
-  udp.udpDataReqCallback = gtpv1u_send_udp_msg;
-
-  if ((rc = nwGtpv1uSetUdpEntity(gtpv1u_sgw_data.gtpv1u_stack, &udp)) != NW_GTPV1U_OK) {
-    GTPU_ERROR("nwGtpv1uSetUdpEntity: %x", rc);
-    return -1;
-  }
-
-  log.logReqCallback = gtpv1u_log_request;
-
-  if ((rc = nwGtpv1uSetLogMgrEntity(gtpv1u_sgw_data.gtpv1u_stack, &log)) != NW_GTPV1U_OK) {
-    GTPU_ERROR("nwGtpv1uSetLogMgrEntity: %x", rc);
-    return -1;
-  }
-
-  /* Timer interface is more complicated as both wrappers doesn't send a message
-   * to the timer task but call the timer API functions start/stop timer.
-   */
-  tmr.tmrMgrHandle     = 0;
-  tmr.tmrStartCallback = gtpv1u_start_timer_wrapper;
-  tmr.tmrStopCallback  = gtpv1u_stop_timer_wrapper;
-
-  if ((rc = nwGtpv1uSetTimerMgrEntity(gtpv1u_sgw_data.gtpv1u_stack, &tmr)) != NW_GTPV1U_OK) {
-    GTPU_ERROR("nwGtpv1uSetTimerMgrEntity: %x", rc);
-    return -1;
-  }
-
-#endif
-
   if (itti_create_task(TASK_GTPV1_U, &gtpv1u_thread, NULL) < 0) {
     GTPU_ERROR("gtpv1u phtread_create: %s", strerror(errno));
     return -1;
   }
 
-#if !defined(ENABLE_USE_GTPU_IN_KERNEL)
-
-  ret = gtpv1u_send_init_udp(mme_config_p->gtpv1u_config.port_number);
-
-  if (ret < 0) {
-    return ret;
-  }
-
-#endif
   GTPU_DEBUG("Initializing GTPV1U interface: DONE\n");
 
   return ret;
diff --git a/openair-cn/GTPV1-U/gtpv1u_teid_pool.c b/openair-cn/GTPV1-U/gtpv1u_teid_pool.c
index 05db901e933942299ddb6cb41a53537cdf5968e3..3cbafd8979fece5915c5907c2e9bbc482515c9ff 100644
--- a/openair-cn/GTPV1-U/gtpv1u_teid_pool.c
+++ b/openair-cn/GTPV1-U/gtpv1u_teid_pool.c
@@ -37,7 +37,7 @@
 
 #include "gtpv1u.h"
 
-#define GTPV1U_LINEAR_TEID_ALLOCATION 1
+//#define GTPV1U_LINEAR_TEID_ALLOCATION 1
 
 #ifdef GTPV1U_LINEAR_TEID_ALLOCATION
 static uint32_t g_gtpv1u_teid = 0;