[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/common/7074API.H b/mcu/interface/protocol/l2_c2k/common/7074API.H
new file mode 100644
index 0000000..761a1df
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074API.H
@@ -0,0 +1,199 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       7074api.h
+ * Project:         NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   July 10, 1998
+ *
+ * Description:     Header file for 7074api.c
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ ************************************************************************/
+
+#ifndef _7074API_H_
+#define _7074API_H_ 1
+
+#include "USER_API.H"
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+
+/* Connect Status/Disconnect Reasons */
+#define IS707_CONNECT_SUCCESS       0
+#define IS707_CONNECT_FAIL_TCP      1
+#define IS707_CONNECT_FAIL_PPP      2
+#define IS707_CONNECT_FAIL_RLP      3
+#define IS707_CONNECT_FAIL_UART     4
+#define IS707_DISCONNECT_NORMAL     5
+#define IS707_CONNECTING_MIP        20
+#define IS707_DISCONNECTING_MIP     21
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+   CONN_FAIL_UNUSED = 0,
+   CONN_FAIL_PPP_AUTH_FAIL = 6,
+   CONN_FAIL_MIP_PPP_LCP_TMO,
+   CONN_FAIL_MIP_PPP_NCP_TMO,
+   CONN_FAIL_SIP_PPP_LCP_TMO,
+   CONN_FAIL_SIP_PPP_NCP_TMO,
+   CONN_FAIL_MIP_PPP_OPT_MISMATCH,
+   CONN_FAIL_SIP_PPP_OPT_MISMATCH,
+   CONN_FAIL_MIP_SOL_TMO,
+   CONN_FAIL_MIP_RRQ_TMO,
+   CONN_FAIL_MIP_RRP_ERR,
+   CONN_FAIL_MIP_LCP_FAIL,
+   CONN_FAIL_SIP_LCP_FAIL,
+   CONN_FAIL_MIP_NCP_FAIL,
+   CONN_FAIL_SIP_NCP_FAIL,
+   CONN_FAIL_PPP_A12_AUTH_FAIL,
+   CONN_FAIL_PPP_EAP_AKA_AUTH_FAIL,
+   CONN_FAIL_MIP_ADMIN_PROHIB_FAIL,
+   CONN_FAIL_MULTI_TCH_FAIL,
+   CONN_FAIL_PPP_A12_LCP_TMO,
+   
+   /*the code from 64 to 144 have been token as MIP Error codes*/
+   /*GTR-DATA-SPEC*/
+   CONN_FAIL_MIP_UNSPECIFIED = 64,
+   CONN_FAIL_MIP_ADMIN_PROHIBITED = 65,
+   CONN_FAIL_MIP_INSUFF_RESOURCES_1 = 66,
+   CONN_FAIL_MIP_MN_FAILED_AUTH = 67,
+   CONN_FAIL_MIP_HA_FAILED_AUTH = 68,
+   CONN_FAIL_MIP_LIFETIME_TOO_LONG = 69,
+   CONN_FAIL_MIP_POORLY_FORMED_REQ = 70,
+   CONN_FAIL_MIP_POORLY_FORMED_REPLY = 71,
+   CONN_FAIL_MIP_ENCAP_UNAVAIL = 72,
+   CONN_FAIL_MIP_RESERVED_UNAVAIL = 73,
+   CONN_FAIL_MIP_REV_TUN_UNAVAIL = 74,
+   CONN_FAIL_MIP_RT_N_T_NOT_SET = 75,
+   CONN_FAIL_MIP_MN_TOO_DISTANT = 76,
+   CONN_FAIL_MIP_INVALID_CARE_OF_ADDR = 77,
+   CONN_FAIL_MIP_REG_TIMEOUT = 78,
+   CONN_FAIL_MIP_DS_NOT_SUPPORT = 79,
+   CONN_FAIL_MIP_HN_UNREACHABLE = 80,
+   CONN_FAIL_MIP_HA_HOST_UNREACHABLE = 81,
+   CONN_FAIL_MIP_HA_PORT_UNREACHABLE = 82,
+   CONN_FAIL_MIP_HA_UNREACHABLE = 88,
+   CONN_FAIL_MIP_VENDOR_SPECIFIC = 89,
+   CONN_FAIL_MIP_NONZERO_HA_ADDR = 90,
+   CONN_FAIL_MIP_NONZERO_HOME_ADDR = 96,
+   CONN_FAIL_MIP_MISSING_NAI = 97,
+   CONN_FAIL_MIP_MISSING_HA = 98,
+   CONN_FAIL_MIP_MISSING_HOME_ADDR = 99,
+   CONN_FAIL_MIP_UNKNOWN_CHALL = 104,
+   CONN_FAIL_MIP_MISSING_CHALL = 105,
+   CONN_FAIL_MIP_STALE_CHALL = 106,
+   CONN_FAIL_MIP_MISSING_MN_FA = 107,
+   CONN_FAIL_MIP_REASON_UNSPEC = 128,
+   CONN_FAIL_MIP_ADMIN_PROHIB = 129,
+   CONN_FAIL_MIP_INSUFF_RESOURCES_2 = 130,
+   CONN_FAIL_MIP_MN_FAILED_AUTH_2 = 131,
+   CONN_FAIL_MIP_FA_FAILED_AUTH = 132,
+   CONN_FAIL_MIP_IDENT_MISMATCH = 133,
+   CONN_FAIL_MIP_POORLY_FORMED_REQ_2 = 134,
+   CONN_FAIL_MIP_TOO_MANY_BINDINGS = 135,
+   CONN_FAIL_MIP_UNKNOWN_HA_ADDR = 136,
+   CONN_FAIL_MIP_REV_TUNNEL_UNAVAIL = 137,
+   CONN_FAIL_MIP_RT_N_T_NOT_SET_2 = 138,
+   CONN_FAIL_MIP_ENCAPSULATION_UNAVAIL = 139,
+   CONN_FAIL_MIP_REG_WITH_REDIRECTED = 143,
+   CONN_FAIL_MIP_ERR_CODE_FROM_HOME = 144
+}ConnFailReasonT;
+
+/* Async App -> Browser Control/Bottom of PPP functions for Browser Mode */
+void is7074HDLCPacketRxd( kal_uint8 *data, kal_uint16 size );
+void is7074AppIntEndConnection( kal_bool graceful );
+void is7074AppIntTxReq( kal_uint8 *data, kal_uint16 size, kal_bool push, kal_uint8 sap );
+void is7074AppIntRxRsp( kal_uint8 sap );
+void is7074BrowserSendDatagram( kal_uint8 sap, SendToRequest *s );
+void is7074BrowserRxRsp(kal_uint8 sap);
+
+/* RLP -> Bottom of PPP functions in all modes */
+void is7074RlpTxComplete( kal_bool rlp_channel );
+void is7074RlpHDLCPacketRxd( kal_uint8 app, kal_uint8 *data, kal_uint16 size );
+
+/* UART -> Bottom of PPP via the UART during Packet mode */
+void is7074UartHDLCPacketRxd( kal_uint8 *data, kal_uint16 size );
+
+/* 'IP or CLNP' -> Top of PPP (and then UART) functions for Packet Mode */
+void is7074RmPppConnect( kal_uint32 local_ip, kal_uint32 remote_ip );
+void is7074RmConnectStatus(kal_uint8 status);
+
+#ifdef PPP_RECONNECT
+void is7074RmPppReConnect( void );
+void is7074UmPppReConnect( kal_uint16 port);
+#endif
+
+/* TCP browser -> top of TCP/IP/PPP stack */
+void is7074TcpbEndConnection( kal_bool graceful );
+void is7074TcpbSendDataReq( kal_uint8 *data, kal_uint16 size, kal_bool push, kal_uint8 sap );
+void is7074TcpbRecvDataRsp( kal_uint8 sapRsp );
+
+kal_int16 is7074SocketCreate(kal_bool TcpType, kal_uint8 *sap);
+kal_int16 is7074SocketClose(kal_uint8 sap, kal_bool graceful);
+kal_int16 is7074SocketBind(kal_uint8 sap, kal_uint32 ipAddr, kal_uint16 port, kal_bool FromApp);
+void  is7074SocketConnect(kal_uint8 sap, kal_bool passive, kal_uint32 ipAddr, kal_uint16 port);
+kal_int16 is7074SocketListen(kal_uint8 sap, kal_uint8 listenSap);
+kal_int16 is7074SocketOptionSet(kal_uint8 sap, kal_uint8 opt_type, kal_uint16 size);
+kal_int16 is7074SocketShutDown(kal_uint8 sap, kal_uint8 shutdown);
+kal_int16 is7074SocketSetLinger(kal_uint8 sap, kal_bool lingerOnoff, kal_uint32 lingerTime);
+
+/* Mobile IP */
+void is7074MipRrpRsp( kal_uint8 MipState, kal_bool deRegPassed );
+void is7074MipAgentAdvRsp( void );
+kal_bool is7074MipRrq(kal_uint32 srcIp, kal_uint32 dstIp, kal_uint16 srcPort, kal_uint16 dstPort, kal_uint16 len, kal_uint8* data);
+void is7074MipAgentSol(kal_uint32 srcIp, kal_uint32 dstIp, kal_uint16 len, kal_uint8* data );
+void is7074MipIpAddr(kal_uint32 LocalIp, kal_uint32 RemoteIp);
+void is7074MipIpInitAddr(kal_uint32 LocalIp, kal_uint32 RemoteIp);
+void is7074MipUmPppStatus( kal_uint8 status,kal_uint32 local_ip, kal_uint32 remote_ip );
+void is7074Md5(kal_uint8 *data, kal_uint16 dataLen, kal_uint8 *key, kal_uint16 keyLen, kal_uint8 *digest);
+void is7074Md5MIPCHAP(kal_uint8 *data, kal_uint16 dataLen, kal_uint8 *key, kal_uint16 keyLen, kal_uint8 *chal,  kal_uint16 chalLen, kal_uint8 *digest);
+void is7074Md5SIPCHAP(kal_uint8 *id, kal_uint16 idLen, kal_uint8 *key, kal_uint16 keyLen, kal_uint8 *chal, kal_uint16 chalLen, kal_uint8 *digest);
+void is7074MipDMUVersionSet(kal_uint8 nDMUV);
+kal_uint8 is7074MipDMUVersionGet(void);
+void is7074MipPreferModeSet(kal_uint8 nMipPreferMode);
+kal_uint8 is7074MipPreferModeGet(void);
+void is7074MipConnFail (void);
+kal_bool HlpCheckAgpsData(kal_uint8 *IpData,kal_bool bMip);
+kal_uint8 HlpGetInternetPdnId(void);
+kal_bool is7074AppSendUdpPkt(kal_uint32 srcIp, kal_uint32 dstIp,
+                  kal_uint16 srcPort, kal_uint16 dstPort,
+                  kal_uint16 len, kal_uint8* data,kal_uint8 UdpSap);
+#ifdef CBP7_EHRPD
+kal_int16 is7074AppSendUdp4PppPkt(kal_uint32 srcIp, kal_uint32 dstIp,
+                  kal_uint16 srcPort, kal_uint16 dstPort,
+                  kal_uint16 len, kal_uint8* data,kal_uint8 UdpSap, kal_uint8 PdnId);
+#endif
+
+void is707_connect_lcp( kal_uint8 app );
+void is707_set_ppp_addr( kal_uint8 app, kal_uint32 local_ip, kal_uint32 remote_ip );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _7074API_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/7074BIOS.H b/mcu/interface/protocol/l2_c2k/common/7074BIOS.H
new file mode 100644
index 0000000..0663f61
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074BIOS.H
@@ -0,0 +1,102 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       7074bios.h
+ * Project:         NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   July 10, 1998
+ *
+ * Description:     Header file containing the TCP/UDP/IP/PPP
+ *                  Engine BIOS prototypes.
+ * Restrictions:
+ * Dependencies:
+ *
+ ************************************************************************/
+
+#ifndef _7074BIOS_H_
+#define _7074BIOS_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+
+#include "USER_API.H"
+#include "cpbuf.h"
+#include "do_rcpapi.h"
+#include "hlpdef.h"
+
+  /* 'Bottom' of App Int indications */
+void bios7074AppIntTCPConnectStatus( kal_uint8 connect_status,
+                                       kal_uint32 mobile_ip,
+                                       kal_uint32 iwf_ip );
+void bios7074AppIntRxInd ( kal_uint8 sap, kal_uint8 *data, kal_uint16 size );
+void bios7074AppIntTxRsp ( kal_uint8 sap, kal_int16 status );
+
+  /* Browser notifications */
+void bios7074BrowserRxDatagramInd( kal_uint8 sap, ReceiveFromRequest *r );
+void bios7074BrowserSendDatagramRsp(kal_uint8 sap, kal_int8 status);
+
+  /* PPP -> RLP commands/indications */
+void bios7074RlpSendData(CpBufferT* dataToSend, kal_uint16 Len, kal_uint16 offset, kal_uint8 RLPFlow, AppSubTypeT SvcStream, socketInfoT *dstSocket);
+
+  /* Top of PPP (and UART) -> 'IP or CLNP' functions for Packet Mode (Rm) */
+void bios7074RmPppConnectStatus( kal_uint8 status );
+
+  /* Top of PPP (and RLP) -> Network Layer functions for Packet Mode (Um) */
+void bios7074UmDormantReconnectReq(void);
+  /*
+    void bios7074UmLcpConnectStatus( kal_uint8 status );
+    void bios7074UmIpcpConnectStatus( kal_uint8 status,
+    kal_uint32 local_ip,
+    kal_uint32 remote_ip );
+  */
+void bios7074UmPppConnectStatus(kal_uint8 status,
+                              kal_uint32 local_ip,
+                              kal_uint32 remote_ip,
+                              kal_uint32 priDNSaddr,
+                              kal_uint32 secDNSaddr,
+                              kal_bool   IsAccessStream);
+void bios7074SocketConnStatus(kal_uint8 sap, kal_int16 status, kal_uint32 srcIP, kal_uint32 destIP, kal_uint16 srcPort, kal_uint16 dstPort);
+
+/* Configuration */
+void  bios7074CfgGetUserInfo(kal_uint8 app, char** userName, char** password, kal_uint8 *lenPassword);
+#ifdef MTK_DEV_HLP_PPP_MNRP
+void  bios7074CfgSetMNRPRegCounter(kal_uint8 regCounter);
+kal_uint8 bios7074CfgGetMNRPRegCounter(void);
+#endif
+kal_uint16 bios7074ReadTimer(kal_uint16 timer_id);
+
+/* Mobile IP */
+void bios7074MipAgentAdv (kal_uint32 srcIP, kal_uint32 destIP, kal_uint16 len, kal_uint8* data);
+void bios7074MipRrp (kal_uint32 srcIP, kal_uint32 destIP, kal_uint16 srcPort, kal_uint16 dstPort, kal_uint16 len, kal_uint8* data);
+void bios7074MipUmPppStatus( kal_uint8 status, kal_uint32 local_ip, kal_uint32 remote_ip );
+void HlpSendValA12AuthStatus(kal_bool success);
+kal_bool SetConnErrorCode(kal_uint8 PdnIdTmp, DataConnErrCodeT ErrorCodeTmp);
+void ResetConnErrorCode(kal_uint8 PdnIdTmp);
+kal_bool ForceSetConnErrorCode(kal_uint8 PdnIdTmp, DataConnErrCodeT ErrorCode);
+DataConnErrCodeT GetConnErrorCode(kal_uint8 PdnIdTmp);
+kal_bool CheckConnErrorCodeExsitWithPdnId(kal_uint8 PdnIdTmp);
+kal_bool A12FailureFlagGet(void);
+void A12FailureFlagSet(kal_bool flag);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _7074BIOS_H_ */
+
+/**Log information: \main\Trophy\Trophy_wzhou_href22163\1 2013-04-25 03:06:41 GMT wzhou
+** HREF#22163: add A12 auth status message in VAL**/
+/**Log information: \main\Trophy\1 2013-04-25 03:06:22 GMT jzwang
+** href#22163**/
diff --git a/mcu/interface/protocol/l2_c2k/common/7074CUST.H b/mcu/interface/protocol/l2_c2k/common/7074CUST.H
new file mode 100644
index 0000000..33468bd
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074CUST.H
@@ -0,0 +1,95 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       7074cust.h
+ * Project:         NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   July 13, 1998
+ *
+ * Description:  
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ ************************************************************************/
+
+#ifndef _7074CUST_H_
+#define _7074CUST_H_ 1
+
+
+/* this size is the number of bytes in the mbuf pool */
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define IS707_MBUF_POOL_SIZE 30000 
+#else
+#define IS707_MBUF_POOL_SIZE 1
+#endif
+
+/* Currently this parameter does not affect the code.  
+   The parameter of interest is M_HIGHPERCENT, 
+   defined in ip_mbuf.h. */
+#define IS707_MBUF_HPERCENT 50
+
+/* Currently this parameter does not affect the code.  
+   The parameter of interest is M_LOWPERCENT, 
+   defined in ip_mbuf.h. */
+#define IS707_MBUF_LPERCENT 25
+
+/* this is the buffer that is filled on a bios7074AppIntRxInd call */
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define IS707_APPINT_RX_BUFFERSIZE 1536  
+#define IS707_BROSWER_RX_BUFFERSIZE 1600
+#else
+#define IS707_APPINT_RX_BUFFERSIZE 1
+#define IS707_BROSWER_RX_BUFFERSIZE 1
+#endif
+
+/* These are in the IS-707 spec. but we put them here anyway */
+#define IS707_MODEM_CLIENT_PORT 379
+#define IS707_MODEM_SERVER_PORT 380
+
+/* time-to-live value as defined in IS-707.4 */
+#define IS707_IP_TTL_DEFAULT  (0xfe)
+
+
+/* For TCP/IP data transfers, this is the number of 
+   retransmission attempts before a connection is abandoned.  
+   This value is valid only during connection initialization. */
+#define IS707_TCP_INIT_RETRANSMIT_ATTEMPTS  25
+
+/* The maximum size that client can request TCP to send 
+   received data across. */
+#define IS_707_TCP_MAX_RECV_SIZE 1500
+/* For TCP/IP data transfers,  this is the number of 
+   retransmission attempts before a current connection 
+   is abandoned.  This value is valid only after a 
+   connection is established */
+#define IS707_TCP_RETRANSMIT_ATTEMPTS       10
+/* receive buffer size for UDP*/
+
+#define Max_Browser_RxInd_Length 500
+
+#ifdef SYS_OPTION_NTWKRMPKT_RAM_INUSE
+#define USE_NAT 1 /* To use Network Rm Packet */
+#endif
+
+
+#endif /* _7074CUST_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/7074STAT.H b/mcu/interface/protocol/l2_c2k/common/7074STAT.H
new file mode 100644
index 0000000..c9988bd
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074STAT.H
@@ -0,0 +1,296 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       7074stat.h
+ * Project:         NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   July 13, 1998
+ *
+ * Description:
+ * Restrictions:
+ * Dependencies:
+ *
+ ************************************************************************/
+
+#ifndef _7074STAT_H_
+#define _7074STAT_H_ 1
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+
+#include "7074CUST.H"
+#include "PPPAPI.H"
+#include "PP_FRAME.H"
+#include "IP_CUSTM.H"
+#include "USER_API.H"
+#include "hlpapi.h"
+
+/* IS-707 Applications */
+#define IS707_APP_ASYNC_TCP        		0
+#define IS707_APP_PACKET_RLP       		1
+#define IS707_APP_BROWSER_UDP      		2
+#define IS707_APP_PACKET_UART              3
+#define IS707_APP_BROWSER_ON_ASYNC  	4
+#define IS707_APP_BROWSER_CKT_TCP     	5
+#define IS707_APP_BROWSER_PKT_TCP     	6
+#define IS707_APP_PPP_ONLY                    	7
+#define IS707_APP_ACS_STREAM             	8
+#define IS707_APP_MAIN_CONN                    9
+#define IS707_APP_NULL                 10  /* Adding any new type should be before this */
+#define IS707_NUM_APPS                 11
+
+/*add for Trace, keep in the same order as IS707_APP...#defines above*/
+typedef enum
+{
+   NSPE_ASYNC_TCP,
+   NSPE_PACKET_RLP,
+   NSPE_BROWSER_UDP,
+   NSPE_PACKET_UART,
+   NSPE_BROWSER_ON_ASYNC,
+   NSPE_BROWSER_CKT_TCP,
+   NSPE_BROWSER_PKT_TCP,
+   NSPE_PPP_ONLY,
+   NSPE_ACS_STREAM,
+   NSPE_MAIN_CONN,
+   NSPE_NULL,
+   NSPE_APP_MAX_NUM
+} NspeAppsT;
+
+/* IS-707 Task states */
+#define IS707_S_IDLE               0
+#define IS707_S_RLP_CONNECTING     1
+#define IS707_S_NET_CONNECTING     2
+#define IS707_S_TCP_CONNECTING     3
+#define IS707_S_PPP_CONNECTING     4
+#define IS707_S_LCP_CONNECTED      5
+#define IS707_S_PPP_CONNECTED      6
+#define IS707_S_NET_CONNECTED      7
+#define IS707_S_ABORTING           8
+#define IS707_S_CLOSING            9
+#define IS707_S_UM_RENEGOTIATION   10
+#define IS707_S_DEREGISTERING      11
+
+/*add for Trace, keep in the same order as IS707_S...#defines above*/
+typedef enum
+{
+   NSPE_IDLE,
+   NSPE_RLP_CONNECTING ,
+   NSPE_NET_CONNECTING,
+   NSPE_TCP_CONNECTING,
+   NSPE_PPP_CONNECTING,
+   NSPE_LCP_CONNECTED,
+   NSPE_PPP_CONNECTED,
+   NSPE_NET_CONNECTED,
+   NSPE_ABORTING,
+   NSPE_CLOSING,
+   NSPE_UM_RENEGO,
+   NSPE_DEREGISTERING,
+   NSPE_STATE_MAX_NUM
+} NspeStatesT;
+
+/* Mobile IP states   */
+#define MIP_NULL_STATE             0
+#define MIP_INIT_STATE             1
+#define MIP_AGENT_DIS_STATE        2
+#define MIP_REGISTRATION_STATE     3
+#define MIP_ACTIVE_STATE           4
+#define MIP_TERMINATE_STATE        5
+
+/*add for Trace, keep in the same order as MIP_..._STATE#defines above*/
+typedef enum
+{
+   MIP_NULL_ST,
+   MIP_INIT_ST ,
+   MIP_AGENT_DIS_ST,
+   MIP_REGISTRATION_ST,
+   MIP_ACTIVE_ST,
+   MIP_TERMINATE_ST,
+   MIP_ST_MAX_NUM
+} MipStatesT;
+
+struct nspeBufferType
+{
+  kal_uint8   pppIpScratch[ PPP_BUFFERSIZE*2 ];
+  kal_uint8   mbufPool[ IS707_MBUF_POOL_SIZE ];
+};
+
+struct scb
+{
+  kal_uint8   SocketRxBuf[ IS707_APPINT_RX_BUFFERSIZE ];
+  kal_bool              tcpPassive;
+  kal_bool              tcpPeerClosing;
+  kal_bool              tcpWereClosing;
+
+  kal_uint8             sap;
+  kal_uint8             ipProtocol;
+  kal_uint16          nDataToRead;
+  kal_bool              bCloseWaitDefer;
+
+  /* Application Interface variables */
+  kal_bool              appIntRecvReady;
+  kal_bool              appIntSendPending;
+  kal_bool              bDataPending;
+  SendRequest       appIntSendRqst;
+  ReceiveRequest    appIntRecvRqst;
+  SendToRequest     appIntSendToRqst;
+  ReceiveFromRequest appIntRecvFromRqst;
+  /* variables for pending */
+  kal_bool          bTCPOrUDPDataReqPending;
+  kal_bool          bSocketConnectReqPending;
+  kal_bool          bSocketCloseReqPending;
+  kal_bool          bSocketShutdownReqPending;
+  HlpTcpbDataSendReqMsgT PendingTCPDataRqstToSend;
+  HlpUpbSendDataMsgT  PendingUDPDataRqstToSend;
+  HlpSocketConnectMsgT PendingSktConnMsg;
+  HlpSocketCloseMsgT   PendingSktCloseMsg;
+  HlpSocketShutDownMsgT PendingSktShutDownMsg;
+};
+
+struct nspeGlobalsType
+{
+  /* RLP variables */
+  kal_uint8             rlpApp;
+  kal_uint8             uartApp;
+  kal_uint8             rlpAppAccess;
+  kal_bool              rlpFlushPending;
+  kal_bool              rlpTransparent;
+
+  /* Packet variables */
+  kal_uint8             packetUdpSap;
+  kal_bool              packetBrowserMode;
+
+  /* PPP variables */
+  kal_uint8             *pppRxData;
+  kal_uint16            pppRxDataSize;
+  kal_uint16            pppSendMTU;
+
+  /* PPP variables for RM interface to Uart */
+  kal_uint8             *pppUartRxData;
+  kal_uint16            pppUartRxDataSize;
+
+
+  /* TCP variables */
+  kal_bool              tcpPassive;
+  kal_bool              tcpPeerClosing;
+  kal_bool              tcpWereClosing;
+
+  kal_bool              tcpFlowOn;
+  kal_uint8             tcpSap;
+
+  /* Application Interface variables */
+  kal_bool              appIntRxReady;
+  kal_bool              appIntTxPending;
+  SendRequest       appIntTxRqst;
+/*  ReceiveRequest    appIntRxRqst; */
+
+  /* Browser UDP variables */
+  kal_bool              DoubleStackUpperLayerDown;
+  /* variable handle rlpresetInd */
+  kal_bool              RlpReset; /* set after rlpReset, */
+  kal_bool              RlpOpenRspRcvd; /* set after receive rlpOpenRsp which caused by rlpReset */
+  kal_bool              Um_Rm_Connected; /*set after UM and RM interface are both connected */
+  kal_bool              Um_DataPending; /* set to KAL_TRUE is there is data pending which is ready to be sent to Rm */
+  kal_bool              Rm_DataPending; /* set to KAL_TRUE is there is data pending which is ready to be sent to Um */
+  kal_bool              Um_Renegotiating;
+#ifdef TEST
+  /* these variablee can be removed */
+  kal_bool              enableIpFlowControlIteMessages;
+  kal_bool              enableTcpRxDataIteMessages;
+#endif
+};
+
+struct Pending_Data
+{
+  kal_bool canBeSent;
+  kal_bool dormant_flag;        /* Remember the current Mode*/
+  kal_bool Data_Pending;        /* Set the flag if we saved any data.*/
+  kal_bool Tx_Pending;          /* pending flag cuased by UDP busy */
+  SendToRequest saved;     /* save the data */
+};
+
+struct Um_Dormant
+{
+  kal_bool dataPending;
+  kal_bool dormant;
+};
+
+void nspeUmDormantReconnect(void);
+void UmProcessPendingData(void);
+
+struct Interface_Busy
+{
+  kal_bool rx_busy;
+  kal_bool tx_busy;
+};
+
+extern struct Interface_Busy um_rlp;
+extern struct Interface_Busy rm_uart;
+
+extern struct nspeGlobalsType   nspe;
+extern struct nspeBufferType    nspeBuffers;
+extern struct scb  nspeSCB[IP_NTCBS];
+extern kal_uint8       pppAccStrmScratch[PPP_BUFFERSIZE*2];
+
+/* Prototypes */
+void   Shut_TCP_Quietly( void );
+void   nspeTxReq( void );
+void   udpTxReq( void );
+void   nspeSetState( kal_uint8 app, kal_uint8 state );
+kal_uint8  nspeGetState( kal_uint8 app );
+void nspeSetRlpAppAccess(kal_uint8  rlpAppAcs);
+kal_uint8 nspeGetRlpAppAccess(void);
+void   nspeSetIpAddr( kal_uint8 app, kal_uint32 ip_address );
+kal_uint32 nspeGetIpAddr( kal_uint8 app );
+void   nspeSetPppPort( kal_uint8 app, kal_uint16 ppp_port );
+kal_uint16 nspeGetPppPort( kal_uint8 app );
+void   nspeSetPppSending( kal_uint8 app, kal_bool sending );
+kal_bool   nspeGetPppSending( kal_uint8 app );
+kal_uint32  nspeGetApp( kal_uint16 ppp_port );
+void   nspeInit( kal_uint8 app );
+void nspeInitApps(void);
+void   nspeCleanPort( kal_uint8 app );
+void   nspePassIpDataToPpp( kal_uint8 app );
+void   nspePurgeIPDataQueue( kal_uint8 app );
+
+kal_uint8 nspeGetAppByPDNId(kal_uint8 PDNId);
+void nspeSetPdnId( kal_uint8 app, kal_uint8 PdnId );
+kal_uint8 nspeGetPdnId( kal_uint8 app);
+void nspeIpData2Ppp(kal_uint8 app);
+#ifdef  WeDoPacketMode
+
+kal_bool nspeGetBufferfromTxQueue( kal_uint8 *buffer, kal_uint16 *size, kal_uint8 app );
+void nspePacketBufferRxd( kal_uint8 app, kal_uint8 *data, kal_uint16 len, kal_uint16 prot );
+void nspePassPacketDataToHost( kal_uint8 app );
+void nspePerformMqueueFlowCtl( void );
+void nspeQueuePacket( kal_uint8 app, kal_uint8 *data, kal_uint16 len, kal_uint16 prot );
+void nspeDequeuePacket( kal_uint8 app, kal_uint8 *data, kal_uint16 *len, kal_uint16 *prot );
+void nspePassIpDataToPacket( void );
+void nspePacketInit( void );
+
+#else
+
+#define nspePacketBufferRxd( a,b,c,d )
+#define nspeQueuePacket( a,b,c,d )
+#define nspeDequeuePacket( a,b,c,d )
+#define nspePassIpDataToPacket()
+
+#endif /* WeDoPacketMode */
+
+/* functions support network layer */
+void umReConnected(void);
+
+struct scb* nspeAllocScb(void);
+struct scb* nspeGetScbBySap(kal_uint8 sap);
+
+
+#endif /* _7074STAT_H_ */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/HlpQos.h b/mcu/interface/protocol/l2_c2k/common/HlpQos.h
new file mode 100644
index 0000000..7263d60
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/HlpQos.h
@@ -0,0 +1,328 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2007-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef  _HLP_QOS_H_
+#define  _HLP_QOS_H_
+/*****************************************************************************
+* 
+* FILE NAME   :   hlpqos.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the QOS
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "do_Qos.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+typedef enum
+{
+   QosFileDirCreateErr,
+   FlowRequestErr,
+   FlowReleaseErr,   
+   QosNegoFail,
+   ReservationOpFail,
+   RsvpCommonHdrDecErr,
+   RsvpCheckSumCalErr,
+   RsvpErrSpecNotReceived,
+   Rsvp3GPPObjNotReceived,
+   TFTIpAddrNotMatch,
+   RsvpMsgEncodeErr,
+   RsvpMsgDecodeErr,
+   RsvpDstPortErr,
+   ResvMsgBufFull,
+   RsvpInvalidMsgId,
+   RsvpInvalidTransId,
+   RsvpMsgLengthErr,
+   QoSCheckFail,
+}QOMErrCodeT;
+
+typedef enum
+{
+  TftNull,
+  TftToBeSent,
+  TftSent,
+  TftConfirmed
+}ResvTftStatusT;
+
+typedef enum
+{
+  QOS_INACTIVE,
+  QOS_IDLE,
+  QOS_WFR_CHECK_CONFIRM,
+  QOS_WFR_GRANT,
+  QOS_WFR_TFT_CONFIRM,
+  QOS_WFR_TFT_CONFIRM_NTWK_INIT,
+  QOS_WFR_TFT_REL_CONFIRM,
+  QOS_WFR_TFT_REL_CONFIRM_NTWK_INIT,
+}QoMStateT;
+
+typedef enum
+{
+  QOS_NOT_CHECKED,
+  QOS_CONFIRMED,
+  QOS_CHECKING
+}QoMCheckStateT;
+
+typedef struct
+{
+   QosSubBlobT   QosSetInfo; 
+/*   kal_uint8 MacFlowId; 
+   kal_uint8  RlpState;
+   kal_uint8  RlpFlowNum;   */
+   kal_bool          bReserved;
+}QosTabelT;
+
+typedef struct
+{
+  kal_uint8 Num;
+  kal_uint8 PdnId;
+  kal_uint8 Label[16];
+}QosPdnInfoT;
+
+typedef struct
+{
+  kal_uint8 RlpFlowNum;
+  kal_uint8 cid;
+  ResvTftStatusT   Status;
+} ResvInfoT;
+
+typedef struct
+{
+  kal_uint16         len;/* The length of this data*/
+  kal_uint16         offset;/* The starting location for the data  */
+  CpBufferT      *buffer;/* The buffer which makes up this data. This is a ptr */
+} RsvpDatapktT;
+
+typedef enum
+{
+  PATH_MSG=1,
+  RESV_MSG,
+  PATHERR_MSG,
+  RESVERR_MSG,
+  PATHTEAR_MSG,
+  RESVTEAR_MSG,
+  RESVCONF_MSG
+}RsvpMsgTypeT;
+
+typedef enum
+{
+  TFTIPv4,
+  TFTIPv4Err,
+  TFTIPv6,
+  TFTIPv6Err,
+  HeaderRemoval,
+  HeaderRemovalErr,
+  ChannelTreatment,
+  ChannelTreatmentErr
+}RsvpIETypeT;
+
+
+
+typedef enum
+{
+   IP4SrcAdr_SubnetMask = 16,
+   IP4DstAdr_SubnetMask,
+   IP6SrcAdr_SubnetMask = 32,
+   IP6DstAdr_SubnetMask,
+   Protocol_NextHdr = 48,
+   Single_DstPort = 64,
+   DstPortRange,
+   Single_SrcPort = 80,
+   SrcPortRange,
+   SecurityParmInd = 96,
+   Tos_TrafficClass = 112,
+   Flow_Label = 128,
+   Type2RoutingHdr_PreLen,
+   HomeAdrOpt_PreLen
+}TftPktFilterComponentIdT;
+
+typedef enum
+{
+   ErrReserved,
+   PktFilterAddFailure,
+   PktFilterUnavailable,
+   UnsuccessfulTFTProcessing,
+   ChannelNotAvailable,
+   EvaluationPrecedenceContention,
+   TreatmentNotSupported,
+   PacketFilterReplaceFailure,
+   PersistencyLimitReached,
+   PersistencyNotAllowed,
+   UnauthorizedTFT,
+   MaxNumPktFilters,
+   AddToNonExistTFT,
+   UEUnsuccessfulTftProcess = 0x80,
+   InvalidIPAddress,
+   NotSupportProfileID,
+   InvalidPdnID,
+}TftErrCodeT;
+
+typedef enum
+{
+  QoSCheckSuccessfull,
+  QoSIsNotAuthorized,
+}QoSCheckResultCodeT;
+
+typedef  struct
+{
+   kal_uint32  RsvpSnTransId;
+   kal_uint32  RsvpRvTransId;
+   kal_bool    bTftCreated; 
+   kal_bool    bIpV4;
+   kal_uint32  SrcIpAddr[4];
+   kal_uint32  DstIpAddr[4];
+}RsvpInfoT;
+
+typedef struct
+{
+   RsvpDatapktT  MsgPkt;
+   kal_uint8         NumOfPktList;
+   RlpFlowDirection  Direction[MAX_TFT_NUM]; /*0 Forward, 1 Reverse*/
+   kal_uint8             ResvLabel[MAX_TFT_NUM];
+   kal_uint8             FilterIndex[MAX_TFT_NUM];
+   kal_uint32            TransId;
+   kal_uint8             NumOfSend;
+}RsvpResvMsgT;
+
+typedef  struct
+{
+   //ExeTimerT   TimerCb;
+   kal_timerid TimerId;
+   kal_bool        bActive;
+}RsvpResvTimerT;
+
+typedef  struct
+{
+  TftOperationCodeT OpCode; 
+  kal_uint8             Num;
+  RlpFlowDirection  Direction[MAX_TFT_NUM];
+  kal_uint8             Label[MAX_TFT_NUM];
+  kal_uint8             FilterIndex[MAX_TFT_NUM];
+}ResvTftReqT;
+
+typedef struct
+{
+  kal_uint8   PFType;
+  kal_uint8   length;
+  kal_uint8   PktComponent[200];
+  kal_bool    bTreatmentInc;
+  kal_uint8   PFT;   /*Packet Filter Treatment*/
+  kal_uint32  Hint;  /*RFC3006 hint*/
+}QoMPktContentT;
+
+typedef struct
+{
+  kal_uint8   FlowId;
+  kal_uint8   PrecedenceIndex;/*evaluation precedence index*/
+  QoMPktContentT PktContent;
+}QoMRsvpPktFilterT;
+
+typedef struct
+{
+   kal_uint8  ReservationLabel;
+   kal_uint8  Priority;
+   kal_uint8  QoSSetNum;
+   kal_uint8  QosAttrSetId[MAX_SUPPORTED_QOS_BLOB_NUM];/*7 bits,should not be zero*/
+   kal_uint16 FlowProfileId[MAX_SUPPORTED_QOS_BLOB_NUM];
+} QosRsvpSubBlobT;
+
+typedef struct
+{
+  kal_uint8                  PktFlterNum;
+  kal_uint8                  bIPv4;
+  QoMRsvpPktFilterT      PktFilter[MAX_TFT_NUM];
+  kal_uint8                  FlowNum;
+  QosRsvpSubBlobT        QosBlob[MAX_TFT_NUM];
+}EhrpdResvMsgIEDataT;
+
+typedef struct
+{
+  kal_uint8                  num;
+  RlpFlowDirection       Direction[2];
+  TftOperationCodeT      OpCode[2];
+  EhrpdResvMsgIEDataT    IEData[2]; 
+}ResvMsgIEListT;
+
+typedef struct
+{
+  kal_uint8  num;
+  kal_uint8 Direction[MAX_CLIENT_NUM*2];
+  kal_uint8 Label[MAX_CLIENT_NUM*2];
+  kal_uint8  RsvpTimerId;
+}ResvLabelInfoT;
+/****************************************************************************/
+kal_bool   QOMSetFwdQoSSubscribProfile(QosSubScriberProfileT* pSubProfile);
+kal_bool   QOMSetRevQoSSubscribProfile(QosSubScriberProfileT* pSubProfile);
+void   QOMInit(void);
+void   QOMSetRlpFlowProfile(void);
+kal_bool   QOMActivateQoSFlow(kal_uint8 Label, kal_uint8 Direction);
+kal_bool   QOMSendTFT(ResvTftReqT* pReq, kal_uint32 TransId);
+kal_bool  QOMGetRevSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile);
+kal_bool  QOMGetFwdSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile);
+kal_uint8 QOMEncKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData,QosSubBlobT*  pSubBlob);
+kal_uint8 QOMEncNullKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData);
+void  HlpQoMSetSubscribQoSProfile(kal_bool eHRPD,kal_uint8 FlowNum, kal_uint8 PdnId, HlpQoSFlowInfoT* pFlow, kal_uint8 *pFlowId);
+
+kal_bool HlpQoMIsActive(void);
+void QOMSetUpUDPConnection(void);
+void QOMSetUpUDP6Connection(kal_uint8 PdnId);
+void QOMSetMainConnAddr(kal_bool bIPv4, kal_uint32 *pSrcAddr, kal_uint32 *pDstAddr);
+kal_bool HlpQOMReleaseTft(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num);
+kal_bool HlpQOMFlowRelease(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num);
+kal_bool HlpQoMFlowRenego(kal_uint8 Num, kal_uint8 *pLabel, kal_uint8* pDirec);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP.H b/mcu/interface/protocol/l2_c2k/common/IP.H
new file mode 100644
index 0000000..4065fb8
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP.H
@@ -0,0 +1,226 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: ip.h
+ * Project:   TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   Based on PVCS Rev 1.1   (15 Apr 1998)
+ *
+ * Description:  IP Data Structures
+ * Restrictions:
+ * Dependencies:
+ *
+ ************************************************************************/
+
+#ifndef _IP_H_
+#define _IP_H_ 1
+
+#include "IP_TYPE.H"
+
+
+/* IP Protocol Types */
+
+#define IP_ICMP              1         /* IP control message protocol     */
+#define IP_ICMPv6            58      
+#define IP_TCP               6         /* transmission control protocol   */
+#define IP_UDP               17        /* user datagram protocol          */
+
+/*
+ * Address families.
+ */
+#define	AF_UNSPEC	0		/* unspecified */
+#define	AF_INET		2		/* internetwork: UDP, TCP, etc. */
+#define	AF_INET6	28		/* IPv6 */
+
+/* Note that ip_len and ip_off are declared to be signed integers rather
+   than unsigned since unsigned comparisons can result during arithmetic
+   operations of unsigned and signed integers. Such comparisons can fail
+   in subtle ways. */
+
+
+/* IP datagram identifier field fragmentation bit flags. Note that these
+   bit masks can be applied only after the field has been converted to
+   HOST-ENDIAN format. */
+
+#define IP_DF 0x4000                   /* dont fragment bit flag          */
+#define IP_MF 0x2000                   /* more fragments bit flag         */
+
+
+/* IP constant sizes */
+
+#define IP_ADDRSIZE          4         /* IP dotted 4-tuple host address  */
+#define IP_HEADERSIZE        20        /* default IP header size          */
+#define IP_MAXHDRSIZE        60        /* max header + options size       */
+#define IP_MAXDGMSIZE        576       /* default max header+options+data */
+#define IP_MAXPKTSIZE        65535     /* max header+options+data size    */
+#define IP_EXTHDRSIZE        12        /* TCP/UDP extended header size    */
+#define IP_EXTHDROFF         8         /* offset from start of IP header  */
+
+
+/* IP addresses and masks. The masks are applied to IP addresses in
+   NET-endian format, yielding results also in NET-endian format. */
+
+#define IP_ANYADDR           0x00000000
+#define IP_ANYPORT           0x0000
+
+#if HOST_ENDIAN == NET_ENDIAN
+
+#define IP_BROADCAST_ADDR    0xFFFFFFFFUL
+#define IP_OLD_BROADCAST     0x00000000UL
+#define IP_LOOPBACK_ADDR     0x7F000001UL
+#define IP_CLASSA_MASK       0x80000000UL
+#define IP_CLASSB_MASK       0xC0000000UL
+#define IP_CLASSC_MASK       0xE0000000UL
+#define IP_CLASSA_BITS       0x00000000UL
+#define IP_CLASSB_BITS       0x80000000UL
+#define IP_CLASSC_BITS       0xC0000000UL
+#define IP_CLASSA_NET        0xFF000000UL
+#define IP_CLASSB_NET        0xFFFF0000UL
+#define IP_CLASSC_NET        0xFFFFFF00UL
+#define IP_CLASSA_HOST       0x00FFFFFFUL
+#define IP_CLASSB_HOST       0x0000FFFFUL
+#define IP_CLASSC_HOST       0x000000FFUL
+
+#else /* HOST_ENDIAN == LITTLE_ENDIAN */
+
+#define IP_BROADCAST_ADDR    0xFFFFFFFFUL
+#define IP_OLD_BROADCAST     0x00000000UL
+#define IP_LOOPBACK_ADDR     0x0100007FUL
+#define IP_CLASSA_MASK       0x00000080UL
+#define IP_CLASSB_MASK       0x000000C0UL
+#define IP_CLASSC_MASK       0x000000E0UL
+#define IP_CLASSA_BITS       0x00000000UL
+#define IP_CLASSB_BITS       0x00000080UL
+#define IP_CLASSC_BITS       0x000000C0UL
+#define IP_CLASSA_NET        0x000000FFUL
+#define IP_CLASSB_NET        0x0000FFFFUL
+#define IP_CLASSC_NET        0x00FFFFFFUL
+#define IP_CLASSA_HOST       0xFFFFFF00UL
+#define IP_CLASSB_HOST       0xFFFF0000UL
+#define IP_CLASSC_HOST       0xFF000000UL
+#endif
+
+
+/* IP address class macros */
+
+#define IP_CLASSA_ADDR( a )  \
+((((kal_uint32)(a))&IP_CLASSA_MASK)==IP_CLASSA_BITS)
+
+#define IP_CLASSB_ADDR( a )  \
+((((kal_uint32)(a))&IP_CLASSB_MASK)==IP_CLASSB_BITS)
+
+#define IP_CLASSC_ADDR( a )  \
+((((kal_uint32)(a))&IP_CLASSC_MASK)==IP_CLASSC_BITS)
+
+
+/* IP Version Number */
+
+#define IP_VERSION           4
+
+
+/* IP Type-of-Service */
+
+#define IPTOS_LOWDELAY       0x10
+#define IPTOS_THROUGHPUT     0x08
+#define IPTOS_RELIABILITY    0x04
+
+
+/* IP Type-of-Service Precedence Fields (usually unused)*/
+
+#define IPTOS_NETCONTROL     0xE0
+#define IPTOS_INETCONTROL    0xC0
+#define IPTOS_CRITIC_ECP     0xA0
+#define IPTOS_FLASHOVERRIDE  0x80
+#define IPTOS_FLASH          0x60
+#define IPTOS_IMMEDIATE      0x40
+#define IPTOS_PRIORITY       0x20
+#define IPTOS_ROUTINE        0x10
+
+
+/* IP Option Types */
+
+#define IPOPT_EOL            0         /* end of option list               */
+#define IPOPT_NOP            1         /* no operation                     */
+#define IPOPT_RR             7         /* record packet route              */
+#define IPOPT_TS             68        /* timestamp                        */
+#define IPOPT_SECURITY       130       /* provide s,c,h,tcc                */
+#define IPOPT_LSRR           131       /* loose source route               */
+#define IPOPT_SATID          136       /* satnet id                        */
+#define IPOPT_SSRR           137       /* strict source route              */
+
+
+/* IP Multi-Byte Option Format */
+
+#define IPOPT_HEADERSIZE     3         /* option header size              */
+#define IPOPT_TYPE           0         /* option type field offset        */
+#define IPOPT_LEN            1         /* option length field offset      */
+#define IPOPT_OFF            2         /* option pointer field offset     */
+
+#define IPOPT_MINOFF         4         /* pointer field is offset from    */
+                                       /* start of option + 1             */
+
+#define IP_MAXOPTSIZE        40        /* max IP header options           */
+#define IPOPT_MAXROUTEHOPS   ((IP_MAXOPTSIZE-IPOPT_HEADERSIZE)/IP_ADDRSIZE)
+
+
+/* IP Implementation Parameters */
+
+#define IP_MAXTTL            255       /* maximum time-to-live (seconds)  */
+#define IP_FRAGTTL           60        /* time-to-live for fragments      */
+
+
+/* IP Source Port Selection Boundaries */
+#define IP_MINSPORT          0x1000
+#define IP_MAXSPORT          0xffff
+
+
+/* IP Checksum Structure */
+
+union ip_checksum
+  {
+    kal_uint32 u;
+    kal_uint16 w[2];
+  };
+
+
+/* IP Header */
+
+struct ip_header
+  {
+    kal_uint8     hlen;                    /* [7:3] version [3:0] header len  */
+    kal_uint8     tos;                     /* type-of-service                 */
+    kal_uint16    len;                     /* total length                    */
+    kal_uint16    id;                      /* datagram identifier             */
+    kal_uint16    off;                     /* fragment offset                 */
+    kal_uint8     ttl;                     /* time-to-live                    */
+    kal_uint8     pro;                     /* higher-level protocol id        */
+    kal_uint16    chk;                     /* header checksum                 */
+    kal_uint32    src;                     /* source host address             */
+    kal_uint32    dst;                     /* destination host address        */
+  };
+
+
+/* IP source route descriptor */
+
+struct ip_srcroute
+  {
+    kal_uint32  addr;
+    kal_uint32  nhops;
+    kal_uint8   nop;
+    kal_uint8   opt[ IPOPT_HEADERSIZE ];
+    kal_uint32  list[ IPOPT_MAXROUTEHOPS ];
+  };
+
+
+#endif /* _IP_H_ */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_CUSTM.H b/mcu/interface/protocol/l2_c2k/common/IP_CUSTM.H
new file mode 100644
index 0000000..e7587d4
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_CUSTM.H
@@ -0,0 +1,119 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: ip_custm.h
+ * Project:   NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   July 13, 1998
+ *
+ * Description: Code-build options
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.3 $
+ *
+ * $Log: IP_CUSTM.H $
+ *
+ * 11 29 2017 sue.zhong
+ * [MOLY00292266] [MT6295] Modification of coexisting for GCCv4 and GCCv6
+ * .
+ * Revision 1.3  2005/03/18 13:49:03  blee
+ * 4.05 Merge
+ * Revision 1.2  2004/03/24 16:41:22  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.3  2004/02/10 11:31:10  cmastro
+ * merge with 4.0 8.050.0
+ * Revision 1.4  2004/01/21 10:47:58  hhong
+ * Added mechanism to support PPP open only and multi-sockets operations.
+ * Revision 1.3  2003/08/19 18:57:17  hhong
+ * Added mechanism to trigger Um/Rm PPP-reopen in the case of packet zone ID change after re-connection.
+ * Revision 1.2  2002/06/06 11:44:02  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1  2001/04/26 11:42:17  fpeng
+ * Initial revision
+ * Revision 1.5  2001/02/05 10:55:04  hhong
+ * Change NET_MTU from 1500 to 296 bytes.
+ * Revision 1.4  2000/08/23 17:59:09  hhong
+ * To update to engine release 1.6.0.1
+ * Revision 1.3  2000/03/13 18:39:15  pjiang
+ * changed IP_NLOCALS to 4 from 2
+ *
+ * Revision 1.2  1999/03/29 16:29:11  pjiang
+ * change define IP_NTCBS and IP_NLOCALS to 2 from 1
+ *
+ * Revision 1.1  1998/08/13 22:17:44  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _IP_CUSTM_H_
+#define _IP_CUSTM_H_ 1
+
+#include "hlpapi.h"
+#define WeDoUDP
+#define WeDoICMP
+#define WeDoStats
+#define WeDoTCP
+/* #define WeDoRAW */
+
+#define PPP_RECONNECT 
+
+/* Processor Memory Architecture Types */
+#ifdef __has_include
+#if __has_include("mips/endian.h")
+#include <mips/endian.h>
+#else
+#define BIG_ENDIAN           4321
+#define LITTLE_ENDIAN        1234
+#define NET_ENDIAN           BIG_ENDIAN
+#endif
+#else
+#define BIG_ENDIAN           4321
+#define LITTLE_ENDIAN        1234
+#define NET_ENDIAN           BIG_ENDIAN
+#endif
+
+/* Host Processor Architecture Type */
+#define HOST_ENDIAN          LITTLE_ENDIAN
+
+
+/* IP Default Values */
+#define IP_TOSDFLT           0
+#define IP_TTLDFLT           60
+
+/* Network Maximum Transmission Unit */
+#define IP_NTCBS             HLP_MAX_SOCKET /* 10 */       /* number of connections (it was two) */
+#define IP_NLOCALS           4         /* number of local IP addresses    */
+#define TCP_NROUTES          4         /* number of route cache entries   */
+
+#endif /* _IP_CUSTM_H_ */
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_MBUF.H b/mcu/interface/protocol/l2_c2k/common/IP_MBUF.H
new file mode 100644
index 0000000..0b93a4f
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_MBUF.H
@@ -0,0 +1,402 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: ip_mbuf.h
+ * Project:   TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   Based on PVCS Rev 1.1   (15 Apr 1998)
+ *
+ * Description:  IP Memory Management Buffer Definitions
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: IP_MBUF.H $
+ *
+ * 01 18 2017 anson.feng
+ * [MOLY00221557] [Gen93] L4 Integration M1 check in
+ * EM head file conflict
+ *
+ * 11 09 2016 sue.zhong
+ * [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+ * Fix c2k build error
+ * Revision 1.2  2004/03/24 16:41:23  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.3  2004/02/10 11:31:11  cmastro
+ * merge with 4.0 8.050.0
+ * Revision 1.7  2004/01/21 10:47:59  hhong
+ * Added mechanism to support PPP open only and multi-sockets operations.
+ * Revision 1.6  2003/11/21 20:11:48  hhong
+ * Refdefined M_SIZE to be 300 so that 1500 bytes IP datagrams in most of the case in Network Model can be handled effciciently.
+ * Revision 1.5  2003/06/26 18:43:23  hhong
+ * To seperate rlpTxQueue and uartTxQueue and create two sets of hi/lo water mark threshold to handle them seperately.
+ * Revision 1.4  2003/06/10 10:56:05  hhong
+ * Added mechanism to support bug fixes for Mobile IP and Network Layer Rm Interface.
+ * Revision 1.3  2002/06/06 11:44:04  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.2  2002/03/19 16:10:44  hhong
+ * Added 7074cust.h in the included file list.
+ * Added compiler flag SYS_OPTION_DATA_RAM_INUSE.
+ * Revision 1.1  2001/04/26 11:42:18  fpeng
+ * Initial revision
+ * Revision 1.4  2001/02/05 14:14:59  hhong
+ * To move IP_Control_Flow to be out of the criterion called by lowalert in order top prevent time out.
+ * Revision 1.3  2000/08/28 14:57:51  hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a
+ * duplicated version of 1.1
+ * Revision 1.1  1999/11/30 23:01:17Z  cdma
+ * Initial revision
+ * Revision 1.5  1999/07/01 16:44:21  hhong
+ * Incorporate new protocol engine.
+ * Revision 1.2  1999/01/27 22:39:54  bcassidy
+ * 1. Change LOWDELTA to FAILSENDPERCENT so that the
+ *    threshold cannot go negative.
+ *
+ * Revision 1.1  1998/06/10 15:32:21  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef  _IP_MBUF_H_
+#define  _IP_MBUF_H_ 1
+
+#include "7074CUST.H"
+#include "IP_TYPE.H"
+#include "IP.H"
+#include "TCP.H"
+/* #SHARKER add udp_head.h */
+#include "UDP_HEAD.H"
+/* #include "udp.h" */
+#include "ICMP.H"
+#include "IP_USER.H"
+
+
+/* System constants */
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define M_SIZE            300         /* mbuf data buffer size           */
+#else
+#define M_SIZE            1           /* mbuf data buffer size           */
+#endif
+#define M_FLOWCONTROL      35         /* free mbuf to set off flowcontrol*/
+/* #define M_LOWPERCENT       20 */           /* free mbuf lo-water mark (was 25)*/
+/* #define M_HIGHPERCENT      50 */          /* free mbuf hi-water mark         */
+#define M_LOWPERCENT       35 /* 30 */       /* free mbuf lo-water mark (was 25)*/
+#define M_HIGHPERCENT      50           /* free mbuf hi-water mark         */
+#define M_LOWALERT          1           /* free mbuf low alert indication  */
+#define M_FAILSENDPERCENT  15           /* free mbuf fail send requests    */
+
+/* Header flags field bit masks */
+
+#define M_INUSE          0x01        /* mbuf has been allocated         */
+#define M_DROP           0x10        /* don't pass to IP layer          */
+#define M_BCAST          0x20        /* incoming datagram is broadcast  */
+#define M_MCAST          0x40        /* incoming datagram is multicast */
+#define M_IP6            0x02        /* whether it's an ipv6 mbuf */
+#define M_DONTFREE       0x80        /* do not free mbuf chain          */
+
+
+/* Standard mbuf header */
+
+#define IP_MBUFHDRSIZE       (sizeof( struct mbuf_header ))
+
+/* IP datagram */
+
+struct ip_datagram
+  {
+    struct ip_header        ip;
+    union
+      {
+        char                opt[ IP_MAXOPTSIZE ];
+        struct tcp_header   tcp;
+        struct udp_header   udp;
+        struct icmp_header  icmp;
+      }data;
+  };
+
+struct mbuf_header
+  {
+    struct mbuf *next;
+    struct mbuf *link;
+    kal_uint16       len;
+    kal_uint16       size;
+    kal_uint16       data;
+    kal_uint16      flags;
+    kal_uint8       ipoff;
+    kal_uint8       tcpoff;
+    kal_uint8       pdnindex;
+  };
+
+
+/* IP data structure mbuf */
+
+struct mbuf
+  {
+    struct mbuf_header      mbuf_hdr;
+
+    union
+      {
+        kal_uint8               buff[ M_SIZE ];
+        struct ip_datagram  dgm;
+        struct ip_srcroute  route;
+        CpBufferT           *cpbufp;
+      }data;
+
+    kal_uint32                  m_check;
+  };
+
+#define FREE  0x99999999UL             /* m_check word for free mbufs     */
+#define INUSE 0xAAAAAAAAUL             /* m_check word for used mbufs     */
+
+/*-
+ * Macros for type conversion:
+ * mtod(m, t) -- Convert mbuf pointer to data pointer of correct type.
+ */
+#define	mtod(m, t) (((m)->m_flags & M_CPBUF) ? (t)((kal_uint8 *)((m)->m_cpbufp->dataPtr) + (m)->m_data) : (t)(&(m)->m_mbuf[(m)->m_data]))
+
+#define	mtod_off(m, t, off) (((m)->m_flags & M_CPBUF) ? (t)((kal_uint8 *)((m)->m_cpbufp->dataPtr) + off) : (t)(&(m)->m_mbuf[off]))
+/*
+ * Set the m_data pointer of a newly-allocated mbuf (m_get/MGET) to place
+ * an object of the specified size at the end of the mbuf, longword aligned.
+ */
+#define	M_ALIGN(m, len) do {                                    \
+    (m)->m_data = (M_SIZE - (len)) & ~(sizeof(int) - 1);        \
+} while (0)
+
+/* Standard mbuf header fields */
+
+#define m_next               mbuf_hdr.next
+#define m_link               mbuf_hdr.link
+#define m_hlen               mbuf_hdr.len
+#define m_size               mbuf_hdr.size
+#define m_data               mbuf_hdr.data
+#define m_flags              mbuf_hdr.flags
+#define m_mbuf               data.buff
+
+#define m_ipoff              mbuf_hdr.ipoff
+#define m_tcpoff             mbuf_hdr.tcpoff
+#define m_udpoff             mbuf_hdr.tcpoff
+#define m_pdnindex           mbuf_hdr.pdnindex
+#define m_cpbufp             data.cpbufp
+
+
+/* Singly-linked mbuf queue listhead. The mbufs on a queue are linked by
+   their m_next fields. */
+
+struct mqueue
+  {
+    struct mbuf *m_head;               /* when queue is empty m_head is 0 */
+    struct mbuf *m_tail;               /* and m_tail points to m_head     */
+    kal_bool   full_flag;	  			   /* this is set when the ip_pktcount reaches highmark */
+    kal_uint8  ip_pktcount;	  			   /* number of IP pkts in the mqueue */
+  };
+
+/* Singly-linked mbuf data buffer listhead. The mbufs of a data buffer
+   are linked by their m_link fields. */
+
+struct mbuffer
+  {
+    struct mbuf *m_tail;               /* when buffer is empty m_head is  */
+    struct mbuf *m_head;               /* 0 and m_tail points to m_tail   */
+  };
+
+
+/* State vector for mbuf management */
+
+struct mstate
+  {
+    kal_uint8  *m_pooladdr;               /* mbuf pool address               */
+    kal_uint16  m_poolsize;               /* number of bytes in mbuf pool    */
+    kal_uint16  m_mbufsize;               /* mbuf header+buffer size         */
+    kal_uint16  m_datasize;               /* mbuf data buffer size           */
+    kal_uint16  m_totalcount;             /* total mbuf count                */
+    kal_uint16  m_freecount;              /* free mbuf count                 */
+    kal_uint16  m_freecounted;            /* counted when m_status called    */
+    kal_uint16  m_freemin;                /* lowest free mbuf count          */
+    kal_uint16  m_lowmark;                /* number of mbufs at low mark     */
+    kal_uint16  m_failsendmark;           /* number of mbufs when sends fail */
+    kal_uint16  m_highmark;               /* number of mbufs at high mark    */
+    kal_bool    m_lowalert;               /* in alert state if free < low    */
+    kal_uint16  m_xoffcount;              /* number of xoff notifications    */
+    kal_uint16  m_xoncount;               /* number of xon notifications     */
+    kal_uint16  m_flowcontrolmark;        /* lowest of mbuf before flow off  */
+ };
+
+
+/* Function prototypes for mbuf management operations */
+
+void        m_init( kal_uint8 *buffer, kal_uint16 size );
+void        m_status( struct mstate *p );
+void        m_free( struct mbuf *m );
+struct mbuf *m_get( void );
+
+
+/* Function prototypes for mbuf chain operations */
+
+void m_freem( struct mbuf *m );
+void m_freed( struct mbuf *m );
+void m_compact( struct mbuf *m );
+void m_join( struct mbuf *m, struct mbuf *n );
+void m_keep( struct mbuf *m, kal_uint16 size );
+kal_uint16 m_freeCount ( void );
+kal_uint16 m_unchain( struct mbuf *m, kal_uint8 *data, kal_uint16 size );
+kal_uint16 m_length ( struct mbuf *m );
+struct mbuf *m_chain( kal_uint8 *data, kal_uint16 size );
+struct mbuf *m_drop( struct mbuf *m, kal_uint16 size );
+struct mbuf *m_split( struct mbuf *m, kal_uint16 size );
+struct mbuf *m_copy( struct mbuf *m, kal_uint16 size );
+struct mbuf *m_ecopy( struct mbuf *m, kal_int16 off0, kal_uint16 size );
+struct mbuf * m_prepend(struct mbuf *m, int len );
+struct mbuf *m_get_cpbuf( CpBufferT *cpbufp);
+
+/* Function prototypes for mbuf queue operations */
+
+void        m_initq( struct mqueue *q );
+void        m_freeq( struct mqueue *q );
+void        m_enq( struct mbuf *m, struct mqueue *q );
+void        m_pushq( struct mbuf *m, struct mqueue *q );
+void        m_insertq( struct mqueue *q, struct mbuf *n, struct mbuf *p );
+void        m_removeq( struct mqueue *q, struct mbuf *n, struct mbuf *p );
+struct mbuf *m_deq( struct mqueue *q );
+
+
+/* Function prototypes for mbuf data buffer operations */
+
+void         m_initb( struct mbuffer *q );
+void         m_freeb( struct mbuffer *q );
+void         m_buffer( struct mbuffer *q, struct mbuf *m );
+struct mbuf *m_unbuffer( struct mbuffer *q, kal_uint16 size );
+
+
+#ifdef M_DEBUG
+/* Function prototypes for mbuf debug operations */
+
+int_16 m_chkq( struct mqueue *q );
+void   m_freemx( struct mbuf *m, char *file, int_16 line );
+#endif
+
+
+/* When inserting or removing the mbuf (chain) at the head of a queue
+   identify the previous mbuf as HEADQ( q ). */
+
+#define HEADQ( q )  (struct mbuf *)(q)
+
+
+/* IP Header */
+
+#define ip_dgm               data.buff           /* char[ M_SIZE ]        */
+#define ip_hdr               data.dgm.ip         /* struct ip_header      */
+#define ip_hlen              data.dgm.ip.hlen
+#define ip_ver               data.dgm.ip.ver
+#define ip_tos               data.dgm.ip.tos
+#define ip_len               data.dgm.ip.len
+#define ip_id                data.dgm.ip.id
+#define ip_off               data.dgm.ip.off
+#define ip_ttl               data.dgm.ip.ttl
+#define ip_pro               data.dgm.ip.pro
+#define ip_chk               data.dgm.ip.chk
+#define ip_src               data.dgm.ip.src
+#define ip_dst               data.dgm.ip.dst
+#define ip_opt               data.dgm.data.opt   /* char[ IP_MAXOPTSIZE ] */
+#define ip_tcp               data.dgm.data.opt
+#define ip_udp               data.dgm.data.opt
+
+#define ip_fragq             data.dgm.data.opt[0]
+#define ip_mff               data.dgm.ip.tos
+
+
+/* TCP Header */
+
+#define tcp_hdr              data.dgm.data.tcp
+#define tcp_src              data.dgm.data.tcp.src
+#define tcp_dst              data.dgm.data.tcp.dst
+#define tcp_seq              data.dgm.data.tcp.seq
+#define tcp_ack              data.dgm.data.tcp.ack
+#define tcp_hlen             data.dgm.data.tcp.hlen
+#define tcp_ctl              data.dgm.data.tcp.ctl
+#define tcp_win              data.dgm.data.tcp.win
+#define tcp_chk              data.dgm.data.tcp.chk
+#define tcp_urg              data.dgm.data.tcp.urg
+
+
+/* TCP and UDP Extended Header */
+
+#define tcp_seg              data.dgm.ip.ttl       /* TCP extended header */
+#define tcp_len              data.dgm.ip.chk       /* TCP header+data len */
+
+#define ext_zer              data.dgm.ip.ttl       /* must be zero        */
+#define ext_pro              data.dgm.ip.pro       /* IP_TCP or IP_UDP    */
+#define ext_len              data.dgm.ip.chk       /* TCP/UDP header+data */
+#define ext_saddr            data.dgm.ip.src       /* IP source address   */
+#define ext_daddr            data.dgm.ip.dst       /* IP destin address   */
+
+
+/* UDP Header */
+
+#define udp_hdr              data.dgm.data.udp
+#define udp_src              data.dgm.data.udp.src
+#define udp_dst              data.dgm.data.udp.dst
+#define udp_len              data.dgm.data.udp.len
+#define udp_chk              data.dgm.data.udp.chk
+
+
+/* ICMP Header and Message */
+
+#define icmp_hdr             data.dgm.data.icmp
+#define icmp_type            data.dgm.data.icmp.type
+#define icmp_code            data.dgm.data.icmp.code
+#define icmp_chk             data.dgm.data.icmp.chk
+#define icmp_void            data.dgm.data.icmp.data.advice.type.u
+#define icmp_prob            data.dgm.data.icmp.data.advice.type.prob
+#define icmp_redir           data.dgm.data.icmp.data.advice.type.redirect
+#define icmp_unreach         data.dgm.data.icmp.data.advice.type.unreach
+#define icmp_expired         data.dgm.data.icmp.data.advice.type.expired
+#define icmp_quench          data.dgm.data.icmp.data.advice.type.quench
+#define icmp_echo            data.dgm.data.icmp.data.echo
+#define icmp_time            data.dgm.data.icmp.data.time
+
+
+/* IP Source Route Fields */
+
+#define sr_addr              data.route.addr
+#define sr_nhops             data.route.nhops
+#define sr_opt               data.route.opt
+#define sr_list              data.route.list
+
+
+/* Global References */
+
+extern struct mstate         mstate;
+extern struct mstate        *pool;
+extern struct mqueue         mfreeq;
+
+#endif /* _IP_MBUF_H_ */
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_PROC.H b/mcu/interface/protocol/l2_c2k/common/IP_PROC.H
new file mode 100644
index 0000000..7360090
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_PROC.H
@@ -0,0 +1,109 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: ip_proc.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1   (15 Apr 1998)
+ *
+ * Description: Processor Architecture Dependencies
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: IP_PROC.H $
+ * Revision 1.2  2004/03/24 16:41:24  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1  2003/05/12 15:24:07  fpeng
+ * Initial revision
+ * Revision 1.2  2002/06/06 11:44:05  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1  2001/04/26 11:42:19  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 14:57:53  hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a 
+ * duplicated version of 1.1
+ * Revision 1.1  1999/11/30 23:01:22Z  cdma
+ * Initial revision
+ * Revision 1.5  1999/07/01 16:44:25  hhong
+ * Incorporate new protocol engine.
+ * Revision 1.3  1999/01/25 19:02:15  bcassidy
+ * 1. Fix NTOH and HTON macros for little-Endian machines.
+ *
+ * Revision 1.2  1999/01/05 18:37:26  dcc
+ * move HTON macros to function calls to remove compiler warnings
+ *
+ * Revision 1.1  1998/06/10 15:32:21  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _IP_PROC_H_
+#define _IP_PROC_H_ 1
+
+#include "IP_CUSTM.H"
+
+
+/* HOST-to-NET and NET-to-HOST Endian Conversion Macros */
+
+#if HOST_ENDIAN == NET_ENDIAN
+
+/* In-Place Endian Exchange Conversions */
+
+#define HTON16X(i)
+#define NTOH16X(i)
+#define HTON32X(i)
+#define NTOH32X(i)
+
+/* Assignment Endian Conversions */
+
+#define NTOH16(i)   (i)
+#define NTOH32(i)   (i)
+#define HTON16(i)   (i)
+#define HTON32(i)   (i)
+
+#else /* HOST_ENDIAN != NET_ENDIAN */
+
+/* Assignment Endian Conversions */
+kal_uint16 Swap_Endian_16 (kal_uint16 val);
+kal_uint32 Swap_Endian_32 (kal_uint32 val);
+
+#define NTOH16(i)  Swap_Endian_16(i)
+#define NTOH32(i)  Swap_Endian_32(i)
+#define HTON16(i)  Swap_Endian_16(i)
+#define HTON32(i)  Swap_Endian_32(i)
+
+#define NTOH16X(i) (i) = Swap_Endian_16(i)
+#define NTOH32X(i) (i) = Swap_Endian_32(i)
+#define HTON16X(i) (i) = Swap_Endian_16(i)
+#define HTON32X(i) (i) = Swap_Endian_32(i)
+
+#endif /* ENDIAN_H */
+
+#endif /* _IP_PROC_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_TYPE.H b/mcu/interface/protocol/l2_c2k/common/IP_TYPE.H
new file mode 100644
index 0000000..db77acf
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_TYPE.H
@@ -0,0 +1,87 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: ip_type.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1   (15 Apr 1998)
+ *
+ * Description: IP Portable Type Definitions
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: IP_TYPE.H $
+ * Revision 1.2  2004/03/24 16:41:26  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1  2003/05/12 15:24:10  fpeng
+ * Initial revision
+ * Revision 1.2  2002/06/06 11:44:07  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1  2001/04/26 11:42:20  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 14:57:56  hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a 
+ * duplicated version of 1.1
+ * Revision 1.1  1999/11/30 23:01:32Z  cdma
+ * Initial revision
+ * Revision 1.5  1999/07/01 16:44:37  hhong
+ * Incorporate new protocol engine.
+ * Revision 1.2  1998/08/13 21:02:57  sharker
+ * Removed stype include from the header file.
+ *
+ * Revision 1.1  1998/06/10 15:32:21  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _IP_TYPE_H_
+#define _IP_TYPE_H_ 1
+
+#include "IP_CUSTM.H"
+
+#endif /* _IP_TYPE_H_ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/NSP_OFST.H b/mcu/interface/protocol/l2_c2k/common/NSP_OFST.H
new file mode 100644
index 0000000..942ddde
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/NSP_OFST.H
@@ -0,0 +1,31 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: NSP_Ofst.h 
+ * 
+ * Purpose: Defines module id offsets to add with token value 
+ *          to create contiguous tokens. 
+ * 
+ ***************************************************************/
+
+
+const kal_uint16 TokenOffsetsNspe[9] = 
+{                                                                
+  0,
+  14,
+  27,
+  48,
+  51,
+  55,
+  58,
+  62,
+  62
+};
diff --git a/mcu/interface/protocol/l2_c2k/common/PPPAPI.H b/mcu/interface/protocol/l2_c2k/common/PPPAPI.H
new file mode 100644
index 0000000..09c40b4
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/PPPAPI.H
@@ -0,0 +1,472 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: pppapi.h
+ * Project:   PPP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:
+ *
+ * Description:  Header File for the PPP Application Programming Interface
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PPPAPI_H_
+#define _PPPAPI_H_ 1
+
+/* Standard type definitions */
+#include "7074CUST.H"
+#include "IP_PROC.H"
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define PPP_NPORTS      4
+#else
+#define PPP_NPORTS      1
+#endif
+
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define PPP_DATASIZE    1500
+#else
+#define PPP_DATASIZE    1
+#endif
+
+/* Macros to store a 16-bit integer LS byte first */
+#if ( HOST_ENDIAN == BIG_ENDIAN )
+#define LSBYTE_FIRST(i)    (kal_uint16)( (((kal_uint16)(i) << 8) & 0xff00)| \
+                                     (((kal_uint16)(i) >> 8) & 0x00ff)  \
+                                   )
+
+#define LSBYTE_FIRST_32(i) (kal_uint32)( (((kal_uint32)(i) << 24) & 0xff000000)| \
+                                     (((kal_uint32)(i) << 8)  & 0x00ff0000)| \
+                                     (((kal_uint32)(i) >> 8)  & 0x0000ff00)| \
+                                     (((kal_uint32)(i) >> 24) & 0x000000ff)  \
+                                   )
+#else   /* HOST_ENDIAN = LITTLE_ENDIAN */
+#define LSBYTE_FIRST(i)    (kal_uint16)(i)
+#define LSBYTE_FIRST_32(i) (kal_uint32)(i)
+#endif  /* HOST_ENDIAN */
+
+/* IE_xxx Status Codes -- others may be already defined elsewhere! */
+/* #define IE_SUCCESS        0 */ /* Let user_api.h define it. */
+
+#define IE_NOMOREPORTS      100
+#define IE_OPENPORTFAIL     101
+#define IE_INVALIDPPPPORT   102
+#define IE_PORTNOTOPEN      103
+#define IE_INVALIDEVENT     104
+#define IE_INVALIDTIMER     105
+#define IE_INVALID_AUTHPROT 106
+
+#define IE_RESTARTTIMER     110
+#define IE_MAXTERMINATE     111
+#define IE_MAXCONFIGURE     112
+#define IE_MAXFAILURE       113
+#define IE_BUFFERSIZE       114
+#define IE_NUMSLOTS         115
+#define IE_AUTHRETRYTIMER   116
+#define IE_AUTHMAXTRIES     117
+
+#define IE_NORXBUFFER       120
+#define IE_RXBUFFERFULL     121
+#define IE_NORXDATA         122
+#define IE_SENDINPROGRESS   123
+
+/* PPP/LCP Protocol Numbers */
+#define PRO_IP              0x0021    /* Internet Protocol                  */
+#define PRO_IPV6            0x0057    /* Internet Protocol Version 6        */
+#define PRO_TCPIP_VJ        0x002d    /* Van Jacobson Compressed TCP/IP     */
+#define PRO_TCPIP_UC        0x002f    /* Uncompressed TCP/IP                */
+
+#define PRO_IPCP            0x8021    /* NCP: IP Control Protocol           */
+#define PRO_IPV6CP          0x8057    /* NCP: IPV6 Control Protocol         */
+#define PRO_CCP             0x80fd    /* Compression Control Protocol       */
+
+#define PRO_LCP             0xc021    /* Link Control Protocol              */
+#define PRO_PAP             0xc023    /* Password Authentication            */
+#define PRO_LQR             0xc025    /* Link Quality Report                */
+#define PRO_CHAP            0xc223    /* Challenge Handshake Authentication */
+#ifdef CBP7_EHRPD
+#define PRO_EAP             0xc227    /* Extensible Authentication Protocol */
+#endif
+
+#define PRO_MNRP            0x4003    /* MNRP CDPD registration protocol    */
+#define PRO_VSNCP           0x805b    /* Vendor-Specific Net Ctrl Protocol  */
+#define PRO_VSNP            0x005b    /* Vendor-Specific Network Protocol   */
+#define PRO_IPV6            0x0057    /* IPv6 over PPP                      */
+#define PRO_CDP             0x8207    /* Cisco Discovery Protocol Control   */
+
+
+/* PPP Configuration Vector */
+typedef struct config
+{
+  /* PPP-LCP Parameters */
+  kal_uint16 restart;                     /* restart timer                      */
+  kal_uint16 mconfigs;                    /* max LCP Configure-REQ              */
+  kal_uint16 mterms;                      /* max LCP Terminate-REQ              */
+  kal_uint16 mfails;                      /* max LCP Configure-NAK              */
+  kal_uint16 termRestart;                 /* termination timer                  */
+
+  /* PPP-NCP Parameters */
+  kal_uint16 ncpRestart;                  /* restart timer                      */
+  kal_uint16 ncpMconfigs;                 /* max NCP Configure-REQ              */
+  kal_uint16 ncpMterms;                   /* max NCP Terminate-REQ              */
+  kal_uint16 ncpMfails;                   /* max NCP Configure-NAK              */
+  kal_uint16 ncpTermRestart;              /* termination timer                  */
+
+  /* LCP Options */
+  kal_uint32 accm;                        /* Async Control-Character Map        */
+  kal_bool   UseQual;                     /* Use Link Quality Reporting?        */
+  kal_bool   UseMagic;                    /* Use Magic-Number?                  */
+  kal_bool   UsePcomp;                    /* Use Protocol Compression?          */
+  kal_bool   UseAcomp;                    /* Use Address/Control Compression?   */
+
+  /* Authentication Options */
+  char*  userName;                    /* User Name                          */
+  char*  password;                    /* PAP:password, CHAP:secret          */
+  kal_uint8  lenPassword;
+  kal_uint16 authRetryTimer;              /* Auth-Rqst/Challenge retry timer    */
+  kal_uint16 authMaxTries;                /* Auth-Rqst/Challenge max tries      */
+
+  /* LQR Options */
+  kal_uint16 LqrPeriod;                   /* LQR Reporting Period (sec)         */
+
+  /* NCP (IPCP) Options */
+  kal_uint32 LocIPAddr;                   /* IP Address: Local                  */
+  kal_uint32 RmtIPAddr;                   /* IP Address: Remote (peer)          */
+  kal_uint32 PriDNSAddr;                  /* IP Address: Primary DNS Server     */
+  kal_uint32 SecDNSAddr;                  /* IP Address: Secondary DNS Server   */
+  kal_bool   txUseVJC;                    /* Van Jacobson Compression (peer)    */
+  kal_bool   rxUseVJC;                    /* Van Jacobson Compression           */
+  kal_uint8  NumSlots;                    /* Number of Slots                    */
+  kal_bool   UseScomp;                    /* Use Slot ID Compression?           */
+  kal_bool   UseDNSPri;                   /* Use DNS Primary?                   */
+  kal_bool   UseDNSSec;                   /* Use DNS Secondary?                 */
+
+  /* Peer's options available to Network App */
+  kal_uint16 PeerMRU;                     /* The peer's Maximum Receive Unit    */
+} CONFIG;
+
+/* Defaults for Configuration Vector */
+#define DEFL_LOCAL_RM_IP    0x0a000001
+#define DEFL_REMOTE_RM_IP   0x0a000070
+
+
+#ifdef CBP7_EHRPD
+#define DFLT_RESTART_EHRPD  2000
+#endif
+
+#define DFLT_RESTART        3000
+#define DFLT_MCONFIGS       10
+#define DFLT_MFAILS         10
+#define DFLT_MTERMS         2
+#define DFLT_TERM_TMO       3000
+#define DFLT_NCP_RESTART    3000
+#define DFLT_NCP_MCONFIGS   10
+#define DFLT_NCP_MFAILS     10
+#define DFLT_NCP_MTERMS     2
+#define DFLT_NCP_TERM_TMO   3000
+#define DFLT_MCONFIGS_SHORT 3
+
+#define DFLT_ACCM           0xffffffffL
+#define DFLT_USELQR         KAL_FALSE
+#define DFLT_LQRPERIOD      120
+#ifdef MTK_PLT_ON_PC_UT
+#define DFLT_USEMAGIC       KAL_FALSE
+#else
+#define DFLT_USEMAGIC       KAL_TRUE  /* for India */
+#endif
+#define DFLT_PCOMP          KAL_FALSE
+#define DFLT_ACOMP          KAL_FALSE
+
+#define DFLT_AUTH_TIMER     3000
+#define DFLT_AUTH_MAXTRIES  5
+
+#define DFLT_IPADDRESS      0x00000000L
+#define DFLT_NUMSLOTS       16
+#define DFLT_COMPSLOTID     KAL_FALSE
+#define DFLT_DNSPRI         KAL_TRUE
+#define DFLT_DNSSEC         KAL_TRUE
+
+/* Maximum values for Configuration Vector */
+#define MAX_RESTART         10000
+#define MAX_MCONFIGS        20
+#define MAX_MTERMS          5
+#define MAX_MFAILS          20
+
+/* Max/Min values for Configuration Vector */
+#define MAX_NUMSLOTS        DFLT_NUMSLOTS
+#define MIN_NUMSLOTS        2
+#if (MAX_NUMSLOTS < MIN_NUMSLOTS)
+#error [pppapi.h] MAX_NUMSLOTS < MIN_NUMSLOTS
+#endif
+
+/* Counter structure used for Link Quality Reporting (LQR) */
+typedef struct lqr_counts
+{
+  kal_uint32 LastOutLQRs;
+  kal_uint32 LastOutPackets;
+  kal_uint32 LastOutOctets;
+  kal_uint32 PeerInLQRs;
+  kal_uint32 PeerInPackets;
+  kal_uint32 PeerInDiscards;
+  kal_uint32 PeerInErrors;
+  kal_uint32 PeerInOctets;
+  kal_uint32 PeerOutLQRs;
+  kal_uint32 PeerOutPackets;
+  kal_uint32 PeerOutOctets;
+
+} LQR_COUNTS;
+
+#define NUM_LQR_COUNTS      ( sizeof(LQR_COUNTS) / sizeof(kal_uint32) )
+
+/* LQR counters "logically appended" by PPP to a received LQR packet */
+typedef struct lqr_appends
+{
+  kal_uint32 SaveInLQRs;
+  kal_uint32 SaveInPackets;
+  kal_uint32 SaveInDiscards;
+  kal_uint32 SaveInErrors;
+  kal_uint32 SaveInOctets;
+
+} LQR_APPENDS;
+
+#define NUM_LQR_APPENDS     ( sizeof(LQR_APPENDS) / sizeof(kal_uint32) )
+
+/* LQR Rx Packet data format (as delivered by PPP) */
+typedef struct lqr_rxdata
+{
+  /* LQR fields received from the peer */
+  LQR_COUNTS  counts;
+
+  /* LQR fields "logically appended" by PPP to received LQR data */
+  LQR_APPENDS appends;
+
+} LQR_RXDATA;
+
+/* PPP Connection Communication Statistics */
+typedef struct ppp_stats
+{
+  kal_uint32 packets_sent;
+  kal_uint32 bytes_sent;
+  kal_uint32 packets_rcvd;
+  kal_uint32 bytes_rcvd;
+  kal_uint32 packets_dropped;
+  kal_uint32 overrun_errors;
+  kal_uint32 recvfcs_errors;
+  kal_uint32 lqrpackets_sent;
+
+} PPP_STATS;
+
+/* LCP Statistics */
+typedef struct lcp_stats
+{
+  kal_uint32   illegal_ups;
+  kal_uint32   illegal_downs;
+
+} LCP_STATS;
+
+/* PPP Event types -> NET */
+enum netEvents
+{
+  PPE_ILLEGAL = 0,                    /* Illegal Event occurred               */
+  PPE_LOOPBACK,                       /* Connection is looped back to itself  */
+
+  PPE_CONNECT_LCP,                    /* Connect    -> Can carry traffic      */
+  PPE_CONNECT_IPCP,                   /* Connect    -> Can carry IP traffic   */
+  PPE_DISCONNECT,                     /* Disconnect -> Link Dead              */
+
+  PPE_RXDATA,                         /* Datagram Received                    */
+  PPE_SENDCOMPLETE,                   /* Datagram Send Completed              */
+
+  /* This one must always be last! */
+  netNUMEVENTS
+};
+
+/* PPP Internal Event types -> Link Manager */
+enum pEvents
+{
+  pNONE = 0,                          /* Switch-Kicker                        */
+
+  pUP,                                /* Up                                   */
+  pDOWN,                              /* Down                                 */
+  pOPEN,                              /* Open                                 */
+  pCLOSE,                             /* Close                                */
+  pTIMEOUT,                           /* TO+, TO-                             */
+
+  pSENDDATA,                          /* Send Data                            */
+
+  /* COM Layer -> Link Manager */
+  pCOMUP,                             /* COM Layer Up                         */
+  pCOMDOWN,                           /* COM Layer Down                       */
+  pRXPACKET,                          /* Received Raw HDLC Packet             */
+  pTXDONE,                            /* Transmit Complete                    */
+
+  /* LCP -> Link Manager */
+  pTLU,                               /* This Layer Up                        */
+  pTLD,                               /* This Layer Down                      */
+
+  /* SYS -> AUTH */
+  pREMOTE_AUTH_TMO,                   /* Peer: PAP Auth-Request retry or
+                                       *       CHAP Response-Retry timeout    */
+  pLOCAL_AUTH_TMO,                    /* Auth: CHAP Challenge retry timeout   */
+
+  /* AUTH -> Link Manager */
+  pAUTH_DONE,                         /* All Authentication complete          */
+
+  /* SYS -> MNRP */
+  pMNRP_TMO,                          /* MNRP timeout of configuration timer  */
+  pMNRP_DONE,                         /* MNRP finished registration           */
+
+#ifdef PPP_RECONNECT
+  pREOPEN,                            /* ppp Re-Open                          */
+#endif
+
+  pDORMANT_RECONNECT,
+  /* This one must be last! */
+  pNUMEVENTS
+};
+
+/* NET-to-PPP Function Prototypes */
+kal_uint16 PPP_Initialize(void);
+kal_uint16 PPP_Open (kal_uint8 appType, kal_uint8 *buffer, kal_uint16 buflen, kal_uint16 *port, kal_uint16 authProt, kal_bool mnrp);
+kal_uint16 PPP_GetConfig(kal_uint16 port, CONFIG *r);
+kal_uint16 PPP_SetConfig(kal_uint16 port, CONFIG *r);
+kal_uint16 PPP_Connect(kal_uint16 port);
+kal_uint16 PPP_Send(kal_uint16 port, kal_uint16 prot, kal_uint8 *data, kal_uint16 len, kal_uint8 PdnId);
+kal_uint16 PPP_Receive(kal_uint16 port, kal_uint16 *prot, kal_uint8 **data, kal_uint16 *len,
+                   kal_bool copy);
+kal_uint16 PPP_Disconnect(kal_uint16 port);
+kal_uint16 PPP_Close(kal_uint16 port);
+kal_uint16 PPP_Init(kal_uint16 port);
+kal_uint16 PPP_GetStatus(kal_uint16 port, PPP_STATS *status);
+
+#ifdef PPP_RECONNECT
+kal_uint16 PPP_ReConnect(kal_uint16 port);
+#endif
+
+/* PPP-to-PPP Function Prototypes */
+void PPP_Timeout(hlp_timer_enum timer_id);
+kal_uint16 PPP_PostEvent(kal_uint16 port, kal_uint8 type);
+void   PPP_SetState(kal_uint16 port, kal_uint8 state);
+
+/* PPP-to-NET Function Prototypes */
+void   PPP_SendNetEvent(kal_uint16 port, kal_uint8 type);
+
+/* Interface between Browser and Async for supporting Browser_on_Async mode */
+void   Browser_Close_Async(kal_bool graceful);
+
+#endif  /* _PPPAPI_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/PPP_OFST.H b/mcu/interface/protocol/l2_c2k/common/PPP_OFST.H
new file mode 100644
index 0000000..28d4a54
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/PPP_OFST.H
@@ -0,0 +1,35 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: PPP_Ofst.h 
+ * 
+ * Purpose: Defines module id offsets to add with token value 
+ *          to create contiguous tokens. 
+ * 
+ ***************************************************************/
+
+
+kal_uint16 TokenOffsetsPpp[13] = 
+{                                                                
+  0,
+  0,
+  101,
+  135,
+  166,
+  174,
+  182,
+  195,
+  214,
+  217,
+  220,
+  230,
+  240
+};
diff --git a/mcu/interface/protocol/l2_c2k/common/PP_FRAME.H b/mcu/interface/protocol/l2_c2k/common/PP_FRAME.H
new file mode 100644
index 0000000..e61c690
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/PP_FRAME.H
@@ -0,0 +1,129 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       pp_frame.h
+ * Project:         PPP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   
+ *
+ * Description:     PPP in HDLC Framing 
+ *                  See: RFC 1549
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: PP_FRAME.H $
+ * Revision 1.2  2004/03/24 16:41:40  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1  2003/05/12 15:24:18  fpeng
+ * Initial revision
+ * Revision 1.2  2002/06/06 11:44:18  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1  2001/04/26 11:42:24  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 15:06:46  hhong
+ * Moving up to Rev 1.3 by checking out 1.1.2.1 and locking 1.2.
+ * It's a duplicate version of 1.1.2.1
+ * Revision 1.1.2.1  2000/08/24 00:58:52Z  hhong
+ * To update to engine release 1.6.0.1
+ * Revision 1.7  2000/03/24 00:09:13  pjiang
+ * added structure define for Ethernet support
+ *
+ * Revision 1.6  2000/02/25 00:35:14  ddoucett
+ * *** empty log message ***
+ *
+ * Revision 1.5  1998/09/10 20:30:12  sharker
+ * Increased PPP_BUFFERSIZE to handle 32-bit boundary alignment.
+ *
+ * Revision 1.4  1998/08/13 21:02:02  sharker
+ * Removed stype.h include from header file.
+ *
+ * Revision 1.3  1998/07/23 15:58:50  sharker
+ * Changed uchar,ushort, and ulong to kal_uint8, kal_uint16 and kal_uint32.
+ *
+ * Revision 1.2  1998/06/30 15:44:07  sharker
+ * Added #define for inplace tcp/ip header decompression handling.
+ *
+ * Revision 1.1  1998/06/10 15:39:11  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PP_FRAME_H_
+#define _PP_FRAME_H_ 1
+
+  /* Standard definitions */
+#include "PPPAPI.H"
+
+/* HDLC Frame Header structure */
+typedef struct ppp_header
+{
+  kal_uint8     flag;                   /* Flag Field                     */
+  kal_uint8     addr;                   /* Address Field                  */
+  kal_uint8     ctrl;                   /* Control Field                  */
+  kal_uint8     prot[2];                /* Protocol Field                 */
+} PPP_HEADER;
+
+/* HDLC Frame Trailer structure */
+typedef struct ppp_trailer
+{
+  kal_uint8     fcs[2];                 /* Frame Check Sequence (FCS)     */
+  kal_uint8     flag;                   /* Flag Field                     */  
+} PPP_TRAILER;
+
+/* HDLC Frame sizes */
+#define PPP_HEADERSIZE      5
+#define PPP_TRAILERSIZE     3
+#define PPP_HEADER_OFFSET   8
+
+
+
+
+/* HDLC Frame constants defined by RFC 1549 */
+#define HDLC_FLAG           0x7e      /* HDLC Flag:       01111110      */
+#define HDLC_ALL_ADDR       0xff      /* HDLC All-Station Address       */
+#define HDLC_UI             0x03      /* HDLC Unnumbered Information    */
+#define PP_ESC              0x7d      /* Control Escape:  01111101      */
+#define PP_ESC_MASK         0x20      /* XOR Mask for escaped character */
+
+/* PPP Implementation Constants */
+/* the extra space at the beginning of the buffer 
+   is for 32-bit address alignments, that may be required */
+#define PPP_BUFFERSIZE      (2*PPP_HEADERSIZE+PPP_DATASIZE+PPP_TRAILERSIZE)
+
+/* This offset allows for tcp/ip header decompression in place.
+   The maximum allowable tcp/ip header size is 128 bytes */ 
+#define TCPIP_INPLACE_COMPRESS_SIZE 128
+
+#endif  /* _PP_FRAME_H_ */
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/TCP.H b/mcu/interface/protocol/l2_c2k/common/TCP.H
new file mode 100644
index 0000000..eafc6e5
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/TCP.H
@@ -0,0 +1,243 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: tcp.h
+ * Project:   TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   Based on PVCS Rev 1.1   (15 Apr 1998)
+ *
+ * Description: TCP Data Structures
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ ************************************************************************/
+
+#ifndef _TCP_H_
+#define _TCP_H_ 1
+
+#include "IP_TYPE.H"
+#include "IP.H"
+
+
+/* TCP Header */
+
+struct tcp_header
+  {
+    kal_uint16  src;                      /* source port number              */
+    kal_uint16  dst;                      /* destination port number         */
+    kal_uint32  seq;                      /* sequence number                 */
+    kal_uint32  ack;                      /* acknowledgement sequence number */
+    kal_uint8   hlen;                     /* [7:3] header 32-bit word length */
+    kal_uint8   ctl;                      /* TCP control bit flags           */
+    kal_uint16  win;                      /* offered window                  */
+    kal_uint16  chk;                      /* checksum over TCP header+data   */
+    kal_uint16  urg;                      /* offset from seq of last byte of */
+  };                                  /* urgent data                     */
+
+
+/* TCP Header Control Field Bit Flags */
+
+#define TCP_FIN 0x01
+#define TCP_SYN 0x02
+#define TCP_RST 0x04
+#define TCP_PSH 0x08
+#define TCP_ACK 0x10
+#define TCP_URG 0x20
+
+
+/* TCP/IP Header */
+
+struct tcpip_header
+  {
+    struct ip_header   ip;             /* IP header without options       */
+    struct tcp_header  tcp;            /* TCP header without options      */
+  };
+
+
+/* TCP Constant Sizes */
+
+#define TCP_HEADERSIZE       20        /* default TCP header size         */
+#define TCP_MAXHDRSIZE       40        /* should really be 24 but nops ok */
+#define TCP_MAXSEGSIZE       536       /* IP_MAXDGMSIZE-TCPIP_HEADERSIZE  */
+#define TCP_MSSOPTSIZE       4         /* max seg size option length      */
+#define TCP_MSS_BACKOFF      80        /* in the case of VSNP type packets */
+
+
+/* TCP Maximum Segment Size Option */
+
+struct tcp_mssopt
+  {
+    kal_uint8  type;                      /* TCPOPT_MAXSEG                   */
+    kal_uint8  len;                       /* TCP_MSSOPTSIZE                  */
+    kal_uint16 mss;                       /* maximum segment size            */
+  };
+
+#define TCPOPT_TYPE          0         /* option type field offset        */
+#define TCPOPT_LEN           1         /* option length field offset      */
+#define TCPOPT_MSS           2         /* option mss field offset         */
+
+
+/* TCP Option Types */
+
+#define TCPOPT_EOL           0         /* end-of-list option              */
+#define TCPOPT_NOP           1         /* no-operation option (padding)   */
+#define TCPOPT_MAXSEG        2         /* maximum segment size option     */
+
+
+/* TCP Protocol States */
+
+#define TCPS_CLOSED          0         /* closed                          */
+#define TCPS_LISTEN          1         /* passive: listening for SYN      */
+#define TCPS_SYNSENT         2         /* active: have sent SYN           */
+#define TCPS_SYNRCVD         3         /* have sent and received SYN      */
+#define TCPS_ESTABLISHED     4         /* established                     */
+#define TCPS_CLOSEWAIT       5         /* rcvd FIN, awaiting user close   */
+#define TCPS_FINWAIT1        6         /* user closed, sent FIN           */
+#define TCPS_CLOSING         7         /* closed xchd FIN; await FIN ACK  */
+#define TCPS_LASTACK         8         /* had FIN and close await FIN ACK */
+#define TCPS_FINWAIT2        9         /* have closed, FIN is acked       */
+#define TCPS_TIMEWAIT        10        /* in 2*MSL quiet wait after close */
+
+#define TCP_NSTATES          11
+
+/*set for trace, copy from TCP Protocol States above*/
+enum TraceTcpStates
+{
+   TCP_CLOSED,
+   TCP_LISTEN,
+   TCP_SYNSENT,
+   TCP_SYNRCVD,
+   TCP_ESTABLISHED,
+   TCP_CLOSEWAIT,
+   TCP_FINWAIT1,
+   TCP_CLOSING,
+   TCP_LASTACK,
+   TCP_FINWAIT2,
+   TCP_TIMEWAIT,
+   TCP_STATE_NUM
+};
+
+#define TCP_HAVERCVDSYN(s)   ((s) >= TCPS_SYNRCVD)
+#define TCP_HAVERCVDFIN(s)   ((s) >= TCPS_TIMEWAIT)
+#define TCP_HAVESENTSYN(s)   ((s) >= TCPS_SYNSENT)
+#define TCP_HAVESENTFIN(s)   ((s) >= TCPS_FINWAIT1)
+
+
+/* TCP Sequence Number Ordinality Macros. Note that if two sequence numbers
+   differ by more than half the sequence space, then their ordinality is
+   reversed and wraparound is assumed to have occurred. */
+
+#define SEQ_LT(a,b)          ( (kal_int32)((a)-(b)) <  0 )
+#define SEQ_LE(a,b)          ( (kal_int32)((a)-(b)) <= 0 )
+#define SEQ_GT(a,b)          ( (kal_int32)((a)-(b)) >  0 )
+#define SEQ_GE(a,b)          ( (kal_int32)((a)-(b)) >= 0 )
+
+
+/* TCP Send and Receive Sequence Number Initialization Macros */
+
+#define TCP_RECVSEQINIT(tp) \
+(tp)->rcv_adv = (tp)->rcv_nxt = (tp)->rcv_irs + 1
+
+#define TCP_SENDSEQINIT(tp) \
+(tp)->snd_una = (tp)->snd_nxt = (tp)->snd_max = (tp)->snd_iss
+
+#define TCP_PUSHURGINIT(tp) \
+(tp)->snd_psh = (tp)->snd_urg = (tp)->snd_una-1
+
+
+/* TCP Set Time Value Within a Defined Range Macro */
+
+#define TCPT_RANGESET( tv, value, tvmin, tvmax ) \
+ {                           \
+   (tv) = (value);           \
+   if( (tv) < (tvmin) )      \
+     (tv) = (tvmin);         \
+   else if( (tv) > (tvmax) ) \
+    (tv) = (tvmax);          \
+  }
+
+
+/* TCP Initial Sequence Number Assignment Increment. RFC793 suggests that
+   the TCP connection snd_iss should be assigned from a counter that is
+   incremented by 1 every 4 usecs. Then TCP_ISSINCR =
+
+          1    (incr)          1    (secs)          10^6     (incr)
+   ------------------ x ------------------  =  --------------------
+   4 x 10^(-6) (secs)   IP_CLOCKHZ (ticks)    4 x IP_CLOCKHZ (tick)
+
+   For an IP clock tick of 250 msecs (i.e. IP_CLOCKHZ = 4 ticks/sec)
+   TCP_ISSINCR = 1/16 x 10^6 = 62500 incr/tick. */
+
+#define TCP_ISSINCR (62500UL)           /* tcp_iss increment on each tick  */
+
+
+/* Round-Trip Time and Variance Scaling Factors. The smoothed round-trip
+   time and estimated variance are stored in the tcb as fixed point
+   values scaled-up by the multipliers below. */
+
+#define TCP_RTT_SCALE        8         /* multiplier for SRTT             */
+#define TCP_RTT_SHIFT        3         /* log2 of SRTT multiplier         */
+#define TCP_RTTVAR_SCALE     4         /* multiplier for RTTVAR           */
+#define TCP_RTTVAR_SHIFT     2         /* log2 of RTTVAR multiplier       */
+
+#define REAL_RTTUNIT         1000000UL /* route cache rtt values recorded */
+                                       /* in units of microseconds        */
+
+/* TCP Retransmit Timeout Macro */
+
+#define TCP_REXMTVAL(tp)     ((((kal_int32)(tp)->t_srtt)>>TCP_RTT_SHIFT)+((kal_int32)(tp)->t_rttvar))
+
+#endif /* _TCP_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/TCP_OFST.H b/mcu/interface/protocol/l2_c2k/common/TCP_OFST.H
new file mode 100644
index 0000000..a279622
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/TCP_OFST.H
@@ -0,0 +1,38 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: TCP_Ofst.h 
+ * 
+ * Purpose: Defines module id offsets to add with token value 
+ *          to create contiguous tokens. 
+ * 
+ ***************************************************************/
+
+
+kal_uint16 TokenOffsetsTcpip[16] = 
+{                                                                
+  0,
+  6,
+  6,
+  6,
+  6,
+  6,
+  6,
+  6,
+  6,
+  6,
+  6,
+  9,
+  12,
+  12,
+  13,
+  14
+};
diff --git a/mcu/interface/protocol/l2_c2k/common/UDP_HEAD.H b/mcu/interface/protocol/l2_c2k/common/UDP_HEAD.H
new file mode 100644
index 0000000..2476f67
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/UDP_HEAD.H
@@ -0,0 +1,100 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: udp_head.h
+ * Project:   TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   Based on PVCS Rev 1.1   (15 Apr 1998)
+ *
+ * Description:  User Datagram Protocol Definitions
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.  
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: UDP_HEAD.H $
+ *
+ * 07 04 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - hlp
+ * Revision 1.2  2004/03/24 16:41:45  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1  2003/05/12 15:24:26  fpeng
+ * Initial revision
+ * Revision 1.2  2002/06/06 11:44:22  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1  2001/04/26 11:42:31  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 14:58:11  hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a 
+ * duplicated version of 1.1
+ * Revision 1.1  1999/11/30 23:02:44Z  cdma
+ * Initial revision
+ * Revision 1.5  1999/07/01 16:45:57  hhong
+ * Incorporate new protocol engine.
+ * Revision 1.1  1998/06/10 15:32:21  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _UDP_HEAD_H_
+#define _UDP_HEAD_H_ 1
+
+#ifdef WeDoUDP
+/* UDP Header */
+struct udp_header
+{
+  kal_uint16 src;                       /* UDP source port number          */
+  kal_uint16 dst;                       /* UDP destination port number     */
+  kal_uint16 len;                       /* UDP header + data length        */
+  kal_uint16 chk;                       /* UDP header + data checksum      */
+};
+
+
+/* UDP/IP Header */
+struct udpip_header
+{
+  struct ip_header   ip;             /* IP header without options       */
+  struct udp_header  udp;            /* UDP header without options      */
+};
+
+
+/* UDP Constant Sizes */
+#define UDP_HEADERSIZE       8         /* UDP header size                 */
+#define UDPIP_HEADERSIZE     28        /* IP header + UDP header size     */
+
+#endif /* WeDoUDP */
+
+#endif /* _UDP_HEADER_H_ */
+
+
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/USER_API.H b/mcu/interface/protocol/l2_c2k/common/USER_API.H
new file mode 100644
index 0000000..2d086f5
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/USER_API.H
@@ -0,0 +1,432 @@
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: user_api.h
+ * Project:   TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:   Based on PVCS Rev 1.0   (15 Apr 1998)
+ *
+ * Description: Prototypes/Structure definitions for requests
+ *              coming from Higher Level Applications
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041   Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: USER_API.H $
+ *
+ * 07 04 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - hlp
+ *
+ * 04 21 2017 adel.liao
+ * [MOLY00240756] [6293][C2K][HLP]remove unused code.
+ * 	
+ * 	remove MTK_DEV_BUG_FIX_HLP.
+ *
+ * 11 09 2016 sue.zhong
+ * [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+ * Update C2K PS code (1/2)
+ * Revision 1.2  2004/03/24 16:41:45  fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.2  2004/02/10 11:31:27  cmastro
+ * merge with 4.0 8.050.0
+ * Revision 1.4  2004/01/21 10:48:08  hhong
+ * Added mechanism to support PPP open only and multi-sockets operations.
+ * Revision 1.3  2002/06/06 11:44:23  hhong
+ * Added VIA Copyright Labels
+ * Revision 1.2  2002/03/19 16:03:00  hhong
+ * Added 7074cust.h in the included file list.
+ * Added compiler flag SYS_OPTION_DATA_RAM_INUSE to guard against #define WeDoPacketMode.
+ * Revision 1.1  2001/04/26 11:42:31  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 15:06:55  hhong
+ * Moving up to Rev 1.3 by checking out 1.1.2.1 and locking 1.2.
+ * It's a duplicate version of 1.1.2.1
+ * Revision 1.1.4.1  2000/08/24 00:58:20Z  hhong
+ * To update to engine release 1.6.0.1
+ * Revision 1.11  2000/03/04 01:28:25  pjiang
+ * remove Interface_Busy define
+ *
+ * Revision 1.10  1999/08/09 22:15:14  pjiang
+ * remove definition of Structure Pending_Data
+ *
+ * Revision 1.9  1999/07/23 21:01:07  pjiang
+ * remove UDP_Send_Rqst and UDP_Recv_Rqst
+ *
+ * Revision 1.8  1999/04/26 18:08:18  pjiang
+ * added TCP_Hiccup_Rqst( kal_uint8 sap )
+ *
+ * Revision 1.7  1999/04/19 22:44:52  bcassidy
+ * 1. Move use_rlp_flag to 7074api2.c
+ *
+ * Revision 1.6  1999/03/16 00:41:42  pjiang
+ * added kal_bool use_rlp_flag
+ *
+ * Revision 1.5  1999/02/09 01:18:06  pjiang
+ * added struct Interface_Busy and Pending_Data and enum _BrowserStatus
+ *
+ * Revision 1.4  1998/10/07 20:32:56  sharker
+ * Changed frame re-transmit number from constant to variable which can be set
+ * via IP_SetOpt_Rqst.  New variable is maxrxtshift.
+ *
+ * Revision 1.3  1998/08/10 18:10:32  sharker
+ * Changed kal_uint8 to kal_uint8.
+ *
+ * Revision 1.2  1998/07/31 19:26:33  sharker
+ * Fixed C++ name mangling.
+ *
+ * Revision 1.1  1998/06/10 15:32:21  sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _USER_API_H_
+#define _USER_API_H_ 1
+
+#include "IP_CUSTM.H"
+#include "7074CUST.H"
+/* ------------- API #defines ----------------------------------------------*/
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define WeDoPacketMode 1
+#endif
+/* Return values for the API calls */
+
+#define IE_CLOSEPENDINGWAIT   6        /* TCP close by peers, wait for user */
+#define IE_CLOSEPENDING       5        /* TCP graceful close in progress  */
+#define IE_RECVMOREDATA       4        /* more UDP or raw IP data         */
+#define IE_NODATA             3        /* no data available for receive   */
+#define IE_CONNECTPENDING     2        /* TCP connect attempt in progress */
+#define IE_LISTENPENDING      1        /* listening for remote connect    */
+#define IE_SUCCESS            0        /* request successful              */
+#define IE_INVALIDRQST       -1        /* invalid or unknown request      */
+#define IE_INVALIDSAP        -2        /* invalid service access point    */
+#define IE_INVALIDPORT       -4        /* invalid listen or connect port  */
+#define IE_INVALIDADDR       -5        /* invalid connect host address    */
+#define IE_NOMOREMBUFS       -6        /* no mbufs available              */
+#define IE_NOMORETCBS        -7        /* no tcbs available               */
+#define IE_NOLOCALADDR       -8        /* local host address not set      */
+#define IE_INVALIDSIZE       -9        /* invalid send or receive size    */
+#define IE_INVALIDDATA       -10       /* invalid request field           */
+#define IE_INVALIDOPT        -11       /* option incorrectly specified    */
+#define IE_INVALIDFLAGS      -12       /* invalid send/sento flags        */
+#define IE_INVALIDSTATE      -13       /* invalid TCP state               */
+#define IE_TCPTIMEOUT        -14       /* TCP time out                    */
+#define IE_TCPRESET          -15       /* TCP reset at peers              */
+#define IE_TCPABORT          -16       /* TCP abort                       */
+#define IE_TCPDISCNTNORMAL   -17       /* TCP disconnect normal           */
+#define IE_EINVAL            -18       /* Invalid argument */
+#define IE_EADDRNOTAVAIL     -19       /* Can't assign requested address */
+#define IE_EISCONN           -20        /* Socket is already connected */
+#define IE_EAFNOSUPPORT      -21        /* Address family not supported by protocol family */
+#define IE_ETIMEDOUT         -22        /* Operation timed out */
+
+
+/* Send and Receive Flags */
+
+#define TCP_URGENT           0x01      /* TCP send/received urgent data   */
+#define TCP_PUSH             0x02      /* TCP send data immediately       */
+#define IP_MOREDATA          0x04      /* UDP, raw IP datagram incomplete */
+#define HDLC_RECEIVE         0x08      /* Return a complete HDLC packet   */
+
+
+/* Set Connection-Specific Option Request Types */
+
+#define OP_TOS               1         /* set IP type-of-service          */
+#define OP_TTL               2         /* set IP datagram time-to-live    */
+#define OP_FLAGS             3         /* set or clear binary option      */
+#define OP_RECVBUF           4         /* set receive buffer size         */
+#define OP_MAXSEG            5         /* set maximum data segment size   */
+#define OP_MAXRXTSHIFT       6         /* set maximum frame re-transmission */
+#define OP_KEEPALIVE         7
+
+/* Connection-Specific Binary Options */
+
+#define OF_NOSENDDELAY       0x01      /* always send immediately         */
+#define OF_SENDIFIDLE        0x02      /* send TCP data if conn is idle   */
+
+
+
+/* ------------- Structure Declarations ------------------------------------*/
+struct AppAddress_tag
+{
+  kal_uint32 addr;                        /* Net-endian IP address       */
+  kal_uint16 port;                        /* Net-endian application port */
+};
+
+typedef struct AppAddress_tag  AppAddress;
+
+struct BindRequest_tag
+{
+  struct AppAddress_tag source;                  /* Local application           */
+  struct AppAddress_tag  dest;                    /* Remote application          */
+};
+
+typedef struct BindRequest_tag BindRequest;
+
+
+struct ReceiveRequest_tag
+{
+  kal_uint8  *data;                       /* Pointer to receive buffer     */
+  kal_uint16 size;                        /* Length of application data    */
+  kal_uint8  flags;                       /* TCP_PUSH, TCP_URG, ???        */
+};
+
+typedef struct ReceiveRequest_tag ReceiveRequest;
+
+struct ReceiveFromRequest_tag
+{
+  struct ReceiveRequest_tag  r;
+  struct AppAddress_tag      from;
+  kal_uint16                     to_port;
+};
+
+typedef struct ReceiveFromRequest_tag ReceiveFromRequest;
+
+
+struct SendRequest_tag
+{
+  kal_uint8  *data;                       /* Pointer to application data */
+  kal_uint16 size;                        /* Length of application data  */
+  kal_uint8  flags;                       /* TCP_PSH, TCP_URG, ???       */
+};
+
+typedef struct SendRequest_tag SendRequest;
+
+struct SendToRequest_tag
+{
+  struct SendRequest_tag  s;
+  struct AppAddress_tag   to;
+  kal_uint16                  from_port;
+  kal_uint8                   sap;
+};
+
+typedef struct SendToRequest_tag SendToRequest;
+
+/* Note that the 'size' field is set on input to the maximum amount of
+   data to receive and updated on output to the actual amount of data
+   returned. */
+
+struct OptionRequest_tag
+{
+  kal_uint8 opt_type;           /* Specifies which option is being set */
+  union
+    {
+      kal_uint8  opt_tos;       /* Use with opt_type = OP_TOS     */
+      kal_uint8  opt_ttl;       /* Use with opt_type = OP_TTL     */
+      kal_uint8  opt_flags;     /* Use with opt_type = OP_FLAGS   */
+      kal_uint16 opt_recvbuf;   /* Use with opt_type = OP_RECVBUF */
+      kal_uint16 opt_maxseg;    /* Use with opt_type = OP_MAXSEG  */
+      kal_int16  opt_maxrxtshift; /* Use with opt_type = OP_MAXRXTSHIFT  */
+      kal_bool   opt_keepalive;
+    } u;
+  };
+
+typedef struct OptionRequest_tag OptionRequest;
+
+
+enum _BrowserStatus
+{
+  BrS_Success,
+  BrS_Busy,
+  BrS_Rejected,
+  BrS_Failed,
+  BrS_NoSvc,
+  BrS_DisconnectNormal,
+  BrS_ConnectionDropped,
+  BrS_Dormant,
+  BrS_Reconnected,
+  NUM_BrSs
+};
+typedef kal_uint8 BrowserStatus;
+
+
+#ifdef WeDoStats
+
+/* IP Statistics */
+
+struct ip_stats
+  {
+    kal_uint16 ips_badver;                /* bad datagram version number     */
+    kal_uint16 ips_total;                 /* total packets received          */
+    kal_uint16 ips_badsum;                /* checksum bad                    */
+    kal_uint16 ips_tooshort;              /* packet too short                */
+    kal_uint16 ips_toosmall;              /* not enough data                 */
+    kal_uint16 ips_badhlen;               /* ip header length < data size    */
+    kal_uint16 ips_badlen;                /* ip length < ip header length    */
+    kal_uint16 ips_fragments;             /* fragments received              */
+    kal_uint16 ips_fragdropped;           /* frags dropped (dups, no space)  */
+    kal_uint16 ips_fragtimeout;           /* fragments timed out             */
+    kal_uint16 ips_cantforward;           /* packets rcvd for unreach dest   */
+    kal_uint16 ips_delivered;             /* packets consumed here           */
+    kal_uint16 ips_reassembled;           /* total packets reassembled ok    */
+    kal_uint16 ips_fragmented;            /* output packets fragmented ok    */
+  };
+
+
+/* TCP Statistics */
+
+struct tcp_stats
+  {
+    kal_uint16 tcps_connattempt;          /* connections initiated            */
+    kal_uint16 tcps_accepts;              /* connections accepted             */
+    kal_uint16 tcps_connects;             /* connections established          */
+    kal_uint16 tcps_drops;                /* connections dropped              */
+    kal_uint16 tcps_conndrops;            /* embryonic connections dropped    */
+    kal_uint16 tcps_closed;               /* conn. closed (includes drops)    */
+    kal_uint16 tcps_segstimed;            /* segs where we tried to get rtt   */
+    kal_uint16 tcps_rttupdated;           /* times we succeeded               */
+    kal_uint16 tcps_delack;               /* delayed acks sent                */
+    kal_uint16 tcps_timeoutdrop;          /* conn. dropped in rxmt timeout    */
+    kal_uint16 tcps_rexmttimeo;           /* retransmit timeouts              */
+    kal_uint16 tcps_persisttimeo;         /* persist timeouts                 */
+    kal_uint16 tcps_sndtotal;             /* total packets sent               */
+    kal_uint16 tcps_sndpack;              /* data packets sent                */
+    kal_uint32 tcps_sndbyte;              /* data bytes sent                  */
+    kal_uint16 tcps_sndrexmitpack;        /* data packets retransmitted       */
+    kal_uint32 tcps_sndrexmitbyte;        /* data bytes retransmitted         */
+    kal_uint16 tcps_sndacks;              /* ack-only packets sent            */
+    kal_uint16 tcps_sndprobe;             /* window probes sent               */
+    kal_uint16 tcps_sndwinup;             /* window update-only packets sent  */
+    kal_uint16 tcps_sndctrl;              /* SYN|FIN|RST packets sent         */
+    kal_uint16 tcps_rcvtotal;             /* total packets received           */
+    kal_uint16 tcps_rcvpack;              /* packets received in sequence     */
+    kal_uint32 tcps_rcvbyte;              /* bytes received in sequence       */
+    kal_uint16 tcps_rcvbadsum;            /* packets received with chksum err */
+    kal_uint16 tcps_rcvbadoff;            /* packets received with bad offset */
+    kal_uint16 tcps_rcvshort;             /* packets received too short       */
+    kal_uint16 tcps_rcvduppack;           /* duplicate-only packets received  */
+    kal_uint16 tcps_rcvdupbyte;           /* duplicate-only bytes received    */
+    kal_uint16 tcps_rcvpartduppack;       /* packets with some duplicate data */
+    kal_uint16 tcps_rcvpartdupbyte;       /* dup. bytes in part-dup. packets  */
+    kal_uint16 tcps_rcvoopack;            /* out-of-order packets received    */
+    kal_uint32 tcps_rcvoobyte;            /* out-of-order bytes received      */
+    kal_uint16 tcps_rcvpackafterwin;      /* packets with data after window   */
+    kal_uint16 tcps_rcvbyteafterwin;      /* bytes rcvd after window          */
+    kal_uint16 tcps_rcvwinprobe;          /* rcvd window probe packets        */
+    kal_uint16 tcps_rcvdupack;            /* rcvd duplicate acks              */
+    kal_uint16 tcps_rcvacktoomuch;        /* rcvd acks for unsent data        */
+    kal_uint16 tcps_rcvackpack;           /* rcvd ack packets                 */
+    kal_uint16 tcps_rcvackbyte;           /* bytes acked by rcvd acks         */
+    kal_uint16 tcps_rcvwinupd;            /* rcvd window update packets       */
+  };
+
+
+/* UDP Statistics */
+
+struct udp_stats
+  {
+    kal_uint16 udps_ipackets;             /* total input packets             */
+    kal_uint16 udps_hdrops;               /* packet shorter than header      */
+    kal_uint16 udps_badsum;               /* checksum error                  */
+    kal_uint16 udps_badlen;               /* data length larger than packet  */
+    kal_uint16 udps_fullrecvq;            /* not delivered receive queue full*/
+    kal_uint16 udps_notcbfound;           /* input packets can't find tcb    */
+    kal_uint16 udps_opackets;             /* total output packets            */
+    kal_uint16 udps_nosum;                  /* no checksum */
+  };
+
+
+/* ICMP Statistics */
+
+struct icmp_stats
+  {
+    kal_uint16 icps_error;                /* number of calls to icmp_error   */
+    kal_uint16 icps_oldshort;             /* no error as old ip too short    */
+    kal_uint16 icps_oldicmp;              /* no error as old was icmp        */
+    kal_uint16 icps_badcode;              /* icmp_code out of range          */
+    kal_uint16 icps_tooshort;             /* packet < ICMP_MINLEN            */
+    kal_uint16 icps_checksum;             /* bad checksum                    */
+    kal_uint16 icps_reflect;              /* number of responses             */
+    kal_uint16 icps_inhist[32];           /* history count by ICMP type      */
+    kal_uint16 icps_outhist[32];          /* history count by ICMP type      */
+  };
+
+#endif
+
+/* ------------- API Prototypes --------------------------------------------*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+kal_int16 IP_Add_Address( kal_uint32 address );
+kal_int16 IP_Delete_Address( kal_uint32 address );
+kal_int16 IP_SetOpt_Rqst( kal_uint8 sap, OptionRequest *r );
+void  IP_Start( kal_uint8 *buffer_pool, kal_uint16 buffer_size );
+void  IP_Stop( void );
+void  IP_250ms_Timer_Expired(hlp_timer_enum timer_id);
+
+#ifdef  WeDoTCP
+
+kal_int16 TCP_Open_Rqst( kal_uint8 *sap );
+kal_int16 TCP_Bind_Rqst( kal_uint8 sap, BindRequest *r );
+kal_int16 TCP_Listen_Rqst( kal_uint8 sap );
+kal_int16 TCP_Connect_Rqst( kal_uint8 sap );
+kal_int16 TCP_Send_Rqst( kal_uint8 sap, SendRequest *r );
+kal_int16 TCP_Recv_Rqst( kal_uint8 sap, ReceiveRequest *r );
+kal_int16 TCP_Close_Rqst( kal_uint8 sap );
+kal_int16 TCP_Abort_Rqst( kal_uint8 sap );
+void  TCP_Send_KeepAlive_Probe( kal_uint8 sap );
+#ifdef  WeDoStats
+struct tcp_stats *TCP_Stats_Rqst( void );
+#endif /* WeDoStats */
+kal_int16 TCP_Local_Cleanup(kal_uint8 sap);
+#endif /* WeDoTCP */
+
+
+#ifdef  WeDoUDP
+
+kal_int16 UDP_Open_Rqst( kal_uint8 *sap );
+kal_int16 UDP_Bind_Rqst( kal_uint8 sap, BindRequest *r );
+kal_int16 UDP_Listen_Rqst( kal_uint8 sap );
+kal_int16 UDP_Connect_Rqst( kal_uint8 sap );
+kal_int16 UDP_SendTo_Rqst( kal_uint8 sap, SendToRequest *r );
+kal_int16 UDP_RecvFrom_Rqst( kal_uint8 sap, ReceiveFromRequest *r );
+kal_int16 UDP_Close_Rqst( kal_uint8 sap );
+kal_int16 UDP_Abort_Rqst( kal_uint8 sap );
+kal_int16 TCP_Hiccup_Rqst( kal_uint8 sap );
+
+#ifdef  WeDoStats
+struct udp_stats *UDP_Stats_Rqst( void );
+#endif /* WeDoStats */
+
+#endif /* WeDoUDP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _USER_API_H_ */
+
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/bitbash.h b/mcu/interface/protocol/l2_c2k/common/bitbash.h
new file mode 100644
index 0000000..5e7bb7d
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/bitbash.h
@@ -0,0 +1,136 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 1999-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/****************************************************************************
+ *
+ * Module:     bitbash.h
+ *
+ * Purpose:    Header File for the IS-136 Bitfield Functions.
+ *
+ ****************************************************************************
+ *
+ *                          PVCS Header Information
+ *
+ * $Workfile$
+ * $Revision: 1.2 $
+ *  $Modtime$
+ *   $Author: fpeng $
+ *
+ *      $Log: bitbash.h $
+ *
+ *      06 29 2017 sue.zhong
+ *      [MOLY00259241] [6293][C2K]Replace with KAL data type
+ *      ::KAL type - folder inc
+ *      Revision 1.2  2004/03/25 12:09:17  fpeng
+ *      Updated from 6.0 CP 2.5.0
+ *      Revision 1.1  2003/05/12 15:38:28  fpeng
+ *      Initial revision
+ *      Revision 1.2  2002/06/06 13:10:35  chinh
+ *      Changed and Added Copyright
+ *      Revision 1.1  2001/01/17 10:58:03  plabarbe
+ *      Initial revision
+ *      Revision 1.1  2000/10/24 14:11:02  fpeng
+ *      Initial revision
+ *      Revision 1.2  2000/03/01 18:05:39Z  rsattari
+ *      Isotel release 2.3 updates.
+ *      Revision 1.1  1999/11/30 23:11:42Z  cdma
+ *      Initial revision
+ *      Revision 1.18  1999/08/25 20:02:39  dstecker
+ *      Merges from patches
+ *      Revision 1.14.1.2.1.4  1999/08/23 21:42:43  dstecker
+ *      ISOTEL R2.10
+ *      Revision 1.3  1998/03/30 23:26:03  mhayduk
+ *      Release 0.03.
+ *
+ * Revision 1.1  1997/11/06  17:49:24  mhayduk
+ * Initial revision
+ *
+ * 
+ ****************************************************************************
+ ****************************************************************************/
+ 
+
+#ifndef _BITBASH_H_
+
+  #define _BITBASH_H_
+
+#include "sysdefs.h"
+
+
+#ifdef SYS_DEBUG_FAULT_FILE_INFO
+#define getByte( Data, StartBit, NumBits )\
+  	__getByte( __MODULE__, __LINE__ , Data, StartBit, NumBits )
+#define getWord( Data, StartBit, NumBits)\
+  	__getWord( __MODULE__, __LINE__, Data, StartBit, NumBits)
+#define getDword( Data, StartBit, NumBits)\
+  	__getDword( __MODULE__, __LINE__, Data, StartBit, NumBits)
+#define putByte( Data, StartBit, NumBits, Value)\
+  	__putByte( __MODULE__, __LINE__, Data, StartBit, NumBits, Value)
+#define putWord( Data, StartBit, NumBits, Value)\
+  	__putWord( __MODULE__, __LINE__, Data, StartBit, NumBits, Value)
+#define putDword( Data, StartBit, NumBits, Value)\
+  	__putDword( __MODULE__, __LINE__, Data, StartBit, NumBits, Value)
+  	
+  kal_uint8  __getByte( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+  kal_uint16  __getWord( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+  kal_uint32 __getDword( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+
+  void  __putByte( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint8 Value );
+  void  __putWord( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint16 Value );
+  void  __putDword( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint32 Value );
+
+#else
+  kal_uint8  getByte( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+  kal_uint16  getWord( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+  kal_uint32 getDword( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+
+  void  putByte( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint8 Value );
+  void  putWord( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint16 Value );
+  void  putDword( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint32 Value );
+
+#endif
+
+
+#endif  /* _BITBASH_H_ */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/cpbuf.h b/mcu/interface/protocol/l2_c2k/common/cpbuf.h
new file mode 100644
index 0000000..a4b962c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/cpbuf.h
@@ -0,0 +1,162 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef  _CPBUF_H_
+#define  _CPBUF_H_
+/*****************************************************************************
+* 
+* FILE NAME   :   cpbuf.h
+*
+* DESCRIPTION :   CP Buffer Manager 
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+#include "kal_public_api.h"
+#include "flc2_ent_functions.h"
+#include "monapi.h"
+
+
+#define CPBUF_SIZE_FWD      640 /* bytes */
+#define CPBUF_SIZE_REV      252 /* bytes */
+#define CPBUF_SIZE_SIG      100 /* bytes */
+#define CPBUF_SIZE_HDR      15  /* bytes */
+#define CPBUF_SIZE_FWD1X    48  /* bytes */
+
+#define CPBUF_ONEBUF        0xFFFF
+
+//#define CPBUF_SPIN_LOCK
+#define DEBUG_CPBUF_FILE_INFO
+
+extern kal_spinlockid cpBufSpinLock[5];
+
+
+/*----------------------------------------------------------------------------
+ CP Buf Data Struct
+----------------------------------------------------------------------------*/
+
+/* Allocation Status of each CP Buf memory buffer */
+typedef enum
+{
+   CPBUF_FREE = 0xFE, /* non-zero nor one to avoid unwanted matching of uninitialized data field. */
+   CPBUF_BUSY = 0xB0
+} CpBufStatusT;  
+
+
+/* Allocation Type of CP Buf memory buffer */
+typedef enum
+{
+   CPBUF_FWD = 0,
+   CPBUF_REV,
+   CPBUF_SIGNALING_MSG,
+   CPBUF_POOL_NUM,
+   CPBUF_HEADER = CPBUF_POOL_NUM,   /* Obsolete pool */
+   CPBUF_FWD1X                      /* Obsolete pool */
+} CpBufTypeT;
+
+typedef struct cpBuffer 
+{
+   kal_uint32*  dataPtr;   /* Ptr to the CPBUF addr in CPBUF_Pool[] */
+   kal_uint16   len;        /* Length of data in bytes.   */
+   CpBufStatusT status;     /* Free or Busy */
+   CpBufTypeT   type;       /* partition type. Need this info to Free cpbuf */
+   kal_uint32   refCount;   /* reference count of this cp buffer */
+   struct       cpBuffer *nextPtr; /* Ptr to the next cpPktHdr in this CP Pkt */
+} CpBufferT;
+
+
+/* cpBufQ - This is a generic CpBufferT type Queue Linked-List */
+typedef struct cpBufQ
+{
+   CpBufferT    *head;
+   CpBufferT    *tail;
+   kal_uint32   count;      /* Total number of CpBufferT in this linked-list */
+} CpBufQT;
+
+
+/*----------------------------------------------------------------------------
+ CP Pkt Functions
+----------------------------------------------------------------------------*/
+#ifndef DEBUG_CPBUF_FILE_INFO
+extern CpBufferT* CpBufGet(kal_uint16 size, CpBufTypeT CpBufType );
+extern void  CpBufCopy( CpBufferT *cpPktPtr );
+extern void  CpBufFree( CpBufferT *cpPktPtr );
+#else
+extern CpBufferT* __CpBufGet(const char *moduleName, unsigned lineNumber, kal_uint16 size, CpBufTypeT CpBufType );
+extern void  __CpBufCopy(const char *moduleName, unsigned lineNumber, CpBufferT *cpPktPtr );
+extern void  __CpBufFree(const char *moduleName, unsigned lineNumber, CpBufferT *cpPktPtr );
+
+#define CpBufGet(size, CpBufType)  __CpBufGet( __FUNCTION__, __LINE__, size, CpBufType)
+#define CpBufFree( cpPktPtr ) __CpBufFree( __FUNCTION__, __LINE__, cpPktPtr )
+#define CpBufCopy( cpPktPtr ) __CpBufCopy(__FUNCTION__, __LINE__, cpPktPtr )
+
+#endif
+extern kal_bool  CpBufFwdFlowCtrlOn(void);
+extern kal_bool CpBufRevFlowCtrlOn(void);
+extern CpBufferT * CpBufMerge (kal_uint16     numCpBuffers, 
+                               CpBufferT      *cpBufList[], 
+                               kal_uint16     *offsetList,
+                               kal_uint16     *lenList,
+                               kal_uint16     *mergedLen,
+                               CpBufTypeT     cpBufType);
+extern void CpBufSpinLocksCreate(void);
+extern CpBufferT * isr_get_cpbuf(kal_uint16 size, CpBufTypeT cpBufType, const char *moduleName, kal_uint16 lineNumber);
+extern void fill_isr_cpbuf_queue(kal_uint16 size, CpBufTypeT cpBufType);
+extern void fill_rcp_ri_cpbuf_queue(void);
+
+#if defined (RCP_RI_HRT_DEV)
+#define RCP_CPBUF_GET(size, cpbufType)  isr_get_cpbuf(size, cpbufType, __FUNCTION__, __LINE__)
+#else
+#define RCP_CPBUF_GET(size, cpbufType)  CpBufGet(size, cpbufType)
+#endif
+
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace.h b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace.h
new file mode 100644
index 0000000..5f83a13
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace.h
@@ -0,0 +1,281 @@
+/*******************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2016
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*******************************************************************************/
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * hlp_dhl_trace.h
+ *
+ * Project:
+ * --------
+ *  C2K
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ *
+ *==============================================================================
+ *       HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ ******************************************************************************/
+#ifndef _HLP_DHL_TRACE_H
+#define _HLP_DHL_TRACE_H
+#ifndef GEN_FOR_PC
+#include "stack_config.h"
+#endif
+#include "dhl_trace.h"
+#if !defined(GEN_FOR_PC)
+#if defined(__DHL_MODULE__) || defined(__CUSTOM_RELEASE__)
+#endif
+#endif
+#if !defined(GEN_FOR_PC)
+#include"hlp_dhl_trace_mod_chlp_utmd.h"
+#endif
+#endif /* _HLP_DHL_TRACE_H */
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json
new file mode 100644
index 0000000..76d751c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json
@@ -0,0 +1,1740 @@
+{
+  "endGen": "-", 
+  "legacyParameters": {}, 
+  "module": "MOD_CHLP", 
+  "startGen": "Legacy", 
+  "traceClassDefs": [
+    {
+      "TRACE_INFO": {
+        "debugLevel": "High", 
+        "tag": [
+          "Baseline", 
+          "TRACE_INFO"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_WARNING": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "Baseline", 
+          "TRACE_WARNING"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_ERROR": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "Baseline", 
+          "TRACE_ERROR"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_FUNC": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "TRACE_FUNC"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_STATE": {
+        "debugLevel": "Medium", 
+        "tag": [
+          "Baseline", 
+          "TRACE_STATE"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_1": {
+        "debugLevel": "Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_2": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_3": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_4": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_5": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_6": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_7": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_8": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_9": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_GROUP_10": {
+        "debugLevel": "Ultra-Low", 
+        "tag": [
+          "Baseline", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_SENSITIVE_USIR": {
+        "debugLevel": "High", 
+        "tag": [
+          "Baseline", 
+          "USIR"
+        ], 
+        "traceType": "Public"
+      }
+    }
+  ], 
+  "traceDefs": [
+    {
+      "DHL_HLP_CAM_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_STATE_TRANS]OldSt=%MCamStatesT, Ev=%MCamEventsT, NewSt=%MCamStatesT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_NSPE_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_NSPE_STATE_TRANS]NspeApp=%MNspeAppsT, OldSt=%MNspeStatesT, NewSt=%MNspeStatesT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_STATE_TRANS]OldSt=%MIMSStateEnumT, NewSt=%MIMSStateEnumT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_EHRPD_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_STATE_TRANS]PdnId=%d, OldSt=%MEHRPDVsncpStateT, NewSt=%MEHRPDVsncpStateT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_STATE_TRANS]OldSt=%MMipStatesT, NewSt=%MMipStatesT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_REREG_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_REREG_STATE_TRANS]OldSt=%MReRegStateT, NewSt=%MReRegStateT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_FSM_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_FSM_STATE_TRANS]PppPhase=%MpppFsmPhases, OldSt=%MfsmStates, NewSt=%MfsmStates", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_PHASE_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_PHASE_STATE_TRANS]OldSt=%MpppPhases, Ev=%MpEvents, NewSt=%MpppPhases", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_EAP_STATE_TRANSITION": {
+        "apiType": "index", 
+        "format": "[HLP_EAP_STATE_TRANS]OldSt=%MEapStateT, NewSt=%MEapStateT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_GENERIC_TRACE": {
+        "apiType": "index", 
+        "format": "[HLP_TRACE] (%d): %d, %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_DEBUG": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_DEBUG] %s(%d): %d, %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_ACS_STREAM_INFO": {
+        "apiType": "index", 
+        "format": "[HLP_ACS_STREAM] %s(%d): %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_INPUT_INFO": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_INPUT_INFO]%d: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_INPUT_CHECK": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_INPUT_CHECK] %d: %d, %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_1XDO_ABORT": {
+        "apiType": "index", 
+        "format": "[HLP_1XDO_ABORT] %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_ERROR_CODE_SET_DISCARD": {
+        "apiType": "index", 
+        "format": "[HLP_ERROR_CODE_SET_DISCARD]PdnId=%d, HlpErrCode=%MDataConnErrCodeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_ERROR_CODE_SET": {
+        "apiType": "index", 
+        "format": "[HLP_ERROR_CODE_SET]index=%d, PdnId=%d, HlpErrCode=%MDataConnErrCodeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_ERROR_CODE_FORCE_SET": {
+        "apiType": "index", 
+        "format": "[HLP_ERROR_CODE_FORCE_SET]index=%d, PdnId=%d, HlpErrCode=%MDataConnErrCodeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_ERROR_CODE_RESET": {
+        "apiType": "index", 
+        "format": "[HLP_ERROR_CODE_RESET]index=%d (255 indicates to reset all, otherwise, to reset the corresponding pdn error code)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_UM_RM_PPP_STATUS]interface=%MpppEndPointT, Status=%d, localAddr=%x, remoteAddr=%x, priDNS=%x, secDNS=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_THROTT_ENABLE_SET": {
+        "apiType": "index", 
+        "format": "[HLP_THROTT_ENABLE_SET]enable=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_THROTT_START": {
+        "apiType": "index", 
+        "format": "[HLP_THROTT_START]enable=%Mkal_bool, Sys=%MCamSysTypeT, timer active=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_THROTT_SYS_ID": {
+        "apiType": "index", 
+        "format": "[HLP_THROTT_SYS_ID]Sys=%MCamSysTypeT, Id=%d,%d,%d,%d,%d,%d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TIMER_START": {
+        "apiType": "index", 
+        "format": "[HLP_TIMER_START]Id=%Mhlp_timer_enum, Duration=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TIMER_STOP": {
+        "apiType": "index", 
+        "format": "[HLP_TIMER_STOP]TimerID=%Mhlp_timer_enum, InUse=%Mkal_bool, Duration=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TIMER_EXPIRED": {
+        "apiType": "index", 
+        "format": "[HLP_TIMER_EXPIRED]TimerID=%Mhlp_timer_enum, Duration=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TIMER_PENDING_SET": {
+        "apiType": "index", 
+        "format": "[HLP_TIMER_PENDING_SET]ID=%Mhlp_timer_enum, Pending=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TIMER_PENDING_GET": {
+        "apiType": "index", 
+        "format": "[HLP_TIMER_PENDING_GET]ID=%Mhlp_timer_enum, Pending=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_CALL_INSTANCE_INCREASE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_CALL_INSTANCE_INCREASE]CurCallNum=%d, CallType=%MNspeAppT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_CALL_INSTANCE_DECREASE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_CALL_INSTANCE_DECREASE]CurCallNum=%d, CallType=%MNspeAppT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_CALL_INSTANCE_RESET": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_CALL_INSTANCE_RESET]TotalCallNum=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_SYSTEM_UPDATE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_SYSTEM_UPDATE]CurSysFound=%MNetworkRspT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_SERVINGNW_UPDATE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_SERVINGNW_UPDATE]CurServingNW=%MNetworkT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_PPP_CONN_PARAMS": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_PPP_CONN_PARAMS]Cid=%d, NetworkPref=%MNetworkPrefT, AppType=%MNspeAppT, MoIpType=%d, InactivityTmr=%d, ReleaseTchwhenFB=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_CONN_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_CONN_STATUS]ConnStatus=%MConnStateT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_SYSTEM_RETRY": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_SYSTEM_RETRY]AppType=%MNspeAppT, DoRetryCount=%d, DoCloseReason=%MHlpConnCloseReasonT, RttRetryCount=%d, RttFailReason=%MCallProcessingEventT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_PSC_CPC_STATE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_PSC_CPC_STATE]CpcState=%MTraceCpcState, PscState=%MTracePscState", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_RETRY_FALLBACK_1X": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_RETRY_FALLBACK_1X]DoTo1xFallback_Enabled=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_OOSA": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_OOSA]CpState=%MCPState, VoCalRel=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_FWDQ_CLEANUP": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_FWDQ_CLEANUP]RdIndex=%d, WtIndex=%d, Bytes=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_DO_TO_1X_ENABLE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_DO_TO_1X_ENABLE]DoTo1xEnable=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_SYSTEM_QUERY_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_SYSTEM_QUERY_REQ]ConnectionCmd=%MConnCmdT, AppType=%MNspeAppT, eHRPDEnable=%d, PendingDormantReconnect=%MPendingRcnT, HlpDormancyTimerExpired=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_PPP_CLOSE_UM_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_PPP_CLOSE_UM_REQ]CurrentAppNum=%d, AppType=%MNspeAppT, NspeStateRlpApp=%d, NspeStateUartApp=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_DO_TO_1X": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_DO_TO_1X]%d,%d,%d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_WFR_FAST_EXPIRE": {
+        "apiType": "index", 
+        "format": "[DHL_HLP_CAM_WFR_FAST_EXPIRE]AppType=%MNspeAppT, cam state=%MCamStatesT, RetryCount=%d, HLP_TIMER_DO_RETRY=%Mkal_bool, ServingNetwork=%MNetworkT, CSSsysRespnse=%MNetworkRspT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_RSVAS_ABORT_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_RSVAS_ABORT_REQ]CamFsmDesc.state=%MCamStatesT, CpcState=%d, PscState=%d, TriggeredByCs=%Mkal_bool, Timer=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_SET_ROUTE_TYPE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_SET_ROUTE_TYPE] %MHlpPppRouteTypeE", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_SET_RETRY_COUNT": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_SET_RETRY_COUNT] %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_STATUS]PpphaPhase=%MPpphaPhaseT, PpphaStatus=%MPpphaStatusT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_DEC_START": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_DEC_START]PpphaPhase=%MPpphaPhaseT, ItemsToPppha=%d, BytesToPppha=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_DEC_COMPLETE": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_DEC_COMPLETE]PpphaPhase=%MPpphaPhaseT, Complete=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_QBUF_CTRL": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_QBUF_CTRL]PpphaPhase=%MPpphaPhaseT, DstSpace=%d, FlowCtrl=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_CLOCK_CTRL": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_CLOCK_CTRL]ClockCtrl=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_ADDR_INFO": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_ADDR_INFO]PpphaPhase=%MPpphaPhaseT, DecCrtAddr=%d, DEC0MaxAddr=%d, CurrentCpBufAddr=%d, addrMask=%d, ForceDstBurstLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_REG_INFO": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_REG_INFO]PpphaPhase=%MPpphaPhaseT, LLD_ADR=%d, DST_ADR=%d, TRNSCNT=%d, CNFG=%d, CNTL=%d, RES_ADR=%d, MAX_ADR=%d, CRT_ADR=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_PDN_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_PDN_STATUS]PdnId=%d, State=%MPdnStatusEnumT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_PDN_SETUP_RSP_0": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_PDN_SETUP_RSP_0]Result=%MPdnResultEnumT, PdnId=%d, ErrCode=%MDataConnErrCodeT, HlpMainPdnID=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_PDN_SETUP_RSP_1": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_PDN_SETUP_RSP_1]IMSPdnSt=%MPdnStatusEnumT, ReqType=%MIMSEventTypeT, bHandOver=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_EV_SAVE": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_EV_SAVE]PdnId=%d, EvType=%MIMSEventTypeT, TotalEv=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_EV_PROC": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_EV_PROC]PdnId=%d, EvType=%MIMSEventTypeT, TotalEv=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_EV_CLEAR": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_EV_CLEAR]TotalEv=%d, Idx=%d, EvType=%MIMSEventTypeT, Parm1=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_REQ_EV_SET": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_REQ_EV_SET]PdnId=%d, EvType=%MIMSEventTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_REL_EV_SET": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_REL_EV_SET]PdnId=%d, EvType=%MIMSEventTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_REL_ENQ": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_REL_ENQ]Num=%d, begin=%d, end=%d, srcModId=%Mmodule_type, parm=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_REL_DEQ": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_REL_DEQ]Num=%d, begin=%d, end=%d, srcModId=%Mmodule_type, parm=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_UM_PPP_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_UM_PPP_STATUS]eHRPDEnable=%Mkal_bool, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT, bMainConn=%Mkal_bool, CurPdnId=%d, Result=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_NETWK_REL_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_NETWK_REL_REQ]SrcModule=%Mmodule_type, IMSState=%MIMSStateEnumT, ReleaseType=%MIMSEventTypeT, ReqType=%MIMSEventTypeT, AlmpState=%d, HO21xFlag=%Mkal_bool, eHRPDEnable=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_EHRPD_DISC_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_EHRPD_DISC_REQ]eHRPDEnable=%Mkal_bool, IMSState=%MIMSStateEnumT, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT, bMainConn=%Mkal_bool, PdnId=%d, DiscType=%MDataDiscTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_PDN_REL_RSP_0": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_PDN_REL_RSP_0]PdnId=%d, IMSState=%MIMSStateEnumT, ReleaseType=%MIMSEventTypeT, bMainConn=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_PDN_REL_RSP_1": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_PDN_REL_RSP_1]PdnId=%d, CurPdn ReleaseType=%MIMSEventTypeT, ReqType=%MIMSEventTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_SET_ST_TO_IDLE": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_SET_ST_TO_IDLE] TotalPdn=%d, Idx=%d, PdnId=%d, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_RESET_EHRPD": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_RESET_EHRPD] bMainConn=%Mkal_bool, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT, TotalPdn=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_RELEASE_ALL_PDN": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_RELEASE_ALL_PDN] IMSState=%MIMSStateEnumT, TotalPdn=%d, emergency_card=%Mkal_bool", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_RELEASE_PDN": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_RELEASE_PDN] PdnId=%d, IMSPdnSt=%MPdnStatusEnumT, EHRPDPdnSt=%MEHRPDVsncpStateT, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_PDN_LOCAL_RESET": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_PDN_LOCAL_RESET]IMSState=%MIMSStateEnumT, bMainConn=%Mkal_bool, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "DHL_HLP_IMS_AUX_PDN_REL_IND": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_AUX_PDN_REL_IND]PdnId=%d, IMSState=%MIMSStateEnumT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EHRPD_CHECK_REC": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_CHECK_REC]PrebPdn=%Mkal_bool, PrePdnId=%d, CurPdnId=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EHRPD_ENABLE": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_ENABLE]eHRPDenable=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EHRPD_TERM_BY_NW": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_TERM_BY_NW]TermByNW=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_SET_HO_EHRPD_ENABLE": {
+        "apiType": "index", 
+        "format": "[HLP_SET_HO_EHRPD_ENABLE]bHOEHRPDEnabled=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EHRPD_RECV_REJ": {
+        "apiType": "index", 
+        "format": "[DHL_HLP_EHRPD_RECV_REJ]ErrorCode=%MDataConnErrCodeT state=%MEHRPDVsncpStateT AttachType=%d FieldNum=%d VSNCPReqRetxNum=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EHRPD_UPLANE_DETECT": {
+        "apiType": "index", 
+        "format": "[DHL_HLP_EHRPD_UPLANE_DETECT]%d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_TCP_DECOMPRESS_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_TCP_DECOMPRESS_STATUS]DeCompressStatus=%MTraceDeCompressStatusT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_SEND_DISCARD": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_SEND_DISCARD]PppPort=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_RECV_DISCARD": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_RECV_DISCARD]PppPort=%d, reason=%MDR_REASONT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_RENEGO": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_RENEGO]PppRenego=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_FWD_PKT": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_FWD_PKT]RLPFlowId=%d, RlpPath=%MHlpRlpDataPathT, DataLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_DISC_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_DISC_REQ] AppType=%MNspeAppT, eHRPDEnable=%Mkal_bool, CamSt=%MCamStatesT, _EmergencyCardInit=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IGNORE_EVDO_PAGING": {
+        "apiType": "index", 
+        "format": "'[HLP_IGNORE_EVDO_PAGING] ConnectionCmd=%MConnCmdT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_TO_IDLE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_TO_IDLE]AppType=%MNspeAppT, MipFallbcakSip=%Mkal_bool, DataRetryFallBackTo1X=%Mkal_bool, DataRetryTimer=%Mkal_bool, pendingRedialForA12Failure=%Mkal_bool, SbpQuery=%Mkal_bool, MipCheckRrpAdminProhibRetry=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CAM_CONNECTION_OPEN_REQ": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_CONNECTION_OPEN_REQ]CSSsysRespnse=%MNetworkRspT, ServingNetwork=%MNetworkT, CamState=%MFSMState, DataRetryFallBackTo1X=%Mkal_bool, DoReconnectwithDRSZero=%Mkal_bool, ToRespReleaseStateToVAL=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_CHAP_METHOD": {
+        "apiType": "index", 
+        "format": "[HLP_CHAP_METHOD]NspeApp=%MNspeAppsT, AuthInUim=%Mkal_bool, AuthInMD5=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EAP_VAR": {
+        "apiType": "index", 
+        "format": "[HLP_EAP_VAR]EapBoolVar=%MEapOwnerBoolVarT, value=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_EAP_UIM_FAILURE": {
+        "apiType": "index", 
+        "format": "[HLP_EAP_UIM_FAILURE]AuthResult=%MEapAkaAuthResultT, UimRspSw=%#x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_MODE_SET": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_MODE_SET]MipPreferMode=%MIPServiceTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_MODE_GET": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_MODE_GET]MipPreferMode=%MIPServiceTypeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_RRP_ERR": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_RRP_ERR]PriHA=%#x, SecHA=%#x, LastHA=%#x, Retries=%d, MaxRetries=%d, LastErr=%d, CurErr=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_RRP_TO": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_RRP_TO]Retries=%d, MaxRetries=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_RRP_LIFETM": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_RRP_LIFETM]RrpLifetime=%d, RRA=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_FALLBACK_ACT": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_FALLBACK_ACT]MipFallbackSipActive=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_RRA_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_RRA_SET]RRA=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_REG_RETRIES_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_REG_RETRIES_SET]MaxRegRetries=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_REG_TIMER_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_REG_TIMER_SET]RrpTimeOut=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_DEREG_RETRIES_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_DEREG_RETRIES_SET]MaxDeRegRetries=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_NAI_ENABLE_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_NAI_ENABLE_SET]NaiEnabled=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_REREG_ONLYIF_TRAFFIC_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_REREG_ONLYIF_TRAFFIC_SET]ReRegOnlyIfTraffic=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_REV_TUNNELING_SET": {
+        "apiType": "index", 
+        "format": "[HLP_HLP_MIP_REV_TUNNELING_SET]RevTunneling=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_HA_IP_SET": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_HA_IP_SET]PriHA=%#x, SecHA=%#x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DBM_IMSI_GET": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_IMSI_GET]mcc=%#x, imsi_11_12=%#x, imsi_s2=%#x, imsi_s1=%#x, bNeedUpdate=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DBM_IMSI_GET_RESULT": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_IMSI_GET]bNeedUpdate=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_REV_READ": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_REV_READ]RdLen=%d, RestLen=%d, RestItems=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_FWD_WRITE": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_FWD_WRITE]WtLen=%d, RestSpace=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_FWD_QUEUE_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_FWD_QUEUE_STATUS]RdIndex=%d, WtIndex=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_APPEND": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_APPEND]dir=%MHlpDataDirEnum, pdn_id=%d, new_head=%x, new_tail=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_REMOVE": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_REMOVE]dir=%MHlpDataDirEnum, in_list=%Mkal_bool, is_not_empty=%Mkal_bool, remove_node=%x, list_head=%x, list_tail=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_IS_NODE_IN_LIST": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_IS_NODE_IN_LIST]dir=%MHlpDataDirEnum, in_list=%Mkal_bool, node=%x, list_head=%x, list_tail=%x, prev=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_GET_HEAD_DATA": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_GET_HEAD_DATA]dir=%MHlpDataDirEnum, is_not_empty=%Mkal_bool, data_ptr=%x, data_len=%d, pdn_id=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_PPP_FRAME_INFO": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_PPP_FRAME_INFO]dir=%MHlpDataDirEnum, interface=%MpppEndPointT, len=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_CLEAR_LIST": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_CLEAR_LIST]dir=%MHlpDataDirEnum, pdn_id=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_IS_EMTPY": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_IS_EMTPY]dir=%MHlpDataDirEnum, empty=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_INDEX_UL_1": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_REV_DATA_INDEX_1]%s, HlpRevDataEnc1SrcRdIndex=%d, HlpRevDataEnc1SrcWrIndex=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_INDEX_UL_2": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_REV_DATA_INDEX_2]%s, HlpRevToRlpRdIndex=%d, HlpRevToRlpWrIndex=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_INDEX_DL": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_FWD_DATA_INDEX]%s, HlpFwdDataIndRdIndex=%d, HlpFwdDataIndWrIndex=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_DL_BUF_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_DL_BUF_STATUS]DL data ind on buffering=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_DATA_LIST_DL_FIND": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_DL_FIND]pdn_id=%d, dl_queue_id=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_REV_PATH_SET": {
+        "apiType": "index", 
+        "format": "[HLP_RM_REV_PATH_SET]path=%MRevDataPathT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_READ": {
+        "apiType": "index", 
+        "format": "[HLP_RM_READ]QType=%MQFwdRevT, QReadIndex=%d, QWriteIndex=%d, QReadingByte=%d, QRestItemNum=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_WRITE": {
+        "apiType": "index", 
+        "format": "[HLP_RM_WRITE]QType=%MQFwdRevT, QReadIndex=%d, QWriteIndex=%d, QWritingByte=%d, QFreeSpace=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_RESETQ": {
+        "apiType": "index", 
+        "format": "[HLP_RM_RESETQ]QType=%MQFwdRevT, QReadIndex=%d, QWriteIndex=%d, QTotalByte=%d, QRestItemNum=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_SEND": {
+        "apiType": "index", 
+        "format": "[HLP_RM_SEND]DclSt=%MDCL_STATUS_T, TotalLen=%d, SentLen=%d, RestLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_RECV": {
+        "apiType": "index", 
+        "format": "[HLP_RM_RECV]DclSt=%MDCL_STATUS_T, BufLen=%d, RecvLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_FLOW_CTRL_STATUS_SET": {
+        "apiType": "index", 
+        "format": "[HLP_RM_FLOW_CTRL_STATUS_SET]HlpRmFlowCtrlOn=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_FLOW_CTRL_STATUS_GET": {
+        "apiType": "index", 
+        "format": "[HLP_RM_FLOW_CTRL_STATUS_GET]HlpRmFlowCtrlOn=%Mkal_bool", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_CAM_UM_STATE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_WARNING_UM_STATE]RlpAppState=%MNspeStatesT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_CAM_RM_STATE": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_WARNING_RM_STATE]UartAppState=%MNspeStatesT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_CAM_EVENT": {
+        "apiType": "index", 
+        "format": "[HLP_CAM_WARNING_EVENT]FsmEvent=%MCamEventsT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TCP_TCB_NULL": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_WARNING_TCB_NULL](%s,%d)sap=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TCP_INVALID_OPT": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_WARNING_INVALID_OPT]opt_type=%d, size=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TCP_INVALID_SCB": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_WARNING_INVALID_SCB](%s,%d)sap=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TCP_MBUF_CHAIN": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_WARNING_MBUF_CHAIN]size=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TCP_MBUF_GET": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_WARNING_MBUF_CHAIN]FreeCnt=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TCP_ERR_LEN": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_WARNING_ERR_LEN]%d, %d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_IP4_MTU": {
+        "apiType": "index", 
+        "format": "[HLP_IP4_WARNING_MTU]%d, %x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR": {
+        "apiType": "index", 
+        "format": "[HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR]mip=%Mkal_bool, SrcIpAddr=%x, MSIPAddr=%x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_IP6_HOP_LIMIT": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_WARNING_HOP_LIMIT]hlim=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_IP6_RA": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_WARNING_RA]off=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_INVALID_STATE": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_STATE](%s,%d)MipState=%MMipStatesT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_ADV_AGENT": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_ADV_AGENT]TmpAgent=%#x, CurAgent=%#x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_ADV": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_ADV]Type=%MHlpMipAdvErrTypeT, Temp=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_RRP": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_RRP]Type=%MHlpMipRrpErrTypeT, Temp=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_RRQ_ENCODE": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_RRQ_ENCODE]DmuVersion=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_AUTH_UIM_RSP": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_AUTH_UIM_RSP](%s,%d)UimRspSw=%#x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_MIP_NAI": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_WARNING_NAI] %d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_OPTION": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_OPTION](%s,%d)Option=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_NOT_CHAP": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_NOT_CHAP]RemoteAuth=%#x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_INVALID_PORT": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_INVALID_PORT](%s,%d)Port=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_INVALID_STATE": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_INVALID_STATE](%s,%d)State=%MfsmStates", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_INVALID_TIMER": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_INVALID_TIMER](%s,%d)TimerId=%Mhlp_timer_enum", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_INVALID_BUFSIZE": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_INVALID_BUFSIZE](%s,%d)BufLen=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_UIM_MSG_BOOM": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_UIM_MSG_QUE_BOOM]QueSize=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_RM_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_RM_STATUS]NspeStatus=%MNspeStatesT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_MNRP_USE": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_MNRP_USE]MnrpUse=%Mkal_bool", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_MNRP_ERR": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_MNRP_ERR]MnrpErr=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPP_HEADER_ENC": {
+        "apiType": "index", 
+        "format": "[HLP_PPP_WARNING_HEADERENC]%MHlpPppHeaderEncWarningT, %d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_CHAP_FAIL_IN_UIM": {
+        "apiType": "index", 
+        "format": "[HLP_CHAP_WARNING_FAIL_IN_UIM]UimRspSw=%#x, len=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EAP_REQ_INVALID": {
+        "apiType": "index", 
+        "format": "[HLP_EAP_WARNING_REQ_INVALID]len=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EAP_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_EAP_WARNING_STATUS](%s,%d)", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_AKA_IDENTITY": {
+        "apiType": "index", 
+        "format": "[HLP_AKA_WARNING_IDENTITY](%d)temp=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EAP_PROCESS": {
+        "apiType": "index", 
+        "format": "[HLP_EAP_WARNING_PROCESS](%s,%d)temp=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_AUTH_MODE": {
+        "apiType": "index", 
+        "format": "[HLP_WARNING_AUTH_MODE](%s,%d)AuthMode=%d, AppType=%d, Num=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_RM_STATUS": {
+        "apiType": "index", 
+        "format": "[HLP_RM_WARNING_STATUS](%s,%d)QBuf=%MQFwdRevT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_RM_BUF_FAIL": {
+        "apiType": "index", 
+        "format": "[HLP_RM_WARNING_BUF_FAIL](%s,%d)BufStatus=%MCpBufStatusT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_RM_PORT_INIT_FAIL": {
+        "apiType": "index", 
+        "format": "[HLP_RM_WARNING_PORT_INIT_FAIL]PortStatus=%MDCL_STATUS_T", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_RM_LINE_STATUS_SEND_FAIL": {
+        "apiType": "index", 
+        "format": "[HLP_RM_WARNING_LINE_STATUS_SEND_FAIL]UART_HANDLE=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPPHA_ENC_SRCRD_INDEX": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_WARNING_ENC_SRCRD_INDEX]PpphaPhase=%MPpphaPhaseT, wrindex=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_PPPHA_DEC_LEN": {
+        "apiType": "index", 
+        "format": "[HLP_PPPHA_WARNING_DEC_LEN]PpphaPhase=%MPpphaPhaseT, FirstHalfLen=%d, TotalLen=%d, WrapBufLen=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_IMS_ERR_TYPE": {
+        "apiType": "index", 
+        "format": "[HLP_IMS_WARNING_ERR_TYPE](%s,%d)ErrType=%MIMSErrEnumT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EHRPD_INVALID_OPT": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_WARNING_INVALID_OPT]opt_type=%MEHRPDVsncpConfigOptionT, size=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EHRPD_INVALID_PCO": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_WARNING_INVALID_PCO]len=%d, ContLen=%d, DataLen=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EHRPD_REC_NULL": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_WARNING_REC_NULL]PdnID=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EHRPD_VZWPCO_ERR": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_WARNING_VZWPCO]index=%d, %d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_EAPN_ERR": {
+        "apiType": "index", 
+        "format": "[HLP_EHRPD_WARNING_VZWPCO]index=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_INVALID_PROFILE": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_INVALID_PROFILE](%s,%d)ProfileId=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_3GPD_FROM_UIM": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_3GPD_FROM_UIM](%s,%d)UimRspResult=%#x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_INVALID_PARM": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_INVALID_PARM](%s,%d)ParmId=%MHlpParmOperationId", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_NVRAM_READ": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_NVRAM_READ]Err=%MHlpNvRdWtErrT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_NVRAM_WRITE": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_NVRAM_WRITE]Err=%MHlpNvRdWtErrT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_NVRAM_SET": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_NVRAM_WRITE]Err=%MHlpNvRdWtErrT", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DBM_NAI_FROM_MDN": {
+        "apiType": "index", 
+        "format": "[HLP_DBM_WARNING_NAI_FROM_MDN](HlpNAIDerivationFromMDN(),%d)", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_PACKET_TOO_BIG": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_WARNING_PACKET_TOO_BIG]PktSize=%d, Mru=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_BUF_ERR_DL": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_WARNING_BUF_ERR_DL]PdnId=%d, addr=%x, len=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_BUF_ERR_UL": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_WARNING_BUF_ERR_UL]head=%x, tail=%x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_BUF_ERR_UL_HWM_REACHED": {
+        "apiType": "index", 
+        "format": "[HLP_WARNING_DATA_BUF_ERR_UL_HWM_REACHED]%s", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_CONDITION_NOT_READY": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_WARNING_CONDITION_NOT_READY]route_type=%MHlpPppRouteTypeE, nspe_um_state=%d, pdn_active=%Mkal_bool, ul_disc_flag_for_fc=%Mkal_bool", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_SEND_SHUT": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_WARNING_SEND_SHUT](%s,%d)", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_LIST_NODE_DISMATCH": {
+        "apiType": "index", 
+        "format": "[HLP_WARNING_DATA_LIST_NODE_DISMATCH]ha_cal_peer=%x, list_head=%x", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_LIST_APPEND_FAIL": {
+        "apiType": "index", 
+        "format": "[HLP_DATA_LIST_APPEND_FAIL]DL queue array full, pdn_id=%d, only upto %d PDN supported", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_DATA_RATDM_EXT_MSG_QUEUE_ALMOST_FULL": {
+        "apiType": "index", 
+        "format": "[HLP_WARNING_DATA_RATDM_EXT_MSG_QUEUE_ALMOST_FULL]ratdm external msg queue capacity=%d, now used=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_IT": {
+        "apiType": "index", 
+        "format": "[HLP_IT_WARNING]%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_QOS_ERR": {
+        "apiType": "index", 
+        "format": "[HLP_QOS_WARNING](%s,%d) %MQOMErrCodeT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_WARNING_TIMER_PENDING": {
+        "apiType": "index", 
+        "format": "[HLP_WARNING_TIMER_PENDING]Id=%Mhlp_timer_enum", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "DHL_HLP_PPP_CHAP_RSP_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_PPP_CHAP_RSP]", 
+        "traceClass": "TRACE_GROUP_1"
+      }
+    }, 
+    {
+      "DHL_HLP_EAP_AKA_IDENTITY": {
+        "apiType": "raw", 
+        "format": "[HLP_EAP_AKA_IDENTITY]", 
+        "traceClass": "TRACE_GROUP_1"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_MN_NAI_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_MIP_MN_NAI]", 
+        "traceClass": "TRACE_GROUP_1"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_MN_DUN_NAI_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_MIP_MN_DUN_NAI]", 
+        "traceClass": "TRACE_GROUP_1"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_DEC0_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_PPPHA_DEC0]", 
+        "traceClass": "TRACE_GROUP_2"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_DEC1_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_PPPHA_DEC1]", 
+        "traceClass": "TRACE_GROUP_2"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_ENC0_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_PPPHA_ENC0]", 
+        "traceClass": "TRACE_GROUP_2"
+      }
+    }, 
+    {
+      "DHL_HLP_PPPHA_ENC1_RAW": {
+        "apiType": "raw", 
+        "format": "[HLP_PPPHA_ENC1]", 
+        "traceClass": "TRACE_GROUP_2"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_REV_PPP_FRAME": {
+        "apiType": "raw", 
+        "format": "[HLP_RM_REV_PPP_FRAME]", 
+        "traceClass": "TRACE_GROUP_3"
+      }
+    }, 
+    {
+      "DHL_HLP_RM_FWD_PPP_FRAME": {
+        "apiType": "raw", 
+        "format": "[HLP_RM_FWD_PPP_FRAME]", 
+        "traceClass": "TRACE_GROUP_3"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_OUTPUT": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_OUTPUT]sendcnt=%d, win=%d, intransit=%d, len=%d, flag=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_INPUT": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_INPUT]ctl=%d, wnd=%d, seq=%d, ack=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_INPUT_CHKSUM": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_INPUT_CHKSUM]RecvChkSum=%#x, LocalChkSum=%#x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_STATE": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_STATE]St=%MTraceTcpStates", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_SAP": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_SAP]sap=%d", 
+        "traceClass": "TRACE_GROUP_5"
+      }
+    }, 
+    {
+      "DHL_HLP_TCP_SOCKET": {
+        "apiType": "index", 
+        "format": "[HLP_TCP_SOCKET]SocketNum=%d, address=%#x, Port=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DHL_HLP_IP6_SEND_DATA": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_SEND_DATA]RLPFlowId=%d, PdnId=%d, RlpPath=%MHlpRlpDataPathT, DataLen=%d", 
+        "traceClass": "TRACE_GROUP_6"
+      }
+    }, 
+    {
+      "DHL_HLP_IP6_TCP_OUTPUT": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_TCP_OUTPUT]%d: %d %d", 
+        "traceClass": "TRACE_GROUP_6"
+      }
+    }, 
+    {
+      "DHL_HLP_IP6_TCP_INPUT": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_TCP_INPUT]%d: %d, %d", 
+        "traceClass": "TRACE_GROUP_6"
+      }
+    }, 
+    {
+      "DHL_HLP_IP6_INPUT": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_INPUT]%d: %d %d", 
+        "traceClass": "TRACE_GROUP_6"
+      }
+    }, 
+    {
+      "DHL_HLP_IP6_OUTPUT": {
+        "apiType": "index", 
+        "format": "[HLP_IP6_OUTPUT]%d: %d %d", 
+        "traceClass": "TRACE_GROUP_6"
+      }
+    }, 
+    {
+      "DHL_HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR_USIR": {
+        "apiType": "index", 
+        "format": "[HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR]mip=%Mkal_bool, SrcIpAddr=%S, MSIPAddr=%S", 
+        "traceClass": "TRACE_SENSITIVE_USIR"
+      }
+    }, 
+    {
+      "DHL_HLP_MIP_RRP_ERR_USIR": {
+        "apiType": "index", 
+        "format": "[HLP_MIP_RRP_ERR]PriHA=%S, SecHA=%S, LastHA=%S, Retries=%d, MaxRetries=%d, LastErr=%d, CurErr=%d", 
+        "traceClass": "TRACE_SENSITIVE_USIR"
+      }
+    }
+  ], 
+  "traceFamily": "PS", 
+  "userModule": ""
+}
\ No newline at end of file
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_msg_struct.h b/mcu/interface/protocol/l2_c2k/common/hlp_msg_struct.h
new file mode 100644
index 0000000..e0d06e9
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_msg_struct.h
@@ -0,0 +1,1061 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   hlp_msg_struct.h
+ *
+ * Description:
+ * ------------
+ *   This file defines the ILM structures for HLP task.
+ *
+ *
+ ****************************************************************************/
+
+#ifndef _HLP_MSG_STRUCT_H
+#define _HLP_MSG_STRUCT_H
+
+#include "hlpapi.h"
+#include "valdbmapi.h"
+#include "do_Qos.h"
+#include "hlpdef.h"
+#include "hlpmip.h"
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_fwd_data_ind_signal_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_rev_data_ind_signal_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_ppp_ha_dec0_complete_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_ppp_ha_enc0_complete_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_ppp_ha_dec1_complete_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_ppp_ha_enc1_complete_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_rev_data_dorm_signal_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_fwd_pkt_data_ind_signal_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_rlp_idle_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_rlp_rev_data_rsp_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_rlp_open_failed_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_ppp_release_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_answer_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_dormant_reconnect_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_voice_call_release_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_otapa_update_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_color_code_change_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_1x_mt_conn_in_null_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_almp_conn_opened_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_xoff_resp_rcvd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_acstrm_xon_resp_rcvd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_do_inactivity_expr_msg_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ValGenericSetParmMsgT msg;
+} hlp_parm_set_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ValGenericGetParmMsgT msg;
+} hlp_parm_get_msg_struct;
+
+/* MSG_ID_HLP_DBM_GET_ESN_MEID_RSP_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ValDbmApiGetParmRspMsgT msg;
+} hlp_dbm_get_esn_meid_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_psws_dmu_keygen_rsp_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} hlp_psws_dmu_keyenc_rsp_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    HlpConnectionIndMsgT msg;
+} hlp_connection_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ValRevTxReqMsgT msg;
+} hlp_rev_data_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppConnectReqMsgT msg;
+} hlp_ppp_connect_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppStatusMsgT msg;
+} hlp_ppp_status_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpTimerExpiredMsgT msg;
+} hlp_timer_expired_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSystemQueryRspMsgT msg;
+} hlp_sytem_query_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpConnectionReleasedIndMsgT msg;
+} hlp_connection_released_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpConnectionFailedIndMsgT msg;
+} hlp_connection_failed_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpOosaIndMsgT msg;
+} hlp_oosa_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_dormant_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   AppSubTypeT sub_type;
+} hlp_um_ppp_renegotiation_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPowerReqMsgT msg;
+} hlp_power_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpUmAppInstanceMsgT msg;
+} hlp_um_app_instance_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketCreateMsgT msg;
+} hlp_socket_create_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketBindMsgT msg;
+} hlp_socket_bind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketConnectMsgT msg;
+} hlp_socket_connect_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketCloseMsgT msg;
+} hlp_socket_close_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketSendReqMsgT msg;
+} hlp_socket_send_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSysSelPrefSetMsgT msg;
+} hlp_sys_sel_pref_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpUpbSendDataMsgT msg;
+} hlp_upb_send_data_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpUpbRecvDataRspMsgT msg;
+} hlp_upb_recv_data_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpTcpbRecvRspMsgT msg;
+} hlp_tcpb_data_recv_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpIp6SocketConnectMsgT msg;
+} hlp_ipv6_socket_connect_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSidNidChangIndMsgT msg;
+} hlp_sid_nid_change_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPktZoneIdChangIndMsgT msg;
+} hlp_pkt_zone_id_change_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSubnetIdChangIndMsgT msg;
+} hlp_subnet_id_change_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpValPingReqMsgT msg;
+} hlp_icmp_ping_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpValUpdatePdnInactivityTimerT msg;
+} hlp_val_update_pdn_inactivity_timer_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpMipRrpMsgT msg;
+} hlp_mip_rrp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpMipAgentAdvMsgT msg;
+} hlp_mip_agent_adv_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpMipUmPppStatusMsgT msg;
+} hlp_mip_um_ppp_status_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpGetIPServiceTypeMsgT msg;
+}hlp_get_ip_service_type_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpConnStatusMsgT msg;
+} hlp_almp_conn_failed_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSvcStatusMsgT msg;
+} hlp_service_status_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpTestBrowserConnectMsgT msg;
+} hlp_test_browser_connect_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ExeRspMsgT msg;
+} hlp_ip_counters_peek_ets_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ExeRspMsgT msg;
+} hlp_pure_ack_tag_rate_get_ets_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpEtsPureAckRateMsgT msg;
+} hlp_pure_ack_tag_rate_set_ets_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ExeRspMsgT msg;
+} hlp_throttling_tmr_status_get_ets_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpValDMUVSetMsgT msg;
+} hlp_val_dmuv_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketListenMsgT msg;
+} hlp_socket_listen_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpOptionRequestMsgT msg;
+} hlp_socket_option_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketShutDownMsgT msg;
+} hlp_socket_shutdown_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSocketLingerMsgT msg;
+} hlp_socket_linger_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpValPingReqMsgT msg;
+} hlp_val_ping_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpValCtaUpdateReqMsgT msg;
+} hlp_val_cta_update_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpDmuSecureDataMsgT msg;
+} hlp_dmu_secure_data_changed_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_val_power_cycle_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPswMDNUpdatedMsgT msg;
+} hlp_psw_mdn_updated_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPswRsvasAbortReqMsgT msg;
+} hlp_psw_rsvas_abort_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_sip_chap_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_mip_mnha_auth_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_mip_rrq_hash_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_mip_mnaaa_auth_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_aka_auth_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_access_chap_resp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_opc_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_update_3gpd_opc_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_opm_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_update_3gpd_opm_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_sipcap_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_mipcap_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_sipupp_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_mipupp_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_sipsp_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_update_3gpd_sipsp_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_mipsp_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_update_3gpd_mipsp_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpd_sippapss_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_update_3gpd_sippapss_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpDormancyTimersSetMsgT msg;
+} hlp_dormancy_timers_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpDORetryTimersSetMsgT msg;
+} hlp_doretry_timers_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSetNetworkOrRelayModeMsgT msg;
+} hlp_set_network_or_relay_mode_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimNotifyMsgT msg;
+} hlp_uim_notify_register_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpUimFileChangeMsgT msg;
+} hlp_uim_file_changed_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_hrpdcap_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_3gpduppext_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_tcpcfg_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_dgc_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_mipflags_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_ipv6cap_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_usim_ust_data_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_usim_est_data_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   UimRspMsgT msg;
+} hlp_uim_get_usim_acl_data_rsp_msg_struct;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+   LOCAL_PARA_HDR
+
+   ImsAppNetwkConnReqMsgT msg;
+} ims_app_netwk_conn_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsAppConnReqMsgT msg;
+} ims_app_setup_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsAppConnRelMsgT msg;
+} ims_app_rel_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+
+} ims_app_netwk_rel_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsPppPdnConnRspMsgT msg;
+} ims_ppp_pdn_conn_set_up_rsp_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsPppPdnRelIndMsgT msg;
+} ims_ppp_pdn_conn_rel_rsp_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsPppPdnRelIndMsgT msg;
+} ims_ppp_pdn_rel_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_set_pdn_info_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   IMSIpv6ConfgRspMsgT msg;
+} ims_ipv6_addr_config_rsp_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsCamPppIndT msg;
+} ims_cam_ppp_um_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ImsCamPppIndT msg;
+} ims_cam_ppp_rm_status_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpImsEHRPDAttriMsgT msg;
+} ims_rlp_ehrpd_attribute_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   AppImsBearerReqMsgT msg;
+} ims_app_bearer_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSecAkaAuthRspMsgT msg;
+} hlp_sec_akaauth_rsp_msg_struct;
+#endif /* CBP7_EHRPD */
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpSecAesCryptRspMsgT msg;
+} hlp_sec_aescrypt_rsp_msg_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  UimRspMsgT msg;
+} hlp_get_usim_imsi_rsp_msg_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  UimRspMsgT msg;
+} hlp_get_usim_ad_rsp_msg_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  UimRspMsgT msg;
+} hlp_get_isim_impu_rsp_msg_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpRlpFlowProtocolInfoMsgT msg;
+} hlp_rcp_rlpflow_protocol_info_msg_struct;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpNetConnReqT msg;
+} hlp_default_bearer_conn_req_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpBearerSetupReqT msg;
+} hlp_eps_bearer_setup_req_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpBearerDisconnReqT msg;
+} hlp_eps_bearer_disconn_req_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpDataConnectionCmdT msg;
+} hlp_data_connection_cmd_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpImsSetIPv6AddrMsgT msg;
+} hlp_irat_set_ipv6addr_cmd_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpCssNetRelT msg;
+} hlp_css_network_rel_req_struct;
+
+typedef struct
+{
+  LOCAL_PARA_HDR
+  HlpValNetRelT msg;
+} val_hlp_network_rel_req_struct;
+
+#endif /* MTK_DEV_C2K_IRAT */
+
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpIp6UdpConnectionOpenMsgT msg;
+} hlp_ip6_udp_connection_open_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpIp6UdpConnectionCloseMsgT msg;
+} hlp_ip6_udp_connection_close_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpIp6TcpConnectionOpenMsgT msg;
+} hlp_ip6_tcp_connection_open_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpIp6TcpConnectionCloseMsgT msg;
+} hlp_ip6_tcp_connection_close_msg_struct;
+#endif /* CBP7_EHRPD */
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppRouteTypeSetMsgT msg;
+} hlp_ppp_route_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   ExeRspMsgT msg;
+} hlp_ppp_route_get_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpDOANAuthAlgoSetMsgT msg;
+} hlp_an_auth_algo_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpQOMOpFlowRspMsgT msg;
+} ims_qom_flow_req_rsp_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpQOMOpFlowRspMsgT msg;
+} ims_qom_flow_rel_rsp_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpQOMOpFlowRelIndMsgT msg;
+} ims_qom_flow_rel_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpQOMFlowIndMsgT msg;
+} ims_qom_flow_ntwk_init_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_sec_derivemk_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_sec_derivereauthxkey_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_sec_derivemsk_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_sec_derivemac_rsp_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpSetNetworkOrRelayModeMsgT msg;
+} hlp_set_nw_or_relay_mode_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpDORetryTimersSetMsgT msg;
+} hlp_do_retry_timers_set_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpValPcmtParaMsgT msg;
+} hlp_val_pcmt_para_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_uint16       FmpReferencePN;
+}hlp_rmc_fmp_ref_pn_update_ind_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   kal_bool       ho_ehrpd_enable;
+   kal_bool       idp_in_sleep;
+}hlp_idp_update_ho_ehrpd_enable_ind_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppConnectReqMsgT msg;
+} val_hlp_ppp_connect_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppDisconnectReqMsgT msg;
+} val_hlp_ppp_disconnect_req_struct;
+
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppUpdateReqMsgT msg;
+} val_hlp_ppp_update_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpEhrpdBearerConnReqMsgT msg;
+} val_hlp_ehrpd_bearer_connect_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpEhrpdBearerDisconReqMsgT msg;
+} val_hlp_ehrpd_bearer_disconnect_req_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpEapnsyncDefineReqMsgT msg;
+} val_hlp_eapnsync_define_req_struct;
+
+typedef struct
+{
+    /** ILM specific header. */
+    LOCAL_PARA_HDR
+
+    /** true: on; false: off */
+    kal_bool flag;
+}hlp_rm_buffer_status_notify_struct;
+
+#ifdef MTK_PLT_ON_PC
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpIpDataSendReqMsgT msg;
+} hlp_ip_data_send_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppDataReqMsgT msg;
+} hlp_ppp_data_req_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpPppDataReqMsgT msg;
+} hlp_ppp_data_ind_msg_struct;
+#endif /* MTK_PLT_ON_PC */
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct
+{
+   LOCAL_PARA_HDR
+} hlp_init_nvram_read_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpUtConfigParamT msg;
+}hlp_ut_config_param_msg_struct;
+#endif /* MTK_PLT_ON_PC_UT */
+
+
+#endif /* _HLP_MSG_STRUCT_H */
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_nvram.h b/mcu/interface/protocol/l2_c2k/common/hlp_nvram.h
new file mode 100644
index 0000000..1ebe201
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_nvram.h
@@ -0,0 +1,403 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSKAL_TRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+#ifndef _HLP_NVRAM_H_
+
+#define _HLP_NVRAM_H_ 1
+
+/*****************************************************************************
+ * Includes
+ ****************************************************************************/
+#define HLP_DEFAULT_HSPD_LOCKED             KAL_FALSE
+#define HLP_DEFAULT_HSPD_NETWORKMODE        KAL_TRUE
+
+#define HLP_DEFAULT_RRP_TIMEOUT             3    /* 1750 ms */
+#define HLP_DEFAULT_NUM_REG_RETRIES         2
+#define HLP_DEFAULT_NUM_DEREG_RETRIES       2
+#define HLP_DEFAULT_RRA                     26
+#define HLP_DEFAULT_SPRINT_RRA              1800
+#define HLP_DEFAULT_REREG_ONLYIF_TRAFFIC    KAL_FALSE
+#define HLP_DEFAULT_IP_ADDR                 0x00000000L
+
+#define HLP_DEFAULT_NAI_ENABLED             KAL_TRUE
+
+#define HLP_DEFAULT_NAI                     "ctnet@mycdma.cn"
+#define HLP_DEFAULT_DUN_NAI                 "ctnet@mycdma.cn"
+#define HLP_DEFAULT_SIP_PASSWRD             "vnet.mobi"
+
+#define HLP_DEFAULT_AN_PASSWRD              0
+#define HLP_DEFAULT_AKA_PASSWRD             0
+#define HLP_DEFAULT_MN_HA_PASSWRD           0
+#define HLP_DEFAULT_MN_AAA_PASSWRD          0
+
+#define HLP_DEFAULT_DORMANT_HANDOFF_OPTION  KAL_TRUE
+#define HLP_DEFAULT_DATA_SCRM_ENABLED       KAL_TRUE
+#define HLP_DEFAULT_DATA_THROTTLING_ENABLED KAL_TRUE
+#define HLP_DEFAULT_PREFERRED_RC            3  /*PSW_RC_PREF_3 */
+#define HLP_DEFAULT_MIP_MODE                IPSERVICE_TYPE_MIP_PREFER
+#define HLP_DEFAULT_ACTIVE_PROFILE          0
+#define HLP_DEFAULT_NUM_PROFILES            HLP_MAX_HSPD_PROFILES
+#define HLP_DEFAULT_MN_HA_SPI_ENABLE        KAL_TRUE
+#define HLP_DEFAULT_MN_AAA_SPI_ENABLE       KAL_TRUE
+#define HLP_DEFAULT_VJCOMPRESSION_ENABLED   KAL_FALSE
+#define HLP_DEFAULT_DOTO1X_FALLBACK_ENABLED KAL_TRUE
+
+#define HLP_DEFAULT_HSPD_T_DORMACNY         30
+#define HLP_DEFAULT_HSPD_T_HRPD_SEARCH      300
+#define HLP_DEFAULT_HSPD_T_RAPID_DORMACNY   5
+#define HLP_DEFAULT_HSPD_T_RES_DEF_DORMACNY 2
+
+#define HLP_DEFAULT_PPP_UM_LCP_REQ_RETRIES  10
+#define HLP_DEFAULT_PPP_UM_LCP_NAK_RETRIES  10
+#define HLP_DEFAULT_PPP_UM_LCP_RESTART_TMR  3000
+#define HLP_DEFAULT_PPP_UM_LCP_TERM_RETRIES 2
+#define HLP_DEFAULT_PPP_UM_LCP_TERM_TIMER   3000
+#define HLP_DEFAULT_PPP_UM_AUTH_RETRIES     5
+#define HLP_DEFAULT_PPP_UM_AUTH_TIMER       3000
+#define HLP_DEFAULT_PPP_UM_NCP_REQ_RETRIES  10
+#define HLP_DEFAULT_PPP_UM_NCP_NAK_RETRIES  3
+#define HLP_DEFAULT_PPP_UM_NCP_RESTART_TMR  3000
+#define HLP_DEFAULT_PPP_UM_NCP_TERM_RETRIES 2
+#define HLP_DEFAULT_PPP_UM_NCP_TERM_TIMER   3000
+
+#define HLP_DEFAULT_PPP_RM_PPP_KEEP_LIVE    KAL_FALSE
+#define HLP_DEFAULT_PPP_RM_PPP_DETECT       KAL_FALSE
+#define HLP_DEFAULT_PPP_RM_LCP_REQ_RETRIES  10
+#define HLP_DEFAULT_PPP_RM_LCP_NAK_RETRIES  3
+
+#define NET_MTU              1500       /* it was 1500                     */
+#define TCPIP_HEADERSIZE     40        /* IP header + TCP header size     */
+#define TCP_MAXWINSIZE       65535UL   /* max TCP window size             */
+
+#define HLP_DEFAULT_TCP_MTU                 NET_MTU - TCPIP_HEADERSIZE
+#define HLP_DEFAULT_TCP_WIN_1XRTT           TCP_MAXWINSIZE
+#define HLP_DEFAULT_TCP_WIN_EVDO            TCP_MAXWINSIZE
+#define DO_RETRY_TIMER                    60
+
+#define HLP_DEFAULT_PKOID                   10
+#define HLP_DEFAULT_MN_HA_SPI               300
+#define HLP_DEFAULT_MN_AAA_SPI              2
+#define HLP_DEFAULT_IS801_IP_ADDR           0x00000000L
+#define HLP_DEFAULT_IS801_PORT_NUM          0
+#define HLP_DEFAULT_MN_HOME_IP_ADDR         0x00000000L
+#define HLP_DEFAULT_HA_PRI_IP_ADDR          0xFFFFFFFF
+#define HLP_DEFAULT_HA_SEC_IP_ADDR          0xFFFFFFFF
+#define HLP_DEFAULT_SPRINT_HA_PRI_IP_ADDR   0x441C0F0C  /* 68.28.15.12 */
+#define HLP_DEFAULT_SPRINT_HA_SEC_IP_ADDR   0x441C1F0C  /* 68.28.31.12 */
+#define HLP_DEFAULT_MN_REV_TUNNELING        KAL_TRUE
+#define HLP_DEFAULT_ACTIVE_RSA_PUBLIC_KEY   DMU_RSA_PUBLICKEY_1
+#define HLP_DEFAULT_HA_AUTH                 RFC2002bis
+#define HLP_DEFAULT_HA_AUTH_ALGORITHM       MD5_AUTH_ALGO
+#define HLP_MTU_SIZE_VZW                    1428
+#define HLP_MTU_SIZE_SPRINT                 1422
+/* CTCC requires at least 10 min for ppp context maintaince time 600 is in second unit */
+#define PPP_EHRPD_MAX_INACT_TIME_LEN_CT           600
+/* SPRINT ppp partial context maintenance timer on ehrpd, 3600 in second unit */
+#define PPP_EHRPD_MAX_INACT_TIME_LEN_SPRINT       3600
+/* VZW UE context maintenance timer, 0, by req on Feb 16 */
+#define PPP_EHRPD_MAX_INACT_TIME_LEN_VZW          0
+
+#define HLP_MAX_USRID_LEN                72
+#define HLP_MAX_PSWD_LEN                 16
+#define HLP_MAX_BWSR_DIG_LEN             33  /* (CP_MAX_CALLING_PARTY_NUMBER_SIZE +1) */
+#define HLP_MN_NAI_MAX_SIZE              HLP_MAX_USRID_LEN
+#define MN_AUTH_MAX_SIZE                 3
+
+#define HLP_AKA_OP_LEN                   16
+#define HLP_AKA_SEQ_ARRAY_SIZE           32
+#define HLP_AKA_SQN_LEN                  6  /*48 bits 3G TS 33.105.v.3.0(2000-03)*/
+
+#define HLP_MAX_HSPD_PROFILES            8
+
+#define HLP_HSPD_DB_PAD_SIZE             57
+#define HLP_HSPD_PROFILE_PAD_SIZE        128
+
+#ifdef CBP7_EHRPD
+#define HLP_HSPD_SECURE_DB_PAD_SIZE      114
+#else
+#define HLP_HSPD_SECURE_DB_PAD_SIZE      130
+#endif
+
+#define HLP_HSPD_SECURE_PROFILE_PAD_SIZE 64
+#define HLP_EHRPD_DB_PAD_SIZE            47
+
+#define MN_PASSWD_MAX_SIZE               HLP_MAX_PSWD_LEN
+
+#define RSA_PUBKEY_EXPONENT_MAX_SIZE 128
+#define RSA_PUBKEY_MODULUS_MAX_SIZE  128
+
+/*****************************/
+/* HlpNam  definitions start */
+/*****************************/
+typedef struct
+{
+   kal_uint32  RxBytes;
+   kal_uint32  RxPackets;
+   kal_uint32  BadRxPackets;
+   kal_uint32  TxBytes;
+   kal_uint32  TxPackets;
+   kal_uint64  TotalRxBytes;
+   kal_uint64  TotalRxPackets;
+   kal_uint64  TotalBadRxPackets;
+   kal_uint64  TotalTxBytes;
+   kal_uint64  TotalTxPackets;
+   kal_uint8   Flag[4];
+   kal_uint8   Unused[10];
+} IPCounterStruct;
+
+typedef struct
+{
+   kal_uint8   lcpReqTries;
+   kal_uint8   lcpNakTries;
+   kal_uint16  lcpRestartTimer;
+   kal_uint8   lcpTermTries;
+   kal_uint16  lcpTermTimer;
+   kal_uint8   authRetries;
+   kal_uint16  authTimer;
+   kal_uint8   ncpReqTries;
+   kal_uint8   ncpNakTries;
+   kal_uint16  ncpReStrTimer;
+   kal_uint8   ncpTermTries;
+   kal_uint16  ncpTermTimer;
+   kal_uint8   unused[8];
+} HlpPppUmCfgT;
+
+typedef struct
+{
+   kal_bool    pppKeepAlive;
+   kal_bool    pppDetect;
+   kal_uint8   lcpReqTries;
+   kal_uint8   lcpNakTries;
+   kal_uint16  lcpRestartTimer;
+   kal_uint8   lcpTermTries;
+   kal_uint16  lcpTermTimer;
+   kal_uint8   ncpReqTries;
+   kal_uint8   ncpNakTries;
+   kal_uint16  ncpReStrTimer;
+   kal_uint8   ncpTermTries;
+   kal_uint16  ncpTermTimer;
+   kal_uint8   unused[3];
+} HlpPppRmCfgT;
+
+typedef struct
+{
+   kal_uint16  tcpMtu;
+   kal_uint16  tcpWinSize_1XRTT;
+   kal_uint16  tcpWinSize_EVDO;
+   kal_uint8   unused[4];
+} HlpTcpCfgT;
+
+typedef struct{
+   kal_uint8    ProfileId;
+   kal_bool     Profile_Valid;
+   kal_uint32   MN_HOME_IP_ADDR;
+   kal_uint32   HA_PRI_IP_ADDR;
+   kal_uint32   HA_SEC_IP_ADDR;
+   kal_uint8    MN_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    MN_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    MN_REV_TUNNELING;
+   kal_bool     bMN_HA_SPI_Enable;
+   kal_uint32   MN_HA_SPI;
+   kal_bool     bMN_AAA_SPI_Enable;
+   kal_uint32   MN_AAA_SPI;
+   kal_uint8    Padding[HLP_HSPD_PROFILE_PAD_SIZE];
+} HlpHspdProfileData;
+
+
+typedef struct {
+   kal_uint8    RRPTimeout;      /* RRP MIP Registration timeout        */
+   kal_uint8    NumRegRetries;   /* RRP MIP Registration Retry Attempts */
+   kal_uint16   RRA;             /* Pre Re-registration backoff */
+   kal_uint32   Is801_IpAddr;
+   kal_uint16   Is801_PortNum;
+   kal_uint8    Is801_UserId[HLP_MAX_USRID_LEN];
+   kal_uint8    Is801_Pswd[HLP_MAX_PSWD_LEN];
+   kal_uint8    Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN];
+
+   kal_uint8    MN_HA_AUTH;  /* 0-RFC2002, 1-RFC2002bis, 2-bypassHA */
+   kal_uint8    MN_HA_Auth_Algo;
+   kal_uint8    MN_AAA_Auth_Algo;
+
+   kal_uint8    MN_Authenticator[MN_AUTH_MAX_SIZE];
+   kal_uint8    ActiveDmuRsaPublicKey;   /* 0-TestKey, 1-CommercialKey */
+   kal_uint8    nPKOID;
+
+   kal_uint8    SIP_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    AN_NAI[HLP_MN_NAI_MAX_SIZE];
+
+   kal_uint8    DormantHandoffOptSet;  /* 0-Disabled, 1-Enabled */
+   kal_uint8    DataScrmEnabled;       /* Supp Chan Supported */
+   kal_uint8    DataTrtlEnabled;       /* Slow Down data at high CPU utilization */
+   kal_uint8    PrefRc;                /* Preferred Radio Cfg. Default-RC3 */
+   kal_uint32   DNS_PRI_IP_ADDR;
+   kal_uint32   DNS_SEC_IP_ADDR;
+   kal_uint8    MIPMode;
+
+   kal_uint32   ActiveProfile;
+   kal_uint8    NumProfiles;
+   kal_uint8    VJCompEnabled;
+   kal_bool     HspdLocked;
+   kal_uint16   LockCode;
+   kal_bool     HspdNetworkMode;
+   kal_uint16   T_Dormancy;
+   kal_uint16   T_HRPD_Search;
+   kal_uint16   T_DO_Retry;
+   kal_uint16   T_Rapid_Dormancy;
+   kal_uint16   T_ResDef_Dormancy;
+   kal_uint8    NumDeRegRetries;
+   kal_bool     MipReRegOnlyIfTraffic;
+   kal_bool     MipNaiEnabled;
+   kal_bool     DoTo1X_Enabled;
+
+   HlpPppUmCfgT PppUmCfg;
+   HlpPppRmCfgT PppRmCfg;
+   HlpTcpCfgT   TcpCfg;
+   kal_uint8     Ipv6V4Mode;
+
+   kal_uint8    Padding[HLP_HSPD_DB_PAD_SIZE];
+   HlpHspdProfileData ProfileData [HLP_MAX_HSPD_PROFILES];
+}HlpHspdSegData;
+
+typedef struct
+{
+   kal_uint8     ProfileId;
+   kal_bool      Profile_Valid;
+   kal_uint8     MN_AAA_PASSWORD_LEN;
+   kal_uint8     MN_AAA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP AAA Shared Secret*/
+   kal_uint8     MN_HA_PASSWORD_LEN;
+   kal_uint8     MN_HA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP HA Shared Secret  */
+   kal_uint8     Padding[HLP_HSPD_SECURE_PROFILE_PAD_SIZE];
+} HlpSecureProfileData;
+
+typedef struct
+{
+   kal_uint32    checkSum;
+   kal_uint8     SIP_PASSWORD_LEN;
+   kal_uint8     SIP_PASSWORD[HLP_MAX_PSWD_LEN]; /* Simple IP User Password   */
+   kal_uint8     AN_PASSWORD_LEN;
+   kal_uint8     AN_PASSWORD[HLP_MAX_PSWD_LEN]; /* AN Shared Secret*/
+#ifdef CBP7_EHRPD
+   kal_uint8     AKA_PASSWORD[HLP_MAX_PSWD_LEN];
+#endif
+   kal_uint8     Padding[HLP_HSPD_SECURE_DB_PAD_SIZE];
+   HlpSecureProfileData   ProfileData [HLP_MAX_HSPD_PROFILES];
+} HlpHspdSecureSegData;
+
+#ifdef CBP7_EHRPD
+
+#if defined MTK_PLT_ON_PC
+#pragma pack( push, saved_packing, 1 )
+#endif
+typedef struct {
+   kal_uint8 NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8 AcessNetworkId[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8 OP[HLP_AKA_OP_LEN];
+   kal_uint8 SQN[HLP_AKA_SEQ_ARRAY_SIZE][HLP_AKA_SQN_LEN];
+} HlpHspdAkaProfileDataT;
+#if defined MTK_PLT_ON_PC
+#pragma pack( pop, saved_packing )
+#endif
+
+typedef struct
+{
+   kal_bool SmsOverIpNetworks;
+   kal_bool SigComp;
+   kal_uint8 ImsDomain[72];
+   kal_uint8 ImsAkaPassword[72];
+   kal_uint16 SipT1Timer_ims;
+   kal_uint16 SipTFTimer_ims;
+   kal_uint16 SipT2Timer_ims;
+   kal_uint16 SipPcscfPort;
+} SmsOverImsT;
+
+typedef struct
+{
+   HlpHspdAkaProfileDataT AkaProfileData;
+   kal_uint32             pcmt_val_ehrpd; /* PPP Partial Context Maintenance timer eHRPD: standalone eHRPD scenario. Unit: second. */
+   kal_uint32             pcmt_val_irat;  /* PPP Partial Context Maintenance timer eHRPD: LTE IRAT transition scenario. Unit: second. */
+} HlpEHrpdSegDataT;
+#endif
+
+typedef enum
+{
+   InvalidIP=0,
+   IPv4=1,
+   IPv6,
+   IPv4andIPv6,
+}IPAddrTypeT;
+
+typedef enum
+{
+   IPSERVICE_TYPE_SIP_ONLY,
+   IPSERVICE_TYPE_MIP_PREFER,
+   IPSERVICE_TYPE_MIP_ONLY
+} IPServiceTypeT;
+
+typedef enum
+{
+   DMU_RSA_PUBLICKEY_1 = 0,
+   DMU_RSA_PUBLICKEY_2
+} DmuRsaPublickKeyNumber;
+
+typedef enum
+{
+   RFC2002,
+   RFC2002bis,
+   BypassHA
+}HAAuthNumber;
+
+typedef enum
+{
+   NONE_AUTH_ALGO,
+   MD5_AUTH_ALGO
+}AuthAlgoNumber;
+
+typedef struct {
+    kal_uint8 nPKOID;
+    kal_uint8 nPKOI;
+    kal_uint8 nPK_Expansion;
+    kal_uint8 nATVAndDMUV;
+} HlpRSAPublicKeyInfoHdrT;
+
+typedef struct {
+    HlpRSAPublicKeyInfoHdrT hdrRSAPublicKeyInfo;
+    kal_uint8 RSAPubKeyExponent[RSA_PUBKEY_EXPONENT_MAX_SIZE];
+    kal_uint8 RSAPubKeyModulus[RSA_PUBKEY_MODULUS_MAX_SIZE];
+} HlpRSAPublicKeyInfoT;
+
+
+#endif  /* _HLP_NVRAM_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpapi.h b/mcu/interface/protocol/l2_c2k/common/hlpapi.h
new file mode 100644
index 0000000..4d9562e
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpapi.h
@@ -0,0 +1,1971 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+#ifndef _HLPAPI_H_
+#define _HLPAPI_H_
+/*****************************************************************************
+*
+* FILE NAME   : hlpapi.h
+*
+* DESCRIPTION :
+*
+*     This include file provides system wide global type declarations and
+*     constants
+*
+* HISTORY     :
+*     See Log at end of file.
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "module_msg_range.h"
+#include "sysdefs.h"
+#include "pswcustom.h"
+#include "valatdata.h"
+#include "cpbuf.h"
+#include "iopapi.h"
+#include "sbp_public_utility.h"
+#include "hlp_nvram.h"
+#include "slc_nvram.h"
+
+#define EAP_AKA_PRIME 1
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define HLP_MAILBOX_CMD                  EXE_MAILBOX_1_ID
+#define HLP_MAILBOX2_CMD                 EXE_MAILBOX_2_ID
+#define HLP_SEC_MAILBOX                  EXE_MESSAGE_MBOX_3
+#define HLP_SEC_CMD                      EXE_MAILBOX_3_ID
+
+#define HLP_MAX_SIZE_DATA                240
+#define HLP_MAX_NUM_REV_RLP              300
+#define HLP_MAX_SPY_LEN                  164
+#define MAX_NUM_DO_INACTIVITY_TICKS      4500    /* 4500 x 6.67ms = 30 sec */
+#define MAX_NUM_1X_INACTIVITY_TICKS      30      /* second */
+
+#define HLP_AKA_KEY_LEN                  16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_RAND_LEN                 16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_FMK_LEN                  4  /*32 bits */
+#define HLP_AKA_AMF_LEN                  2  /*16 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_MACA_LEN                 8  /*64 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_MACS_LEN                 8  /*64 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_RES_LEN                  16 /*32<->128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_CK_LEN                   16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_IK_LEN                   16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_AK_LEN                   6  /*48 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_AKS_LEN                  6  /*48 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_UAK_LEN                  16
+#define HLP_AKA_AUTN_LEN                 16
+#define HLP_AKA_AUTS_LEN                 16
+
+#define EAP_AKA_NONCE_S_LEN              16
+#define EAP_AKA_NONCE_MT_LEN             16
+#define EAP_AKA_MAC_LEN                  16
+#define EAP_AKA_K_AUT_LEN                32
+#define EAP_AKA_K_ENCR_LEN               16
+#define EAP_AKA_MSK_DATA_LEN             64
+#define EAP_AKA_IV_LEN                   16
+
+#define EAP_AKA_RAND_LEN                 16
+#define EAP_AKA_AUTN_LEN                 16
+#define EAP_AKA_RES_MAX_LEN              16
+#define EAP_AKA_MK_LEN                   20
+#define EAP_AKA_MSK_LEN                  64
+#define EAP_AKA_AUTS_LEN                 14
+#define EAP_AKA_IK_LEN                   16
+#define EAP_AKA_CK_LEN                   16
+#define EAP_AKA_SHA1_MAC_LEN             20
+
+#define EAP_AKA_PSEUDONYM_LEN            128
+#define EAP_AKA_REAUTH_ID_LEN            128
+#define EAP_AKA_KC_LEN                   8
+#define RM_WRITE_FLAG_SND_ACK            1
+
+#if EAP_AKA_PRIME
+#define EAP_AKA_K_RE_LEN                 32
+#define EAP_AKA_EMSK_DATA_LEN            64
+#define EAP_AKA_PRIME_MK_LEN             208
+#endif
+
+#define HLP_MAX_SOCKET                   10
+
+#define HLP_MN_PASSWD_MAX_SIZE           HLP_MAX_PSWD_LEN
+#define HLP_BETTER_SYSTEM_THRESH         20
+#define MN_NAI_MAX_SIZE                  HLP_MAX_USRID_LEN
+#define HLP_NUM_DIAL_STRING_DIGITS       11
+
+#ifdef CBP7_EHRPD
+#define MAX_HLP_FLOW_SUPPORTED           8  /* 6 */ /*Must be same as MAX_RLP_FLOW_SUPPORTED*/
+#define MAX_RLP_FRAMES_PER_IP_PKT        32
+#define NUM_HLP_FWD_IP_DATA_IND_ENTRIES  16
+#endif
+
+#define HSPD_PRI
+
+
+#define VAL_UIM_FILE_CHANGE_LIST_MAX     50
+#define HLP_VZW_PCO_CODE                 0xFF00
+#define HLP_VZW_PCO_CODE_STR             "FF00"
+#define HLP_VZW_PCO_MCCMNC_LEN           6
+#define HLP_VZW_PCO_MCCMNC_STR           "311480"
+#define HLP_VZW_PCO_CODE_STR_LEN         4
+
+#define HLP_MAX_APN_NUM                  10
+#define HLP_UIM_USIM_ACL_TAG           0xDD
+#define HLP_UIM_USIM_ACL_SEPERATOR     0x2E
+#define HLP_MIP_ERROR_CODE_BASE        0x80b0
+#define HLP_PDN_ERROR_CODE_BASE        0x8000
+
+/***********************************************************************/
+/* Global Typedefs                                                     */
+/**********************************************************************/
+
+
+/***********************************************************************/
+/* Enumeration Definitions                                             */
+/***********************************************************************/
+typedef enum
+{
+   HlpDataChRetOK,
+   HlpDataChRetOK_Empty,
+   HlpDataChRetFull,
+   HlpDataChRetErr
+} HlpDataChRetStatus;
+
+typedef  struct {
+   CpBufferT   *bufPtr;
+   kal_uint16   offset;
+   kal_uint16   dataLen;
+   kal_uint8    nRLPFlow;
+   kal_uint8    streamType;
+
+   kal_uint16   tcpTag;
+   kal_uint32   tcpPort;
+   kal_uint32   srcIpAddr;
+   kal_uint32   dstIpAddr;
+
+#ifdef CBP7_EHRPD
+   kal_uint16   FrameType;   /* distinguish Ipv4/Ipv6 and PDN-ID */
+#endif
+
+   kal_uint8    BearerId;
+} RmDataCpBuffDescT;
+
+typedef enum
+{
+   RmDataQBuffOK,/*Process successfully*/
+   RmDataQBuffOK_Empty,/* Buffer Q empty after read successfully */
+   RmDataQBuffFull,/* Buffer Q full */
+   RmDataQBuffErr /* Error occurred. */
+} RmDataQBuffStatusE;
+
+typedef enum
+{
+   DO_NETWORK,
+   RTT_NETWORK,
+   NON_CONNECTED
+} NetworkT;
+
+typedef enum
+{
+   IN_SERVICE,
+   OOSA,
+   TO_ACQUIRE
+} SvcStatusT;
+
+typedef enum
+{
+   ASYNC_DATA,
+   NETWORK_RM,
+   PPP_ONLY,
+   RELAY_RM,
+   MAIN_CONN
+} NspeAppT;
+
+typedef enum
+{
+   DO_ONLY,       /* DO is active and is the only system that is allowed.  */
+   DO_PREFERRED,  /* DO and 1X are both active, DO is preferred.       */
+   RTT_ONLY,      /* 1X is active and is the only system that is allowed.  */
+   RTT_PREFERRED,  /* DO and 1X are both active, 1X is preferred.       */
+   NO_PREFERENCE,
+#ifdef MTK_CBP
+   HLP_NTW_PREF_NONE
+#endif
+} NetworkPrefT;
+
+typedef enum
+{
+   CONNECTION_FAILED_IND,
+   CONNECTION_CLOSED_IND,
+   CONNECTION_OPENED_IND
+} ConnectionRspT;
+
+typedef enum
+{
+   Um,  /* Service Stream */
+   Rm,
+   Um_AccessStream,
+   PppEndPointMax
+} pppEndPointT;
+
+typedef enum
+{
+   DO_FOUND,    /* Only DO network is found */
+   RTT_FOUND,   /* Only 1X network is found */
+   BOTH,        /* Both network are found   */
+   NEITHER      /* Nothing available        */
+} NetworkRspT;
+
+typedef enum
+{
+   HA_DEC0,
+   HA_DEC1,
+   HA_ENC0,
+   HA_ENC1
+} pppHaPortT;
+
+typedef enum
+{
+   HLP_NETWORK_ERROR_EVDO_CO_NO_SERVICE,
+   HLP_NETWORK_ERROR_EVDO_CO_ACCESS_FAILURE,
+   HLP_NETWORK_ERROR_EVDO_CO_REDIRECTION,
+   HLP_NETWORK_ERROR_EVDO_CO_NOT_PREFERRED,
+   HLP_NETWORK_ERROR_EVDO_CO_MODE_HANDOFF,
+   HLP_NETWORK_ERROR_EVDO_CO_IN_PROGRESS,
+   HLP_NETWORK_ERROR_EVDO_CO_SETUP_TIMEOUT,
+   HLP_NETWORK_ERROR_EVDO_CO_SESSION_NOT_OPEN,
+   HLP_NETWORK_ERROR_EVDO_RELEASE_NO_REASON,
+   HLP_NETWORK_ERROR_EVDO_PROTOCOL_FAILURE,
+   HLP_NETWORK_ERROR_EVDO_DENY_NO_REASON,
+   HLP_NETWORK_ERROR_EVDO_DENY_NETWORK_BUSY,
+   HLP_NETWORK_ERROR_EVDO_DENY_AUTHENTICATION,
+   HLP_NETWORK_ERROR_EVDO_REDIRECT_TO_1X,
+   HLP_NETWORK_ERROR_EVDO_FADE,
+   HLP_NETWORK_ERROR_EVDO_USER_DISCONNECTED
+#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
+   ,
+   HLP_NETWORK_ERROR_EVDO_RSVAS_SUSPEND,
+   HLP_NETWORK_ERROR_EVDO_RSVAS_VIRTUAL_SUSPEND
+#endif
+   ,
+   HLP_NETWORK_SESSION_NEGOTIATION_COMPLETE,
+   HLP_NETWORK_ERROR_EVDO_LAST
+}HlpConnCloseReasonT;
+
+typedef struct HlpPPPHaLLD
+{
+   kal_uint32               sourceAddr;
+   kal_uint32               xferCount;
+   kal_uint32               configReg;
+   kal_uint32               nextInLLD;
+} HlpPPPHaLLDT;
+
+typedef enum
+{
+   REG_TIMER_EXPIRED,
+   DORMANT_RECONN,
+   SID_NID_CHANGE,
+   PKT_ZID_CHANGE,
+   COLOR_CODE_CHANGE
+} MipReRegReasonT;
+
+typedef enum
+{
+    Check_T_Dormancy = 0x01,
+    Check_T_HRPD_Search = 0x02,
+    Check_T_Rapid_Dormancy = 0x04,
+    Check_T_ResDef_Dormancy = 0x08,
+    Check_Dormancy_All = 0x0f
+} DormParmCheckT;
+
+typedef enum
+{
+    HLP_TIMER_TCH_SETUP,
+    HLP_TIMER_WFR_SYS_RSP,
+    HLP_TIMER_1X_CONNECTION_5MIN,
+    HLP_TIMER_WFR_FAST_CONN,
+    HLP_TIMER_DATA_RETRY,
+    HLP_TIMER_DO_RETRY,
+    HLP_TIMER_FALLBACK,
+    HLP_TIMER_DO_OOSA_CONNECT_1X,
+    HLP_TIMER_WFR_RM_CONNECT,
+    HLP_TIMER_PPP_UM_REQ,
+    HLP_TIMER_PPP_RM_REQ,
+    HLP_TIMER_PPP_A12_REQ,
+    HLP_TIMER_PPP_AUX_REQ,
+    HLP_TIMER_PPP_UM_LOCAL_AUTH_REQ,
+    HLP_TIMER_PPP_RM_LOCAL_AUTH_REQ,
+    HLP_TIMER_PPP_A12_LOCAL_AUTH_REQ,
+    HLP_TIMER_PPP_AUX_LOCAL_AUTH_REQ,
+    HLP_TIMER_PPP_UM_REMOTE_AUTH_REQ,
+    HLP_TIMER_PPP_RM_REMOTE_AUTH_REQ,
+    HLP_TIMER_PPP_A12_REMOTE_AUTH_REQ,
+    HLP_TIMER_PPP_AUX_REMOTE_AUTH_REQ,
+    HLP_TIMER_PPP_MNRP_REQ,
+    HLP_TIMER_WFR_UIM_AUTH_RSP,
+    HLP_TIMER_THROTTLING_HSPD,
+    HLP_TIMER_THROTTLING_HRPD,
+    HLP_TIMER_IP_250MS,
+    HLP_TIMER_DRMNT_RCNT_BACKOFF,
+    HLP_TIMER_WFR_HANDOFF_HYST,
+    HLP_TIMER_XOFF_RSP,
+    HLP_TIMER_TCH_REL,
+    HLP_TIMER_C109_PULSE,
+    HLP_TIMER_PPP_CONNECT_BACKOFF,
+    HLP_TIMER_DATA_RELEASE,
+    HLP_TIMER_PDN_REQ_0,               /* ehrpd start, 0-4 not the pdn id, but the pdn array index */
+    HLP_TIMER_PDN_REQ_1,
+    HLP_TIMER_PDN_REQ_2,
+    HLP_TIMER_PDN_REQ_3,
+    HLP_TIMER_PDN_REQ_4,
+    HLP_TIMER_VSE_VER_CAP_IND,
+    HLP_TIMER_VSE_PPP_INACT,
+    HLP_TIMER_IMS_WFR_RSP,
+    HLP_TIMER_PDN_INACT_0,
+    HLP_TIMER_PDN_INACT_1,
+    HLP_TIMER_PDN_INACT_2,
+    HLP_TIMER_PDN_INACT_3,
+    HLP_TIMER_PDN_INACT_4,
+    HLP_TIMER_THROTTLING_EHRPD,
+    HLP_TIMER_UE_PARTIAL_CONTEXT,      /* ehrpd end */
+    HLP_TIMER_MIP_RRP_REG,             /* mip start */
+    HLP_TIMER_MIP_RRP_DEREG,
+    HLP_TIMER_MIP_RRQ_REG,
+    HLP_TIMER_MIP_AGENT_ADV,
+    HLP_TIMER_MIP_LIFETIME,            /* mip end */
+    HLP_TIMER_IPV6_TEST,
+    HLP_TIMER_NAT,
+    HLP_TIMER_A12_REDIAL_PENDING,
+    HLP_TIMER_RSVAS_ABORT_REQ,
+    HLP_TIMER_VSNCP_PDN_OPEN,   
+    HLP_TIMER_MAX_NUM
+}hlp_timer_enum;
+
+typedef enum
+{
+   /*Network Generates PDN Error*/
+   GeneralError = 0x8000,
+   UnauthorizedAPN,
+   PDNLimitExceeded,
+   NoPGWAvailable,
+   PGWUnreachable,
+   PGWReject,
+   InsufficientParameters,
+   ResourceUnavailable,
+   AdminProhibited,
+   PDNIDAlreadyInUse,
+   SubScriptionLimitation,
+   PDNConnAlreadyExistForPDN,
+   EmergencyNotSupported,
+   ReconnectNotAllowed,
+   /*User Defined PDN Error*/
+   EAPAKAfailure = 0x8080,
+   RetryTmrThrottling,
+   NetworkNoRsp,
+   PDNAttachAbort,
+   PDNLimitExceededInUESide,
+   PDNIDAlreadyInUseInUESide,
+   InvalidPDNAttachReq,
+   PdnRecFailure,
+   MainConnSetupFailure,
+   BearerResourceUnAvailable,
+   OpAbortByUser,
+   RttDataConnected,
+   EAPAKAReject,
+   LCPNego3Failure,
+   TCHSetupFailure,
+   NwNoRspInLCP,
+   NwNoRspInAuth,
+   A12Retry3Failure,
+   RsvasSuspended,
+   AbortByGMSS,
+   /*User Defined PPP Error*/
+   PppAuthFail = 0x80b0,
+   MipPppLcpTmo,
+   MipPppNcpTmo,
+   SipPppLcpTmo,
+   SipPppNcpTmo,
+   MipPppOptMismatch,
+   SipPppOptMismatch,
+   MipSolTmo,
+   MipRrqTmo,
+   MipRrpErr,
+   MipLcpFail,
+   SipLcpFail,
+   MipNcpFail,
+   SipNcpFail,
+   A12AuthFail,
+   EapAkaAuthFail,
+   MipAdminProhibFail,
+   MultiTchFail,
+   PppA12LcpTmo,
+   DnsNoResponse,
+   /*Network Generates MIP Error*/
+   /*0x80f0 - 0x8140: MIP error code, shall not disorder it*/
+   MipUnspecifiedFailure = 0x80f0,
+   MipAdminProhibited,
+   MipInsuffResources1,
+   MipMnFailedAuth,
+   MipHaFailedAuth,
+   MipLifetimeTooLong,
+   MipPoorlyFormedReq,
+   MipPoorlyFormedReply,
+   MipEncapUnavail,
+   MipReservedUnavail,
+   MipRevTunUnavail,
+   MipRTNTNotSet,
+   MipMnTooDistant,
+   MipInvalidCareOfAddr,
+   MipRegTimeout,
+   MipDsNotSupport,
+   MipHnUnreachable,
+   MipHaHostUnreachable,
+   MipHaPortUnreachable,
+   MipHaUnreachable = 0x8108,
+   MipVendorSpecific,
+   MipNonzeroHaAddr,
+   MipNonzeroHomeAddr = 0x8110,
+   MipMissingNai,
+   MipMissingHa,
+   MipMissingHomeAddr,
+   MipUnknownChall = 0x8118,
+   MipMissingChall,
+   MipStaleChall,
+   MipMissingMnFa,
+   MipReasonUnspec = 0x8130,
+   MipAdminProhib,
+   MipInsuffResources2,
+   MipMnFailedAuth2,
+   MipFaFailedAuth,
+   MipIdentMismatch,
+   MipPoorlyFormedReq2,
+   MipTooManyBindings,
+   MipUnknownHaAddr,
+   MipRevTunnelUnavail,
+   MipRTNTNotSet2,
+   MipEncapsulationUnavail = 0x813b,
+   MipRegWithRedirected = 0x813f,
+   MipErrCodeFromHome = 0x8140,
+   NullError   = 0xeeee,
+   NoError     = 0xffff
+}DataConnErrCodeT;
+
+/***********************************************************************/
+/* Message/Struct Definitions                                          */
+/***********************************************************************/
+typedef struct
+{
+   NetworkT    networkType;
+   SvcStatusT  svcStatus;
+} networkSvcT;
+
+typedef struct
+{
+   networkSvcT ServiceStatus;
+} HlpOosaIndMsgT;
+
+typedef struct
+{
+   NetworkRspT  SysToBeConnected;
+} HlpSystemQueryRspMsgT;
+
+/* Same as ValPswCallEndReasonT defined in valpswapi.h */
+typedef enum
+{
+  HLP_PSW_ORIG_FAIL=2,
+  HLP_PSW_ORIG_CANCELED_NDSS,
+  HLP_PSW_ORIG_CANCELED,
+  HLP_PSW_INTERCEPT,
+  HLP_PSW_REORDER,
+  HLP_PSW_CC_RELEASE,
+  HLP_PSW_CC_RELEASE_SO_REJ,
+  HLP_PSW_FNM_RELEASE,
+  HLP_PSW_DIALING_COMPLETE,
+  HLP_PSW_DIALING_CONTINUE,
+  HLP_PSW_MAINTENANCE,
+  HLP_PSW_VP_ON,
+  HLP_PSW_VP_OFF,
+  HLP_PSW_PSIST_FAIL,
+  HLP_PSW_TC_RELEASE_MS,
+  HLP_PSW_TC_RELEASE_PDOWN,
+  HLP_PSW_TC_RELEASE_DISABLE,
+  HLP_PSW_TC_RELEASE_BS,
+  HLP_PSW_TC_RELEASE_SO_REJECT,
+  HLP_PSW_TC_RELEASE_TIMEOUT,
+  HLP_PSW_TC_RELEASE_ACK_FAIL,
+  HLP_PSW_TC_RELEASE_FADE,
+  HLP_PSW_TC_RELEASE_LOCK,
+  HLP_PSW_PAGE_FAIL,
+  HLP_PSW_RETRY_TIMER_ACTIVE,
+  HLP_PSW_RETRY_TIMER_INACTIVE,
+  HLP_PSW_AMPS_INSVC,
+  HLP_PSW_ORIG_REJECTED,
+  HLP_PSW_EV_ORIG_RETRY_ORDER,
+  HLP_PSW_SO_REDIRECT
+} HlpPswCallEndReasonT;
+
+typedef struct
+{
+   HlpPswCallEndReasonT reason;
+} HlpConnectionFailedIndMsgT;
+
+typedef struct
+{
+   ConnectionRspT ConnRsp;
+} HlpConnectionRspMsgT;
+
+typedef struct
+{
+   kal_uint16 sid;
+   kal_uint16 nid;
+} HlpSidNidChangIndMsgT;
+
+typedef struct
+{
+   kal_uint8 pid;
+} HlpPktZoneIdChangIndMsgT;
+
+typedef struct
+{
+   kal_uint8 subnetId[16];
+} HlpSubnetIdChangIndMsgT;
+
+typedef struct
+{
+   kal_uint8            CallNumber[HLP_MAX_BWSR_DIG_LEN]; /* ASCII chars, NULL terminated       */
+   kal_uint8            UserId[HLP_MAX_USRID_LEN];        /* Username use for SIP               */
+   kal_uint8            Pswd[HLP_MAX_PSWD_LEN];           /* Password use for SIP               */
+} DialingInfoT;
+
+typedef struct
+{
+   NspeAppT  AppInstance;
+   kal_uint8         Action;
+} HlpUmAppInstanceMsgT;
+
+typedef struct
+{
+  kal_uint8   FileCount;
+  kal_uint16  FileId[VAL_UIM_FILE_CHANGE_LIST_MAX];
+} HlpUimFileChangeMsgT;
+
+typedef struct {
+   kal_uint32 ipaddress;
+   kal_uint16 port;
+} FilterMux;
+
+typedef struct {
+   FilterMux socket[4];
+   kal_uint16  currentSocketNum;
+}MuxInfo;
+
+typedef struct
+{
+   kal_bool gotoDormant;
+} HlpConnectionReleasedIndMsgT;
+
+typedef struct
+{
+   kal_bool               success;                            /* True = TCH connection and 1X RLP established. */
+} HlpConnectionIndMsgT;
+
+typedef struct
+{
+   kal_bool             TcpType;   /* KAL_TRUE=TCP, KAL_FALSE=UDP */
+   kal_int16            socketId;  /* input socket Id, will be used in the response message */
+   ExeRspMsgT       SocketCreateRspInfo;
+   ExeRspMsgT       SocketConnRspInfo;
+   ExeRspMsgT       SocketCloseRspInfo;
+} HlpSocketCreateMsgT;
+
+typedef struct
+{
+   kal_uint32           IpAddr;
+   kal_uint16           Port;
+} HlpAppAddrT;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   HlpAppAddrT      ResourceAddr;
+   ExeRspMsgT       SocketBindRspInfo;
+} HlpSocketBindMsgT;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   kal_bool             Passive;  /* KAL_FALSE=active, TURE=listen                   */
+   HlpAppAddrT      DestAddr; /* IP and port number if active mode is chosen */
+} HlpSocketConnectMsgT;
+
+typedef enum
+{
+   HLP_IP6_ADDR_TYPE_PUBLIC,
+   HLP_IP6_ADDR_TYPE_PUBLIC_TEMP,
+   HLP_IP6_ADDR_TYPE_LOCAL
+} HlpIp6AddrTypeE;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   kal_uint8 FlowId;
+   HlpIp6AddrTypeE AddrType;
+   kal_uint16 PeerAddrPort;
+   kal_uint32 PeerAddrIp[4];
+} HlpIp6SocketConnectMsgT;
+
+typedef struct
+{
+   kal_uint8 Sap;
+} HlpIp6SocketConnectRspMsgT;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   kal_bool             Graceful;
+} HlpSocketCloseMsgT;
+
+typedef struct
+{
+   kal_uint8            Sap;   /*server's sap*/
+   kal_int16            SockListenfd;
+   kal_int16            sockfd[5];
+   kal_uint8            SocketNum;
+   ExeRspMsgT       MmiSocketListenRspInfo;
+} HlpSocketListenMsgT;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   kal_uint8            opt_type;           /* Specifies which option is being set */
+   kal_uint16           size;
+} HlpOptionRequestMsgT;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   kal_int8             how;
+} HlpSocketShutDownMsgT;
+
+typedef struct
+{
+   kal_uint8            Sap;
+   kal_bool             lingerOnOff;
+   kal_uint32           lingerTime;
+} HlpSocketLingerMsgT;
+
+typedef struct
+{
+   kal_uint32           IpAddr;        /* 32-bit IP address.               */
+   kal_uint16           UdpPort;       /* UDP port address.                */
+} HlpDatagramAddrT;
+
+typedef struct
+{
+   kal_uint8*           DataBufP;      /* Point to the first byte          */
+   kal_uint16           DataLen;       /* size of data in byte             */
+   kal_uint8            Flags;         /* if IP_MOREDATA is set in the flag
+                                      it indicates that datagram is not
+                                      able to fit into allocated buffer
+                                      Datagram is truncated to fit.    */
+} HlpDatagramT;
+
+typedef struct
+{
+#if defined(MTK_PLT_ON_PC) && defined(MTK_PLT_ON_PC_UT)
+    kal_uint8            data[255];
+#endif
+    kal_uint8*           DataP;   /* point to the first byte of data.    */
+    kal_uint16           Size;    /* The size of data in byte.           */
+    kal_bool             Push;    /* KAL_TRUE, send immediately;             */
+                              /* KAL_FALSE, TCP determine by itself.     */
+    HlpDatagramAddrT To;      /* The address of receipent for UDP    */
+    kal_uint8            Sap;     /* Socket of which the data is going to
+                                 be sent.                            */
+} HlpSocketSendReqMsgT;
+
+typedef   struct
+{
+   kal_uint8    Sap;
+}   HlpUpbRecvDataRspMsgT;
+
+typedef struct
+{
+   kal_uint8    Sap;
+} HlpTcpbRecvRspMsgT;
+
+typedef struct
+{
+   kal_uint32   SrcIp;
+   kal_uint32   DestIp;
+   kal_uint16   SrcPort;
+   kal_uint16   DestPort;
+   kal_uint16   DataLength;
+   kal_uint8   *DataPtr;
+} HlpMipRrpMsgT;
+
+typedef struct
+{
+   kal_uint32   SrcIp;
+   kal_uint32   DestIp;
+   kal_uint16   DataLength;
+   kal_uint8   *DataPtr;
+} HlpMipAgentAdvMsgT;
+
+typedef struct
+{
+   kal_uint8    Status;
+   kal_uint32   LocalIp;
+   kal_uint32   RemoteIp;
+} HlpMipUmPppStatusMsgT;
+
+typedef struct
+{
+   pppEndPointT  interface;
+   kal_uint8         status;
+   kal_uint32        localAddr;
+   kal_uint32        remoteAddr;
+   kal_uint32        priDNS;
+   kal_uint32        secDNS;
+} HlpPppStatusMsgT;
+
+typedef struct
+{
+   kal_uint8            UserId[HLP_MAX_USRID_LEN];
+   kal_uint8            Pswd[HLP_MAX_PSWD_LEN];
+} HlpUsernamePasswdMsgT;
+
+typedef struct
+{
+   hlp_timer_enum       TimerID;
+} HlpTimerExpiredMsgT;
+
+typedef struct
+{
+   kal_uint8*           DataP;   /* point to the first byte of data.    */
+   kal_uint16           Size;    /* The size of data in byte.           */
+   kal_bool             Push;    /* KAL_TRUE, send immediately;             */
+                             /* KAL_FALSE, TCP determine by itself.     */
+   kal_uint8            Sap;     /* Socket of which the data is going to
+                                be sent.                            */
+} HlpTcpbDataSendReqMsgT;
+
+typedef struct
+{
+   HlpDatagramT      SendData;    /* Datagram itself..                  */
+   HlpDatagramAddrT  To;          /* The address of receipent.          */
+   kal_uint8             Sap;         /* SAP to TCB                         */
+} HlpUpbSendDataMsgT;
+
+typedef struct
+{
+   kal_bool              NetworkMode;  /* True: Network Mode, +CRM=2        */
+                                   /* False: Relay Mode,  +CRM=1        */
+} HlpSetNetworkOrRelayModeMsgT;
+
+#ifdef CBP7_EHRPD
+typedef struct {
+   CpBufferT   *dataPtr;
+   kal_uint16   offset;
+   kal_uint16   dataLen;
+} PafHlpFwdDataPktT;
+
+typedef struct
+{
+   kal_uint8       nAppType;
+   kal_uint8       nRLPFlowId;
+   kal_uint8       nRoute;
+   kal_bool        bRohcEnabled;
+   kal_uint8       numRlpFrames;
+   PafHlpFwdDataPktT   rlpFrames[MAX_RLP_FRAMES_PER_IP_PKT];
+} HlpRlpFwdIPDataPktT;
+#endif
+
+#if 1 //!defined (MTK_DEV_MEMORY_OPT)
+#define NUM_HLP_FWD_DATA_IND_ENTRIES     600
+#define NUM_HLP_REV_DATA_IND_ENTRIES     150
+#else
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef RmDataCpBuffDescT HlpRlpFwdDataPktT;
+typedef RmDataCpBuffDescT HlpRlpRevDataPktT;
+
+typedef struct
+{
+   kal_uint8   forceNetworkPref;
+   kal_uint8   forceCSSResp;
+} HlpSysSelPrefSetMsgT;
+
+typedef struct
+{
+   kal_uint8     nDMUV;
+} HlpValDMUVSetMsgT;
+
+typedef struct
+{
+   HlpConnCloseReasonT ConnCloseReason;
+} HlpConnStatusMsgT;
+
+#ifdef HSPD_PRI
+
+#define RSA_PUBLIC_KEY_BIT     (1<<0)
+#define AUTH_SET_BIT           (1<<1)
+#define PKOID_SET_BIT          (1<<2)
+
+typedef enum
+{
+   RSA_PUBLIC_KEY_SET = RSA_PUBLIC_KEY_BIT,
+   AUTH_SET           = AUTH_SET_BIT,
+   SET_BOTH           = RSA_PUBLIC_KEY_BIT|AUTH_SET_BIT,
+   PKOID_SET          = PKOID_SET_BIT
+} RsaSetE;
+
+typedef struct
+{
+   kal_uint8 nPKOID;
+   kal_uint8 nActiveDmuRsaPublicKeyNo;
+   kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+} HlpRSAPublicKeyOrgIdInfoT;
+
+typedef enum
+{
+   /* Set All Params in a Profile */
+   HL_PARM_SET_HSPD_SEG_PROFILE_DATA             = 0,
+   HL_PARM_GET_HSPD_SEG_PROFILE_DATA,
+   HL_PARM_SET_HSPD_SECURE_SEG_PROFILE_DATA,  /* no Gets for Secure Data */
+
+   HL_PARM_SET_HSPD_SECURE_SEG_PROFILE_BYTE_DATA,
+
+   HL_PARM_GET_HSPD_SECURE_SEG_PROFILE_DATA,
+
+   /* Set All HSPD SegData together, that are not part of a Profile */
+   HL_PARM_SET_HSPD_SEG_ALL_DATA,
+   HL_PARM_GET_HSPD_SEG_ALL_DATA,
+
+   /* Init HSPD Db to defaults */
+   HL_PARM_SET_HSPD_SEG_INIT,   /* Init Hspd Data that are not part of a Profile */
+   HL_PARM_SET_HSPD_SEG_PROFILE_INIT, /* Init a Profile, with ProfileId */
+
+   /* Set Individual Params in HSPD SegData, that are not part of a Profile */
+   HL_PARM_SET_ACTIVE_PROFILE,                   /* ActiveProfile */
+   HL_PARM_GET_ACTIVE_PROFILE                    = 10,
+   HL_PARM_SET_NUM_PROFILE,                      /* NumProfiles */
+   HL_PARM_GET_NUM_PROFILE,
+   HL_PARM_SET_RRP_TIMEOUT,                      /* RRPTimeout */
+   HL_PARM_GET_RRP_TIMEOUT,
+   HL_PARM_SET_NUM_REG_RETRIES,                  /* NumRegRetries */
+   HL_PARM_GET_NUM_REG_RETRIES,
+   HL_PARM_SET_REG_BACKOFF,                      /* RRA */
+   HL_PARM_GET_REG_BACKOFF,
+   HL_PARM_SET_IS801_IPADDR,                     /* Is801_IpAddr */
+   HL_PARM_GET_IS801_IPADDR                      = 20,
+   HL_PARM_SET_IS801_PORTNUM,                    /* Is801_PortNum */
+   HL_PARM_GET_IS801_PORTNUM,
+   HL_PARM_SET_IS801_USERID,                     /* Is801_UserId[HLP_MAX_USRID_LEN]*/
+   HL_PARM_GET_IS801_USERID,
+   HL_PARM_SET_IS801_PSWD,                       /* Is801_Pswd[HLP_MAX_PSWD_LEN] */
+   HL_PARM_GET_IS801_PSWD,
+   HL_PARM_SET_IS801_CALLEDNUMBER,               /* Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN] */
+   HL_PARM_GET_IS801_CALLEDNUMBER,
+   HL_PARM_SET_MN_HA_AUTH,                       /* 0-RFC2002, 1-RFC2002bis */
+   HL_PARM_GET_MN_HA_AUTH                        = 30,
+   HL_PARM_SET_MN_HA_AUTH_ALGO,                  /* MN_HA_Auth_Algo */
+   HL_PARM_GET_MN_HA_AUTH_ALGO,
+   HL_PARM_SET_MN_AAA_AUTH_ALGO,                 /* MN_AAA_Auth_Algo */
+   HL_PARM_GET_MN_AAA_AUTH_ALGO,
+   HL_PARM_SET_MN_AUTHENTICATOR,                 /* MN_Authenticator[MN_AUTH_MAX_SIZE] */
+   HL_PARM_GET_MN_AUTHENTICATOR,
+   HL_PARM_SET_ACTIVE_DMURSA_PK,                 /* ActiveDmuRsaPublicKey */
+   HL_PARM_GET_ACTIVE_DMURSA_PK,
+   HL_PARM_SET_NPKOID,                           /* nPKOID */
+   HL_PARM_GET_NPKOID                            = 40,
+   HL_PARM_SET_SIP_NAI,                          /* SIP_NAI[HLP_MN_NAI_MAX_SIZE] */
+   HL_PARM_GET_SIP_NAI,
+   HL_PARM_SET_SIP_DUN_NAI,                      /* SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE] */
+   HL_PARM_GET_SIP_DUN_NAI,
+   HL_PARM_SET_AN_NAI,                           /* AN_NAI[HLP_MN_NAI_MAX_SIZE] */
+   HL_PARM_GET_AN_NAI,
+   HL_PARM_SET_DORMANT_HANDOFF_OPTSET,           /* DormantHandoffOptSet */
+   HL_PARM_GET_DORMANT_HANDOFF_OPTSET,
+   HL_PARM_SET_DATA_SCRM_ENABLED,                /* DataScrmEnabled */
+   HL_PARM_GET_DATA_SCRM_ENABLED                 = 50,
+   HL_PARM_SET_DATA_TRTL_ENABLED,                /* DataTrtlEnabled */
+   HL_PARM_GET_DATA_TRTL_ENABLED,
+   HL_PARM_SET_PREFRC,                           /* PrefRc */
+   HL_PARM_GET_PREFRC,
+   HL_PARM_SET_DNS_PRI_IP_ADDR,
+   HL_PARM_GET_DNS_PRI_IP_ADDR,
+   HL_PARM_SET_DNS_SEC_IP_ADDR,
+   HL_PARM_GET_DNS_SEC_IP_ADDR,
+   HL_PARM_GET_DNS_IP_ADDR,
+   HL_PARM_SET_DNS_IP_ADDR                       = 60,
+   HL_PARM_SET_MIP_MODE,
+   HL_PARM_GET_MIP_MODE,
+
+   /* Set Individual Params in HSPD Secure SegData, that are not part of a Profile */
+   HL_PARM_SET_SIP_STRING_PASSWORD,
+   HL_PARM_GET_SIP_STRING_PASSWORD,
+   HL_PARM_SET_AN_PASSWORD,
+   HL_PARM_GET_AN_PASSWORD,
+   HL_PARM_SET_AN_BINARY_PASSWORD,
+   HL_PARM_SET_SIP_BINARY_PASSWORD,
+   HL_PARM_SET_PACKET_DIAL_STRING,
+   HL_PARM_GET_PACKET_DIAL_STRING                = 70,
+   HL_PARM_SET_VJ_COMPRESSION_ENABLE,
+   HL_PARM_GET_VJ_COMPRESSION_ENABLE,
+   HL_PARM_SET_MIP_STRING_PASSWORD,
+   HL_PARM_GET_MIP_STRING_PASSWORD,
+   HL_PARM_SET_MIP_BINARY_PASSWORD,
+   HL_PARM_GET_MIP_BINARY_PASSWORD,
+   HL_PARM_SET_QNC_ENABLED,
+   HL_PARM_GET_QNC_ENABLED,
+   HL_PARM_SET_MDR_MODE_ENABLED,
+   HL_PARM_GET_MDR_MODE_ENABLED                  = 80,
+   HL_PARM_SECURE_PROFILE_DATA_INIT,
+   HL_PARM_GET_SIP_BINARY_PASSWORD,
+#ifdef CBP7_EHRPD
+   HL_PARM_SET_AKA_PASSWORD                      = 83,
+   HL_PARM_GET_AKA_PASSWORD,
+   HL_PARM_SET_AKA_RROFILEDATA,
+   HL_PARM_GET_AKA_PROFILEDATA,
+#endif
+   HL_PARM_GET_HSPD_LOCK                         = 87,
+   HL_PARM_SET_HSPD_LOCK,
+   HL_PARM_SET_HSPD_LOCK_CODE,
+   HL_PARM_SET_DATA_AUTO_PACKET_DETECTION,
+   HL_PARM_GET_DATA_AUTO_PACKET_DETECTION,
+   HL_PARM_SET_DATA_SO,
+   HL_PARM_GET_DATA_SO,
+   HL_PARM_SET_MN_NAI,
+   HL_PARM_GET_MN_NAI,
+   HL_PARM_SET_MN_DUN_NAI,
+   HL_PARM_GET_MN_DUN_NAI,
+   HL_PARM_SET_MN_HA_SPI_ENABLE,
+   HL_PARM_GET_MN_HA_SPI_ENABLE,
+   HL_PARM_SET_MN_HA_SPI,
+   HL_PARM_GET_MN_HA_SPI,
+   HL_PARM_SET_MN_AAA_SPI_ENABLE,
+   HL_PARM_GET_MN_AAA_SPI_ENABLE,
+   HL_PARM_SET_MN_AAA_SPI,
+   HL_PARM_GET_MN_AAA_SPI,
+   HL_PARM_SET_MN_REVERSE_TUNNELING,
+   HL_PARM_GET_MN_REVERSE_TUNNELING,
+   HL_PARM_SET_MN_HOME_IP_ADDRESS,
+   HL_PARM_GET_MN_HOME_IP_ADDRESS,
+   HL_PARM_SET_HOME_AGENT_PRIMARY_IP_ADDRESS,
+   HL_PARM_GET_HOME_AGENT_PRIMARY_IP_ADDRESS,
+   HL_PARM_SET_HOME_AGENT_SECONDARY_IP_ADDRESS,
+   HL_PARM_GET_HOME_AGENT_SECONDARY_IP_ADDRESS,
+
+   HL_PARM_SET_HSPD_NETWORKMODE,
+   HL_PARM_GET_HSPD_NETWORKMODE,
+
+   HL_PARM_SET_HSPD_DORMANT_TIMER_MODE,
+   HL_PARM_GET_HSPD_DORMANT_TIMER_MODE,
+
+   HL_PARM_SET_MIP_DE_REG_RETRIES                = 118,
+   HL_PARM_GET_MIP_DE_REG_RETRIES,
+   HL_PARM_SET_MIP_RE_REG_ONLYIF_TRAFFIC,
+   HL_PARM_GET_MIP_RE_REG_ONLYIF_TRAFFIC,
+   HL_PARM_SET_MIP_NAI_ENABLE,
+   HL_PARM_GET_MIP_NAI_ENABLE,
+
+   HL_PARM_SET_DATA_DO_TO_1X_ENABLE,
+   HL_PARM_GET_DATA_DO_TO_1X_ENABLE,
+
+   HL_PARM_SET_DATA_PPP_UM_CONFIG                = 126,
+   HL_PARM_GET_DATA_PPP_UM_CONFIG,
+   HL_PARM_SET_DATA_PPP_RM_CONFIG,
+   HL_PARM_GET_DATA_PPP_RM_CONFIG,
+   HL_PARM_SET_DATA_TCP_CONFIG,
+   HL_PARM_GET_DATA_TCP_CONFIG,
+
+   HL_PARM_SET_DO_RETRY_TIMER                    = 132,
+   HL_PARM_GET_DO_RETRY_TIMER,
+
+#ifdef CBP7_EHRPD
+   HL_PARM_SET_EHRPD_TEST_MODE                   = 148,
+   HL_PARM_GET_EHRPD_TEST_MODE,
+#endif
+
+   HL_PARM_SET_PROFILE_VALID                     = 150,
+   HL_PARM_GET_PROFILE_VALID,
+   HL_PARM_VAL_AT_SET_HSPD_NETWORKMODE,
+   HL_PARM_VAL_AT_SET_AN_NAI,
+   HL_PARM_VAL_AT_GET_AN_NAI,
+
+   HL_PARM_OPERATION_ID_END_LIST
+} HlpParmOperationId;
+
+typedef enum
+{
+   HL_PARM_MIN_VALUE,
+   HL_PARM_MAX_VALUE,
+   HL_PARM_DEFAULT_VALUE,
+   HL_PARM_CUSTOM_VALUE,
+   HL_PARM_OP_TYPE_LIST_END
+} HlpParmOperationType;
+
+typedef enum
+{
+   HL_PARM_OPERATION_SUCCESS,
+   HL_PARM_OPERATION_FAIL_READ_NOT_ALLOWED,
+   HL_PARM_OPERATION_FAIL_WRITE_NOT_ALLOWED,
+   HL_PARM_OPERATION_NOT_ALLOWED_IN_HL_STATE,
+   HL_PARM_OPERATION_FAIL_INVALID_PTR,
+   HL_PARM_OPERATION_FAIL_INVALID_LENGTH,
+   HL_PARM_OPERATION_GENERAL_FAILURE,
+   HL_PARM_OPERATION_NO_CHANGE_IN_VALUE,
+   HL_PARM_OPERATION_FAIL_VALUE_OUT_OF_RANGE,
+   HL_PARM_OPERATION_PARAMETER_NOT_SUPPORTED,
+   HL_PARM_OPERATION_INTERFACE_NOT_SUPPORTED,
+   HL_PARM_OPERATION_FAIL_OP_TYPE_NOT_SUPPORTED,
+   HL_PARM_OPERATION_FAIL_DEFAULT_NOT_DEFINED,
+   HL_PARM_OPERATION_FAIL_DEFAULT_NOT_SUPPORTED_FOR_PARM,
+   HL_PARM_OPERATION_RESULT_END_LIST
+} HlpParmAccessResultCode;
+
+typedef enum
+{
+   NOT_CONNECTED,
+   DO_CONNECTING,
+   DO_CONNECTED,
+   RTT_CONNECTING,
+   RTT_CONNECTED
+} ConnStateT;
+
+typedef struct
+{
+   ExeRspMsgT resp;
+   kal_uint8   SMS_Over_IP_Networks_Indication;
+   kal_uint8   SigComp;
+   kal_uint8   ImsDomain[72];
+   kal_uint8   AkaPassword[72];
+   kal_uint16  SipT1Timer_ims;
+   kal_uint16  SipTFTimer_ims;
+   kal_uint16  SipT2Timer_ims;
+   kal_uint16  SipPcscfPort;
+} HlpSmsImsEtsCfgSetT;
+
+typedef struct
+{
+   kal_uint8   SMS_Over_IP_Networks_Indication;
+   kal_uint8   SigComp;
+   kal_uint8   ImsDomain[72];
+   kal_uint8   AkaPassword[72];
+   kal_uint16  SipT1Timer_ims;
+   kal_uint16  SipTFTimer_ims;
+   kal_uint16  SipT2Timer_ims;
+   kal_uint16  SipPcscfPort;
+} HlpSmsImsEtsCfgGetT;
+
+/* The following structures are to be obsolete
+   but keep them for backword compatible now
+typedef   struct
+{
+   ExeRspMsgT resp;
+   kal_uint16  restartTimer;
+   kal_uint8   lcpReqTry;
+   kal_uint8   lcpNakTry;
+   kal_uint8   lcpTermTry;
+   kal_uint8   authRetry;
+   kal_uint8   ipcpReqTry;
+   kal_uint8   ipcpNakTry;
+   kal_uint8   ipcpTermTry;
+   kal_uint8   ipcpCompression;
+}   HlpPppUmEtsCfgSetT;
+
+typedef   struct
+{
+   kal_uint8 result;
+}   HlpPppUmEtsCfgSetRespT;
+
+typedef   struct
+{
+   kal_uint8   result;
+   kal_uint16  restartTimer;
+   kal_uint8   lcpReqTry;
+   kal_uint8   lcpNakTry;
+   kal_uint8   lcpTermTry;
+   kal_uint8   authRetry;
+   kal_uint8   ipcpReqTry;
+   kal_uint8   ipcpNakTry;
+   kal_uint8   ipcpTermTry;
+   kal_uint8   ipcpCompression;
+}   HlpPppUmEtsCfgGetT;
+
+typedef   struct
+{
+   kal_uint16  restartTimer;
+   kal_uint8   lcpReqTry;
+   kal_uint8   lcpNakTry;
+   kal_uint8   lcpTermTry;
+   kal_uint8   authRetry;
+   kal_uint8   ipcpReqTry;
+   kal_uint8   ipcpNakTry;
+   kal_uint8   ipcpTermTry;
+   kal_uint8   ipcpCompression;
+}   HlpPppUmEtsCfgT;
+   The above structures are to be obsolete
+   but keep them for backword compatible now */
+
+
+
+typedef struct
+{
+   kal_uint32  RxBytes;
+   kal_uint32  RxPackets;
+   kal_uint32  BadRxPackets;
+   kal_uint32  TxBytes;
+   kal_uint32  TxPackets;
+   kal_uint64  TotalRxBytes;
+   kal_uint64  TotalRxPackets;
+   kal_uint64  TotalBadRxPackets;
+   kal_uint64  TotalTxBytes;
+   kal_uint64  TotalTxPackets;
+} IPCounterT;
+
+typedef struct
+{
+   kal_uint8   lcpReqTries;
+   kal_uint8   lcpNakTries;
+   kal_uint16  lcpRestartTimer;
+   kal_uint8   lcpTermTries;
+   kal_uint16  lcpTermTimer;
+   kal_uint8   authRetries;
+   kal_uint16  authTimer;
+   kal_uint8   ncpReqTries;
+   kal_uint8   ncpNakTries;
+   kal_uint16  ncpReStrTimer;
+   kal_uint8   ncpTermTries;
+   kal_uint16  ncpTermTimer;
+} HlpPppUmCfg_APIStruct;
+
+typedef struct
+{
+   kal_bool    pppKeepAlive;
+   kal_bool    pppDetect;
+   kal_uint8   lcpReqTries;
+   kal_uint8   lcpNakTries;
+} HlpPppRmCfg_APIStruct;
+
+typedef struct
+{
+   kal_uint16  tcpMtu;
+} HlpTcpCfgSet_APIStruct;
+
+typedef struct
+{
+   kal_uint16  tcpMtu;
+   kal_uint16  tcpWinSize_1XRTT;
+   kal_uint16  tcpWinSize_EVDO;
+} HlpTcpCfg_APIStruct;
+
+typedef struct{
+   kal_uint8 ProfileId;
+   kal_uint8 NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpHspdMNNAI_APIStruct;
+
+typedef struct{
+   kal_uint8 ProfileId;
+   kal_uint8 MN_REV_TUNNELING;
+} HlpHspdRevTunneling_APIStruct;
+
+typedef struct{
+   kal_uint8  ProfileId;
+   kal_uint32 SPI;
+} HlpHspdMNSPI_APIStruct;
+
+typedef struct{
+   kal_uint8 ProfileId;
+   kal_bool  SPI_Enable;
+} HlpHspdMNSPIEnable_APIStruct;
+
+typedef struct{
+   kal_uint8 ProfileId;
+   kal_uint32 IPAddress;
+} HlpHspdProfileIPAddress_APIStruct;
+
+typedef struct{
+   kal_uint8 ProfileId;
+} HlpHspdProfileParmGet_APIStruct;
+
+typedef struct{
+   kal_uint8    ProfileId;
+   kal_bool     Profile_Valid;
+   kal_uint32   MN_HOME_IP_ADDR;
+   kal_uint32   HA_PRI_IP_ADDR;
+   kal_uint32   HA_SEC_IP_ADDR;
+   kal_uint8    MN_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    MN_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    MN_REV_TUNNELING;
+   kal_bool     bMN_HA_SPI_Enable;
+   kal_uint32   MN_HA_SPI;
+   kal_bool     bMN_AAA_SPI_Enable;
+   kal_uint32   MN_AAA_SPI;
+} HlpProfileData_APIStruct;
+
+typedef struct
+{
+   kal_uint8     ProfileId;
+   kal_bool      Profile_Valid;
+   kal_uint8     MN_AAA_PASSWORD_LEN;
+   kal_uint8     MN_AAA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP AAA Shared Secret*/
+   kal_uint8     MN_HA_PASSWORD_LEN;
+   kal_uint8     MN_HA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP HA Shared Secret  */
+} HlpSecureProfileData_APIStruct;
+
+typedef struct
+{
+   kal_uint8   ProfileId;   /* Init the data to defaults, for this ProfileId */
+} HlpInitHspdProfileData_APIStruct;
+
+typedef struct
+{
+   kal_uint8   ProfileId;   /* Init the data to defaults, for this ProfileId */
+} HlpGetHspdProfileData_APIStruct;
+
+typedef struct
+{
+
+   /* HSPD Seg Data, that are not part of a profile */
+   /*===============================================*/
+   kal_uint8    RRPTimeout;      /* RRP MIP Registration timeout        */
+   kal_uint8    NumRegRetries;   /* RRP MIP Registration Retry Attempts */
+   kal_uint16   RRA;             /* Pre Re-registration backoff         */
+   kal_uint32   Is801_IpAddr;
+   kal_uint16   Is801_PortNum;
+   kal_uint8    Is801_UserId[HLP_MAX_USRID_LEN];
+   kal_uint8    Is801_Pswd[HLP_MAX_PSWD_LEN];
+   kal_uint8    Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN];
+
+   kal_uint8    MN_HA_AUTH;  /* 0-RFC2002, 1-RFC2002bis, 2-bypassHA */
+   kal_uint8    MN_HA_Auth_Algo;
+   kal_uint8    MN_AAA_Auth_Algo;
+   kal_uint8    MN_Authenticator[MN_AUTH_MAX_SIZE];
+   kal_uint8    ActiveDmuRsaPublicKey;   /* 0-TestKey, 1-CommercialKey */
+   kal_uint8    nPKOID;
+
+   kal_uint8    SIP_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+   kal_uint8    AN_NAI[HLP_MN_NAI_MAX_SIZE];
+
+   kal_uint8    DormantHandoffOptSet;  /* 0-Disabled, 1-Enabled */
+   kal_uint8    DataScrmEnabled;  /* Supp Chan Supported */
+   kal_uint8    DataTrtlEnabled;   /* Slow Down data at high CPU utilization */
+   kal_uint8    PrefRc; /* Preferred Radio Cfg. Default-RC3 */
+   kal_uint32   DNS_PRI_IP_ADDR;
+   kal_uint32   DNS_SEC_IP_ADDR;
+   kal_uint8    MIPMode;
+
+   kal_uint32   ActiveProfile;
+   kal_uint8    NumProfiles;
+   kal_uint8    VJCompEnabled;
+   /* HSPD Secure Seg Data, that are not part of a profile */
+   /*======================================================*/
+   /* Only Set applies, no Gets for Secure Data */
+   kal_uint8    SIP_PASSWORD[HLP_MAX_PSWD_LEN]; /* Simple IP User Password   */
+   kal_uint8    AN_PASSWORD[HLP_MAX_PSWD_LEN]; /* AN Shared Secret*/
+} HlpHspdSegData_APIStruct;
+
+typedef struct
+{
+  kal_uint8 RRPTimeout;
+} HlpRrpTimeout_APIStruct;
+
+typedef struct
+{
+  kal_uint8 NumRegRetries;
+} HlpNumRegRetries_APIStruct;
+
+typedef struct
+{
+  kal_uint8 NumDeRegRetries;
+} HlpDeRegRetries_APIStruct;
+
+typedef struct
+{
+  kal_bool ReRegOnlyIfTraffic;
+} HlpReRegOnlyIfTraffic_APIStruct;
+
+typedef struct
+{
+  kal_bool MipNaiEnabled;
+} HlpMipNaiEnable_APIStruct;
+
+typedef struct
+{
+  kal_uint16 RRA;
+}  HlpReRegBackoff_APIStruct;
+
+typedef struct
+{
+   kal_uint32   Is801_IpAddr;
+} HlpIs801IpAddr_APIStruct;
+
+typedef   struct
+{
+   kal_uint16   Is801_PortNum;
+}    HlpIs801PortNum_APIStruct;
+
+typedef struct
+{
+   kal_uint8    Is801_UserId[HLP_MAX_USRID_LEN];
+} HlpIs801UserId_APIStruct;
+
+typedef struct
+{
+   kal_uint8    Is801_Pswd[HLP_MAX_PSWD_LEN];
+} HlpIs801Pswd_APIStruct;
+
+typedef struct
+{
+   kal_uint8    Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN];
+} HlpIs801CalledNumber_APIStruct;
+
+typedef struct
+{
+   kal_uint8    MN_HA_AUTH;  /* 0-RFC2002, 1-RFC2002bis, 2-bypassHA */
+} HlpMNHAAUTH_APIStruct;
+typedef  struct
+{
+   kal_uint8    MN_HA_Auth_Algo;
+} HlpMNHAAuthAlgo_APIStruct;
+
+typedef struct
+{
+   kal_uint8    MN_AAA_Auth_Algo;
+} HlpMNAAAAuthAlgo_APIStruct;
+
+typedef struct
+{
+   kal_uint8    MN_Authenticator[MN_AUTH_MAX_SIZE];
+}  HlpMNAuthenticator_APIStruct;
+
+typedef struct
+{
+   kal_uint8    ActiveDmuRsaPublicKey;   /* 0-TestKey, 1-CommercialKey */
+} HlpActiveDmuRsaPublicKey_APIStruct;
+
+typedef struct
+{
+   kal_uint8    nPKOID;
+} HlpPKOID_APIStruct;
+
+typedef struct
+{
+   kal_uint8    SIP_NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpSIPNAI_APIStruct;
+
+typedef struct
+{
+   kal_uint8    SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpSIPDUNNAI_APIStruct;
+
+typedef struct
+{
+   kal_uint8    AN_NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpANNAI_APIStruct;
+
+typedef struct
+{
+   kal_uint8    DormantHandoffOptSet;  /* 0-Disabled, 1-Enabled */
+} HlpDormantHandoffOptSet_APIStruct;
+
+typedef struct
+{
+   kal_uint8    DataScrmEnabled;   /* Supp Chan Supported */
+} HlpDataScrmEnabled_APIStruct;
+
+typedef struct
+{
+   kal_uint8    DataTrtlEnabled;   /* Slow Down data at high CPU utilization */
+} HlpDataTrtlEnabled_APIStruct;
+
+typedef struct
+{
+   kal_uint8    PrefRc; /* Preferred Radio Cfg. Default-RC3 */
+} HlpPrefRc_APIStruct;
+
+typedef struct
+{
+   kal_uint8    VJCompressionEnabled;
+}  HlpVJCompressionEnabled_APIStruct;
+
+typedef struct
+{
+   kal_uint8    DialString[HLP_NUM_DIAL_STRING_DIGITS];
+}  HlpDialString_APIStruct;
+
+typedef struct
+{
+   kal_bool     QNC_Enabled;
+} HlpQncEnabled_APIStruct;
+
+typedef struct
+{
+   kal_uint8    MDR_Mode;
+}  HlpMdrMode_APIStruct;
+
+typedef struct
+{
+   kal_bool DoTo1X_Enabled;
+}  HlpDoTo1XEnabled_APIStruct;
+
+typedef  struct
+{
+   kal_uint32   DNS_PRI_IP_ADDR;
+}  HlpDNSPRIIPADDR_APIStruct;
+
+typedef  struct
+{
+   kal_uint32   DNS_SEC_IP_ADDR;
+}  HlpDNSSECIPADDR_APIStruct;
+
+typedef  struct
+{
+   HlpDNSPRIIPADDR_APIStruct PriIpAddr;
+   HlpDNSSECIPADDR_APIStruct SecIpAddr;
+}   HlpDNSIPADDR_APIStruct;
+
+typedef  struct
+{
+  kal_uint32 ActiveProfile;
+}  HlpActiveProfile_APIStruct;
+
+typedef   struct
+{
+  kal_uint8    ProfileId;
+  kal_bool     Profile_Valid;
+}  HlpProfileValid_APIStruct;
+
+typedef  struct
+{
+   kal_uint8    NumProfiles;
+}  HlpNumProfiles_APIStruct;
+
+typedef struct
+{
+   kal_uint8    MipMode;
+}  HlpMipMode_APIStruct;
+
+typedef struct
+{
+   kal_uint8    SIP_PASSWORD[HLP_MAX_PSWD_LEN];
+}  HlpSipPassword_APIStruct;
+
+typedef  struct
+{
+   kal_uint8    AN_PASSWORD[HLP_MAX_PSWD_LEN];
+}  HlpAnPassword_APIStruct;
+
+typedef struct
+{
+   kal_uint8    AN_PASSWORD_LEN;
+   kal_uint8    AN_PASSWORD[HLP_MAX_PSWD_LEN];
+}  HlpAnBinaryPassword_APIStruct;
+
+typedef struct
+{
+   kal_uint8    ProfileId;
+   kal_uint8    MN_AAA_PASSWORD_LEN;
+   kal_uint8    MN_AAA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+   kal_uint8    MN_HA_PASSWORD_LEN;
+   kal_uint8    MN_HA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+} HlpMIPPasswordHex_APIStruct;
+
+typedef struct
+{
+   kal_uint8    ProfileId;
+   kal_uint8    MN_HA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+   kal_uint8    MN_AAA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+}    HlpMIPPasswordString_APIStruct;
+
+typedef   struct
+{
+   kal_uint8    SIP_PASSWORD_LEN;
+   kal_uint8    SIP_PASSWORD[HLP_MAX_PSWD_LEN];
+}  HlpSIPPasswordHex_APIStruct;
+
+typedef  struct
+{
+   kal_uint8    ProfileId;   /* Init the data to defaults, for this ProfileId */
+}  HlpSecureSegInit_APIStruct;
+
+typedef struct
+{
+    kal_bool HspdLocked;
+} HlpHspdLockGet_APIStruct;
+
+typedef struct
+{
+    kal_uint16  LockCode;
+    kal_bool    Lock;
+} HlpHspdLockSet_APIStruct;
+
+typedef struct
+{
+    kal_uint16  CurrentLockCode;
+    kal_uint16  NewLockCode;
+} HlpHspdLockCode_APIStruct;
+
+typedef struct
+{
+    kal_bool Enable; /*   KAL_TRUE: Scan the serial link for PPP packets
+           Default is KAL_FALSE: Wait for ATD #777*/
+} HlpDataAutoPacketDetection_APIStruct;
+
+typedef  struct
+{
+    kal_bool HspdNetworkMode;
+} HlpHspdNetworkMode_APIStruct;
+
+typedef  struct
+{
+   kal_uint16 T_Dormancy;
+   kal_uint16 T_HRPD_Search;
+   kal_uint16 T_Rapid_Dormancy;
+   kal_uint16 T_ResDef_Dormancy;
+#ifdef MTK_CBP
+   /* refer to DormParmCheckT enum
+    * bit3: T_ResDef_Dormancy; bit2: T_Rapid_Dormancy; bit1: T_HRPD_Search; bit0: T_Dormancy.
+    * if 1, need check
+    */
+   DormParmCheckT Check_Flag;
+#endif
+}   HlpDormantTimerData_APIStruct;
+
+typedef  struct
+{
+   kal_uint16 T_DO_Retry;
+} HlpDoRetryTimerData_APIStruct;
+
+typedef  struct {
+   kal_uint16 T_Dormancy;
+} HlpValCtaUpdateReqMsgT;
+
+typedef enum
+{
+  HLP_DATA_SO_PRE701=0,
+  HLP_DATA_SO_QP=1,
+  HLP_DATA_SO_IS701=2
+} HlpDataSOType;
+
+typedef  struct
+{
+  HlpDataSOType SOSetType;
+}  HlpDataSO_APIStruct;
+
+typedef struct
+{
+   HlpParmOperationId ParmId;
+   kal_bool InProgress;
+   kal_bool RspNeeded;
+   ExeRspMsgT  RspInfo;
+   kal_int16       RegId;
+} HlpSecureRspType;
+
+typedef struct {
+   kal_uint8 N_DIGITS;
+   kal_uint8 MDN[OTA_MAX_MDN_DIGITS];
+} HlpPswMDNUpdatedMsgT;
+
+typedef struct
+{
+   kal_bool TriggeredByCs;
+} HlpPswRsvasAbortReqMsgT;
+
+#define MAX_CHAP_DATA_LEN 16
+
+typedef   struct{
+   kal_uint8 ChapId;
+   kal_uint8 ChapLen;
+   kal_uint8 ChapData[MAX_CHAP_DATA_LEN];
+}  HlpUimAccessChapTestMsgT;
+
+typedef   struct {
+   kal_uint16 T_Dormancy;
+   kal_uint16 T_HRPD_Search;
+   kal_uint16 T_Rapid_Dormancy;
+   kal_uint16 T_ResDef_Dormancy;
+   DormParmCheckT Check_Flag;
+}  HlpDormancyTimersSetMsgT;
+
+typedef   struct {
+   kal_uint16 T_DO_Retry;
+}  HlpDORetryTimersSetMsgT;
+
+typedef HlpSecureRspType HlpSegRspType;
+#endif
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+   kal_uint8    AKA_PASSWORD[HLP_MAX_PSWD_LEN];
+} HlpAkaPassword_APIStruct;
+
+typedef struct
+{
+   HlpHspdAkaProfileDataT    AkaProfileData;
+} HlpAkaProfileData_APIStruct;
+
+typedef enum
+{
+   AKAAuth_Success,
+   AKAAuth_AUTNFailure,
+   AKAAuth_SQNSyncFailure,
+   AKAAuth_RESInvalid,
+   AKAAuth_CKInvalid,
+   AKAAuth_IKInvalid,
+   AKAAuth_UnknowFailure
+#if EAP_AKA_PRIME
+   ,
+   AKAAuth_KDFIputInvalid,
+   AKAAuth_KDFInvalid
+#endif
+} EapAkaAuthResultT;
+
+typedef struct
+{
+   EapAkaAuthResultT authResult;
+} HlpSecAkaAuthRspMsgT;
+#endif
+
+typedef struct
+{
+   kal_bool bEncryptDecryptResult;
+} HlpSecAesCryptRspMsgT;
+
+typedef   struct
+{
+   ExeRspMsgT  RspInfo;
+   kal_uint8 FlowId;
+   HlpIp6AddrTypeE AddrType;
+   kal_uint16 LocalAddrPort;
+   kal_uint16 PeerAddrPort;
+   kal_uint32 PeerAddrIp[4];
+}  HlpIp6TcpConnectionOpenMsgT;
+
+typedef struct
+{
+   kal_uint8 Sap;
+}  HlpTcpConnectionOpenRspMsgT;
+
+typedef struct
+{
+   ExeRspMsgT  RspInfo;
+   kal_uint16 LocalAddrPort;
+   kal_uint16 PeerAddrPort;
+   kal_uint32 PeerAddrIp;
+}  HlpIp4TcpConnectionOpenMsgT;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+   kal_bool eEHRPD;
+} HlpImsEHRPDAttriMsgT;
+
+/* IP6 related Begin */
+
+typedef struct
+{
+   ExeRspMsgT  RspInfo;
+   kal_uint8 FlowId;
+   HlpIp6AddrTypeE AddrType;
+   kal_uint16 LocalAddrPort;
+   kal_uint16 PeerAddrPort;
+   kal_uint32 PeerAddrIp[4];
+   kal_int32  PayloadSize;
+} HlpIp6UdpConnectionOpenMsgT;
+
+typedef struct
+{
+   kal_uint8 Sap;
+} HlpIp6UdpConnectionOpenRspMsgT;
+
+typedef struct
+{
+   kal_uint8 Sap;
+} HlpIp6UdpConnectionCloseMsgT;
+
+typedef struct
+{
+   kal_uint8 Sap;
+} HlpIp6TcpConnectionCloseMsgT;
+
+/* IP6 related End */
+
+
+typedef struct
+{
+   kal_bool bRevRohcOnRlpFlow;
+   HlpProtocolIdentifierT  RevProtcolID;
+   RevRohcProtocolParmsT   RevRohcParms;
+   kal_bool bFwdRohcOnRlpFlow;
+   HlpProtocolIdentifierT  FwdProtcolID;
+   FwdRohcProtocolParmsT   FwdRohcParms;
+} HlpRlpFlowProtocolInfoT;
+
+typedef struct
+{
+   HlpRlpFlowProtocolInfoT RlpFlowProtocolInfo[MAX_HLP_FLOW_SUPPORTED];
+} HlpRlpFlowProtocolInfoMsgT;
+
+typedef struct
+{
+   kal_uint8  curRoute;
+} HlpRlpRouteChangedMsgT;
+#endif
+
+typedef enum
+{
+   HLP_PPP_ROUTE_DEFAULT,
+   HLP_PPP_ROUTE_NDIS
+} HlpPppRouteTypeE;
+
+typedef struct
+{
+   kal_uint8 RouteType;
+} HlpPppRouteTypeSetMsgT;
+
+typedef enum
+{
+   PATH_HDLC,
+   PATH_IP,
+   PATH_ROHC,
+   PATH_IP_WITH_PDNMUX
+} HlpRlpDataPathT;
+
+typedef struct
+{
+   NetworkT   network;
+   SvcStatusT svcStatus;
+} HlpSvcStatusMsgT;
+
+typedef enum
+{
+  CONN_SUSPEND,
+  CONN_RESUME,
+  CONN_DISABLE,
+  CONN_RELEASE,
+  CONN_RESET
+} ConnCmdT;
+
+typedef struct
+{
+  ConnCmdT   dataCmd;
+} HlpDataConnectionCmdT;
+
+typedef enum
+{
+   PowerUp,
+   HybridRegistration,
+   RTTOnlyRegistration,
+   TriggerPDRegistration,
+   DefaultAttach,
+   SetIPv6Address,
+   DedicateAttach,
+   DetachAll,
+   SendPING_IPv4,
+   SendPING_IPv6
+} ActionT;
+
+typedef struct
+{
+  ActionT    myAction;
+  kal_uint32     Ipv4Src;
+  kal_uint32     Ipv4Dst;
+  kal_uint32     Ipv6Src[4];
+  kal_uint32     Ipv6Dst[4];
+  kal_uint8      PDNid;
+  kal_uint8      PDNtype;
+  kal_uint8      AttachType;
+  kal_uint8      APNstring[16];
+} HlpTestBrowserConnectMsgT;
+
+typedef struct
+{
+   kal_bool bPowerUp;
+} HlpPowerReqMsgT;
+
+
+typedef enum
+{
+   HLP_DOANAUTH_CHINATELECOM,
+   HLP_DOANAUTH_INDONESIASMART,
+   HLP_DOANAUTH_CARRIER_MAX
+} HlpDOANAuthT;
+
+typedef struct
+{
+   HlpDOANAuthT   DOANAuthAlgo;
+} HlpDOANAuthAlgoSetMsgT;
+
+typedef struct
+{
+  kal_uint32  SrcAddr;
+  kal_uint32  DstAddress;
+  kal_uint32  Length;
+  kal_uint8   Data[520];
+} HlpValPingReqMsgT;
+
+typedef struct
+{
+  kal_uint8     Apn[100]; /* APN of PDN which need update its inactivity timer */
+} HlpValUpdatePdnInactivityTimerT;
+
+typedef enum
+{
+    HLP_VAL_SET_PCMT_MODE = 0,
+    HLP_VAL_READ_PCMT_MODE,
+    HLP_VAL_PCMT_INVALID_MODE = 255
+}HlpValPcmtModeT;
+
+typedef struct
+{
+    ExeRspMsgT      RspInfo;
+    HlpValPcmtModeT mode;
+    kal_bool            pcmtIratSet;
+    kal_uint32          pcmtIratValue;
+    kal_bool            pcmtEhrpdSet;
+    kal_uint32          pcmtEhrpdValue;
+}  HlpValPcmtParaMsgT;
+
+typedef struct
+{
+  kal_uint8 AppSubType;
+} HlpPppDataReqMsgT;
+
+typedef enum
+{
+   HLP_UT_CONFIG_PARAM_1X_PS_ORIG_FAIL_REASON,
+   HLP_UT_CONFIG_PARAM_CONTINUE_PROCESS_RATDM_UL_DATA,
+   HLP_UT_CONFIG_PARAM_MCC,
+   HLP_UT_CONFIG_PARAM_COMPLETE_PROCESS_DL_DATA,
+   HLP_UT_CONFIG_PARAM_SBP_ID,
+   HLP_UT_CONFIG_PARAM_MAX
+}HlpUtConfigParamT;
+
+typedef struct
+{
+    kal_uint32 LocalIPAddr;
+    kal_uint32 PriDNSAddr;
+	kal_uint32 RemoteIPAddr;
+    kal_uint32 SecDNSAddr;
+    kal_uint16 IPv4MTU;
+}NwAppliedParm1xHRPDT;
+
+typedef struct
+{
+   kal_uint8		 Cid;							   /*context id of PDP*/
+   NetworkPrefT	     NetworkPref;
+   NspeAppT		     AppType;
+   DialingInfoT      CallInfo;
+   kal_uint16		 InactivityTmr; 				   /* number of seconds for 1X RLP only  */
+   kal_bool			 ReleaseTchWhenFallback;		   /* MIP to SIP fallback, release TCH	 */
+   HlpPppRouteTypeE  RouteType;
+}HlpPppConnectReqMsgT;
+
+typedef struct
+{
+   kal_uint8			 	Cid; /*context id of PDP*/
+   DataConnErrCodeT     ErrCode;
+   NwAppliedParm1xHRPDT Parm;
+}HlpPppConnectCnfMsgT;
+
+typedef struct
+{
+   kal_uint8			 	Cid; /*context id of PDP*/
+}HlpPppDisconnectReqMsgT;
+
+typedef struct
+{
+   kal_uint8			 	Cid; /*context id of PDP*/
+}HlpPppUpdateReqMsgT;
+
+typedef struct
+{
+   kal_uint8			 	Cid; /*context id of PDP*/
+}HlpPppDisconnectCnfMsgT;
+
+typedef enum
+{
+   DISCONNECT_BY_NW,
+   DISCONNECT_BY_ME    
+}DataDiscCauseT;
+
+typedef struct
+{
+   kal_uint8			   Cid; /*context id of PDP*/
+   DataDiscCauseT      Cause;
+}HlpPppDisconnectIndMsgT;
+
+typedef struct
+{
+   kal_uint8				 Cid; /*context id of PDP*/
+   NwAppliedParm1xHRPDT  Parm;
+}HlpPppModifyIndMsgT;
+
+/*---------------------------------------------------------------
+*  Declare global variables
+*----------------------------------------------------------------*/
+extern kal_bool           PppFilterIpMux;
+
+extern MuxInfo        FilterMuxInfo;
+/*---------------------------------------------------------------
+*  Declare global function prototypes
+*----------------------------------------------------------------*/
+
+extern void PppHaDecode0Lisr (kal_uint32 irq_id);
+extern void PppHaDecode1Lisr (kal_uint32 irq_id);
+extern void PppHaEncode0Lisr (kal_uint32 irq_id);
+extern void PppHaEncode1Lisr (kal_uint32 irq_id);
+extern void  HlpSetInternetPdnId(kal_uint8 PdnId);
+
+RmDataQBuffStatusE RmWrite(RmDataCpBuffDescT *Buff, kal_uint32 flags);
+RmDataQBuffStatusE RmRead(RmDataCpBuffDescT * Buff);
+void C2kPppLineStatusNotify(kal_uint32 PppStatus);
+void C2kPppLineStatusIndicate(kal_uint32 PppStatus);
+kal_bool HlpIsHightPriorityConnReq(void);
+
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpcam.h b/mcu/interface/protocol/l2_c2k/common/hlpcam.h
new file mode 100644
index 0000000..b0fd5e0
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpcam.h
@@ -0,0 +1,226 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2003-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*******************************************************************************
+ *
+ * FILE NAME     : HlpCam.H
+ *
+ * DATE CREATED  :  06/22/06
+ *
+ * DESCRIPTION   : Header file for HlpCam.c
+ *
+ *******************************************************************************
+ ******************************************************************************/
+
+#ifndef _HLPCAM_H_
+#define _HLPCAM_H_
+
+/*******************************************************************************
+    Include Header Files
+    (No absolute paths - paths handled by make file)
+*******************************************************************************/
+#include "hlpapi.h"
+#include "cpbuf.h"
+#include "valapi.h"
+
+/*******************************************************************************
+    Macros
+*******************************************************************************/
+
+#define PPP_STATUS_FLAG_INTERFACE  1
+#define PPP_STATUS_FLAG_STATUS     2
+#define PPP_STATUS_FLAG_LOCALADDR  4
+#define PPP_STATUS_FLAG_REMOTEADDR 8
+#define PPP_STATUS_FLAG_PRIDNS     16
+#define PPP_STATUS_FLAG_SECDNS     32
+#define CAM_FORCE_STATE_EV         0xFF
+
+#define HLP_DO_SUBNET_ID_MAX_LEN   16
+#define HLP_1X_SID_PID_MAX_LEN     16
+#define MAX_NUM_SYS_TMR_ENTRY      7
+
+/*******************************************************************************
+    User-Defined Types (Typedefs)
+*******************************************************************************/
+typedef enum
+{
+   CAM_IDLE_ST,
+   CAM_IDLE_WFR_SYSTEM_RSP_ST,
+   CAM_IDLE_WFR_CP_CONNECT_ST,
+   CAM_IDLE_WFR_CP_CONNECT_RETRY_ST,
+   CAM_WFR_UM_CONNECT_ST,
+   CAM_WFR_RM_CONNECT_ST,
+   CAM_CONNECTED_ST,
+   CAM_WFR_UM_RELEASE_ST,
+   CAM_WFR_RM_RELEASE_ST,
+   CAM_WFR_CP_DORMANT_ST,
+   CAM_DORMANT_ST,
+   CAM_DORMANT_WFR_SYSTEM_RSP_ST,
+   CAM_DORMANT_WFR_CP_CONNECT_ST,
+   CAM_DORMANT_WFR_CP_CONNECT_RETRY_ST,
+   CAM_WFR_CP_RELEASE_ST,
+   CAM_WFR_XOFF_RESPONSE_ST,
+   CAM_NUM_STATES
+} CamStatesT;
+
+typedef enum
+{
+   CAM_PPP_CONNECT_REQ_EV,
+   CAM_ANSWER_REQ_EV,
+   CAM_DORMANT_REQ_EV,
+   CAM_PPP_RELEASE_REQ_EV,
+   CAM_DORMANT_RECONNECT_REQ_EV,
+   CAM_CONNECTION_OPENED_IND_EV,
+   CAM_CONNECTION_FAILED_IND_EV,
+   CAM_CONNECTION_RELEASED_IND_EV,
+   CAM_SYSTEM_QUERY_RSP_EV,
+   CAM_OOSA_IND_EV,
+   CAM_UM_PPP_STATUS_RSP_EV,
+   CAM_RM_PPP_STATUS_RSP_EV,
+   CAM_RLP_INACT_IND_EV,
+   CAM_RLP_OPEN_FAILED_EV,
+   CAM_XOFF_RESPONSE_RCVD_EV,
+   CAM_NUM_EVENTS
+} CamEventsT;
+
+typedef struct
+{
+    kal_bool              InUse;
+    kal_uint8         PdnId;/*PPP error: 0xff, PDN error: pdn id*/
+    DataConnErrCodeT  ErrorCode;
+} PsConnErrorCodeT;
+
+typedef struct
+{
+	kal_uint8		  Cid;
+	NetworkPrefT	  NetworkPref;
+	NspeAppT		  AppType;
+	DialingInfoT*	  CallInfo;
+	kal_uint16		  InactivityTmr;					/* units of msec for 1X RLP only	  */
+	kal_bool		  ReleaseTchWhenFallback;
+	HlpPppRouteTypeE  RouteType;
+} PppConnParamsT;
+
+typedef struct
+{
+   kal_bool DormantFrom1x;
+   kal_bool gotoDormant;
+} PppDormParamsT;
+
+typedef struct
+{
+   kal_bool connFromDo;
+} TchConnParamsT;
+
+/*TracePscState/TraceCpcState set for Trace, copy from SCC*/
+typedef enum
+{
+   PSC_NULL,
+   PSC_INIT,
+   PSC_CONNECTED,
+   PSC_NO_DMC_CONNECTED,
+   PSC_DORMANT,
+   PSC_RECONNECT,
+   PSC_NUM
+} TracePscState;
+
+typedef enum
+{
+   CPC_IDLE,
+   CPC_CONNECTING,
+   CPC_CONNECTED,
+   CPC_DISCONNECT,
+   CPC_ANALOG_CONN,
+   CPC_NUM
+} TraceCpcState;
+
+typedef enum
+{
+   NO_PENDING_RECONN_REQ,
+   PENDING_REQ_1X_BUSY,
+   PENDING_REQ_1X_IDLE
+} PendingRcnT;
+
+/*******************************************************************************
+    Global Variable Declarations
+*******************************************************************************/
+
+/*******************************************************************************
+    Global Function Prototypes
+*******************************************************************************/
+
+void       camProcessEvent(CamEventsT event, void* parms, kal_uint8 parmSize);
+void       camProcessEventNoParms(CamEventsT event);
+void       HlpCamInit(void);
+CamStatesT camGetCurrentState(void);
+void       camSetCurrentState(CamStatesT);
+kal_bool       HlpCamReadyForReconnect(void);
+void       HlpCallInstanceIncrease(NspeAppT callType);
+void       HlpCallInstanceDecrease(NspeAppT callType);
+kal_bool       HlpCallInstanceRequested(NspeAppT callType);
+void       HlpCamSetDoTo1XFallbackMode(kal_bool DoTo1X_Enabled);
+void                HlpSendDormantCnfToPsw(void);
+void                PppResetAtUmRm(void);
+kal_uint16          GetIpv4MTU(void);
+void                HlpSendPppConnStatusToValATC(HlpConnStatusT status, kal_uint32 localAddr, kal_uint32 remoteAddr, kal_uint32 priDNS, kal_uint32 secDNS);
+void                HlpSendPSDMPppDisconnectStatus(CamStatesT oldCamState, DataDiscCauseT DataDisconnCause);
+void                HlpSendPSDMPppConnectStatus(CamStatesT oldCamState);
+void                HlpSendPppConnCnfMsg(HlpConnStatusT status, kal_uint32 localAddr, kal_uint32 remoteAddr, kal_uint32 priDNS, kal_uint32 secDNS);
+void                HlpSendPppDisconnCnfMsg(void);
+void                HlpSendPppDisconnIndMsg(DataDiscCauseT DiscType);
+void                HlpSendPppModifyIndMsg(kal_uint32 localAddr, kal_uint32 remoteAddr, kal_uint32 priDNS, kal_uint32 secDNS);
+kal_bool            HlpNeedIgnoreEvdoPaging(void);
+kal_bool HlpNeedIgnoreEvdoPaging(void);
+void HlpCamEnableEhrpdIfFallback(void);
+void HlpRsvasAbortReq(void *MsgDataPtr);
+void HlpCamEnableEhrpdIfFallback(void);
+void ConnectionReq(NetworkT networkType);
+#ifdef MTK_DEV_C2K_IRAT
+void HlpSendPppSetupStatusToClc(kal_bool PppSetupStatus);
+#endif
+kal_bool HlpGetFlightModeStatus(void);
+void HlpSetFlightModeStatus(kal_bool);
+kal_uint8 HlpCheckCAMState(void);
+
+#endif /* _HLPCAM_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpcustom.h b/mcu/interface/protocol/l2_c2k/common/hlpcustom.h
new file mode 100644
index 0000000..11dd9ae
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpcustom.h
@@ -0,0 +1,81 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _HLPCUSTOM_H_
+#define _HLPCUSTOM_H_
+
+/****************************************************************************
+ *
+ * Module:    hlpcustom.h
+ *
+ * Purpose:   Default/Customized values for the HLP parameters
+ *
+ * HISTORY     :
+ *
+***************************************************************************/
+
+#define HLP_DEFAULT_DNS_PRI_IP_ADDR         HLP_DEFAULT_IP_ADDR
+#define HLP_DEFAULT_DNS_SEC_IP_ADDR         HLP_DEFAULT_IP_ADDR
+
+#define HLP_DEFAULT_AAA_AUTH_ALGORITHM      MD5_AUTH_ALGO
+#define HLP_DEFAULT_MN_AUTHENTICATOR        0x07B201 /* byte reversed */
+
+#define HLP_DEFAULT_DDTM_MODE_ENABLED       KAL_FALSE
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif  /* _CUSTOM_H_ */
+
+/**Log information: \main\CBP80\cbp80_xding_scbp10176\1 2012-08-30 06:35:56 GMT xding
+** add an PRI item under HSPD menu for retry time on KDDI 2-19**/
+/**Log information: \main\SMART\1 2013-04-28 05:01:20 GMT jzwang
+** HREF#0000: Add smartfren compile option**/
+/**Log information: \main\SMART\2 2013-04-28 05:13:00 GMT jzwang
+** HREF#0000: Add smartfren compile option**/
+/**Log information: \main\Trophy\Trophy_xding_href22316\1 2013-11-27 06:00:43 GMT xding
+** HREF#22316,RDUD feature **/
+/**Log information: \main\Trophy\2 2013-11-27 06:04:14 GMT jzwang
+** href#22316**/
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpdef.h b/mcu/interface/protocol/l2_c2k/common/hlpdef.h
new file mode 100644
index 0000000..c3c8da1
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpdef.h
@@ -0,0 +1,858 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 1998-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _HLPDEF_H_
+#define _HLPDEF_H_
+/*****************************************************************************
+*
+* FILE NAME   : hlpdef.h
+*
+* DESCRIPTION :
+*
+*     This include file provides unit wide regional type declarations and
+*     constants
+*
+* HISTORY     :
+*     See Log at end of file.
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "valapi.h"
+#include "hlpcam.h"
+#include "do_rcpapi.h"
+#include "reg_base.h"
+#include "cssapi.h"
+#include "do_almpapi.h"
+#include "hlpem.h"
+#include "sim_exported_enum.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_SIZE_REVERSE_BUFFER   512
+#define MAX_NUM_DATA_PAGE         2
+#define MAX_NUMBER_OF_TIMERS      20
+#define MAX_NUM_DECODE_RESULTS    20
+#define WFR_HAND_OFF_HYST_TMR     10000
+
+#define START_DECODER_OPERATION   0x0001
+#define DEFAULT_DECODER_CONFIG    0x0350
+#define START_ENCODER_OPERATION   0x0001
+#define DEFAULT_ENCODER_CONFIG    0x0350
+
+#define PPPReMap(data)            ((kal_uint32)(data))
+#define PPP_MAX_ENC0_SRC          75       /* 75  entries max. */
+#define PPP_MAX_ENC1_SRC          150      /* 150 entries max. */
+#define PPP_MAX_RESULT0           75       /* 75  entries max. */
+#define PPP_MAX_RESULT1           150      /* 150 entries max. */
+#define PPP_MAX_LLD0              480      /* 480 entries max. */
+#define PPP_MAX_LLD1              480      /* 480 entries max. */
+
+#define PPP_MAX_DEST0             0x8000   /* 32K bytes.       */
+#define PPP_MAX_DEST1             0x4000   /* 64K bytes.       */
+
+/*---------------------------------
+Foward path : ENC0 & DEC0
+Reverse path: ENC1 & DEC1
+----------------------------------*/
+#define PPPHA_BASE_ADDR           BASE_MADDR_MDINFRA_PPPHA
+#define PPP_ENC0_SRC_ADR          (PPPHA_BASE_ADDR + 0x0000)
+#define PPP_ENC0_DST_ADR          (PPPHA_BASE_ADDR + 0x0004)
+#define PPP_ENC0_TRNSCNT          (PPPHA_BASE_ADDR + 0x0008)
+#define PPP_ENC0_CNFG             (PPPHA_BASE_ADDR + 0x000C)
+#define PPP_ENC0_CNTL             (PPPHA_BASE_ADDR + 0x0010)
+#define PPP_ENC0_ACCM             (PPPHA_BASE_ADDR + 0x0014)
+#define PPP_ENC0_BYTECNT          (PPPHA_BASE_ADDR + 0x0018)
+#define PPP_ENC0_BYTES_TOT        (PPPHA_BASE_ADDR + 0x001C)
+
+#define PPP_ENC1_SRC_ADR          (PPPHA_BASE_ADDR + 0x0040)
+#define PPP_ENC1_DST_ADR          (PPPHA_BASE_ADDR + 0x0044)
+#define PPP_ENC1_TRNSCNT          (PPPHA_BASE_ADDR + 0x0048)
+#define PPP_ENC1_CNFG             (PPPHA_BASE_ADDR + 0x004C)
+#define PPP_ENC1_CNTL             (PPPHA_BASE_ADDR + 0x0050)
+#define PPP_ENC1_ACCM             (PPPHA_BASE_ADDR + 0x0054)
+#define PPP_ENC1_BYTECNT          (PPPHA_BASE_ADDR + 0x0058)
+#define PPP_ENC1_BYTES_TOT        (PPPHA_BASE_ADDR + 0x005C)
+
+#define PPP_DEC0_LLD_ADR          (PPPHA_BASE_ADDR + 0x0080)
+#define PPP_DEC0_DST_ADR          (PPPHA_BASE_ADDR + 0x0084)
+#define PPP_DEC0_TRNSCNT          (PPPHA_BASE_ADDR + 0x0088)
+#define PPP_DEC0_CNFG             (PPPHA_BASE_ADDR + 0x008C)
+#define PPP_DEC0_CNTL             (PPPHA_BASE_ADDR + 0x0090)
+#define PPP_DEC0_RES_ADR          (PPPHA_BASE_ADDR + 0x0094)
+#define PPP_DEC0_MAX_ADR          (PPPHA_BASE_ADDR + 0x0098)
+#define PPP_DEC0_CRT_ADR          (PPPHA_BASE_ADDR + 0x009C)
+
+#define PPP_DEC1_LLD_ADR          (PPPHA_BASE_ADDR + 0x00C0)
+#define PPP_DEC1_DST_ADR          (PPPHA_BASE_ADDR + 0x00C4)
+#define PPP_DEC1_TRNSCNT          (PPPHA_BASE_ADDR + 0x00C8)
+#define PPP_DEC1_CNFG             (PPPHA_BASE_ADDR + 0x00CC)
+#define PPP_DEC1_CNTL             (PPPHA_BASE_ADDR + 0x00D0)
+#define PPP_DEC1_RES_ADR          (PPPHA_BASE_ADDR + 0x00D4)
+#define PPP_DEC1_MAX_ADR          (PPPHA_BASE_ADDR + 0x00D8)
+#define PPP_DEC1_CRT_ADR          (PPPHA_BASE_ADDR + 0x00DC)
+
+#define PPP_DMA_SUSPEND           (PPPHA_BASE_ADDR + 0x00E0)
+
+/* #define PPP_SRAM_ACCESS  0xABC0001C */
+
+#define HLP_DEFAULT_ACCM          0xFFFFFFFF
+
+#define HLP_BURST_LENGTH_4
+#define HLP_HA_DEC_DST_BURST_LEN_MASK 0xFF3F
+
+#if defined(HLP_BURST_LENGTH_8)   /* burst length 8 */
+#define HLP_DEFAULT_HA_ENC_CFG    0x03a0
+#define HLP_HA_32BIT_ENC_CFG      0x03a2
+#define HLP_HA_16BIT_ENC_CFG      0x03a1
+
+#define HLP_DEFAULT_HA_DEC_CFG    0x07a0
+#define HLP_HA_32BIT_DEC_CFG      0x07a2
+#define HLP_HA_16BIT_DEC_CFG      0x07a1
+
+#elif defined(HLP_BURST_LENGTH_4) /* burst length 4 */
+#define HLP_DEFAULT_HA_ENC_CFG    0x0350
+#define HLP_HA_16BIT_ENC_CFG      0x0351
+
+#define HLP_HA_32BIT_ENC_CFG      0x0368
+
+#define HLP_DEFAULT_HA_DEC_CFG    0x07a0
+#define HLP_HA_32BIT_DEC_CFG      0x07a2
+#define HLP_HA_16BIT_DEC_CFG      0x07a1
+
+#else                             /* non-burst 1 */
+#define HLP_DEFAULT_HA_CFG        0x0300
+#define HLP_HA_32BIT_CFG          0x0302
+#define HLP_HA_16BIT_CFG          0x0301
+#endif
+
+#define TCP_TAG_NOT_PURE_ACK      38
+#define TCP_TAG_PURE_ACK          49
+#define TCP_TAG_RETRANSMIT        50
+
+
+/* Define Macros that manages the PPP_DMA_SUSPEND register (This feature is not used) */
+#define PppDmaSuspend() HwdWrite(PPP_DMA_SUSPEND, 0x0001)
+#define PppDmaResume()  HwdWrite(PPP_DMA_SUSPEND, 0x0000)
+
+#define HLP_UIM_MAX_PROFILE_NUM         16
+#define HLP_UIM_MAX_MIP_ADD_ACT_NAI_NUM 16
+
+#define WFR_PPP_RSP_TM      20000  /* 250 seconds, seems too long. changed to 10 seconds by Fenix */
+#define WFR_NWK_RSP_TM      15000
+#define WFR_USER_RSP_TM     60000 /*1 minute for call setup*/
+
+/* memory size occupied by ppp header, 2B as its data type is kal_uint16 */
+#define HLP_PPP_HEADER_DATA_TYPE_SIZE   sizeof(kal_uint16)
+
+extern kal_spinlockid chlp_spinlock;
+
+#if defined (__SMP_ARCH__)
+#define CHLP_TAKE_SPINLOCK()  kal_take_spinlock(chlp_spinlock, KAL_INFINITE_WAIT)
+#define CHLP_GIVE_SPINLOCK()  kal_give_spinlock(chlp_spinlock)
+#else
+#define CHLP_TAKE_SPINLOCK()
+#define CHLP_GIVE_SPINLOCK()
+#endif  /* __SMP_ARCH__ */
+
+enum
+{
+   HO_NULL,
+   HO_TO_DO,
+   HO_TO_1X,
+   HO_TO_EHRPD
+};
+
+typedef enum
+{
+   CAM_SYS_HSPD,
+   CAM_SYS_HRPD,
+   CAM_SYS_EHRPD,
+   CAM_SYS_MAX
+} CamSysTypeT;
+
+typedef enum
+{
+   PPPHA_NOT_INITIALIZED,
+   PPPHA_CLOSE_TO_END_DEC0,
+   PPPHA_CLOSE_TO_END_DEC1,
+   PPPHA_FLOW_CTRL_TURNED_ON,
+   PPPHA_BUF_FAIL,
+   PPPHA_CRC_FAIL,
+   PPPHA_DEST_ADDR_NULL,
+   PPPHA_STATUS_MAX
+} PpphaStatusT;
+
+typedef enum
+{
+   PPPHA_ENC0,/*Rev Encode*/
+   PPPHA_DEC0,/*Fwd Decode*/
+   PPPHA_ENC1,/*Fwd Encode*/
+   PPPHA_DEC1 /*Rev Decode*/
+} PpphaPhaseT;
+
+typedef enum
+{
+   DATA_SERVICE_SIP,
+   DATA_SERVICE_MIP,
+   DATA_SERVICE_HRPD,
+   DATA_SERVICE_3GPDEXT,
+   DATA_SERVICE_IPv6,
+   DATA_SERVICE_UST_ACL,
+   DATA_SERVICE_EST_ACL
+} DataServiceTypeT;
+
+typedef enum
+{
+    HLP_DATA_DIR_UL,
+    HLP_DATA_DIR_DL,
+    HLP_DATA_DIR_MAX
+}HlpDataDirEnum;
+
+typedef enum
+{
+    HLP_NV_IP_COUNTER_ERR,
+    HLP_NV_IP_COUNTER_LEN_ERR,
+    HLP_NV_HSPD_DATA_ERR,
+    HLP_NV_HSPD_DATA_LEN_ERR,
+    HLP_NV_HSPD_SECURE_ERR,
+    HLP_NV_HSPD_SECURE_LEN_ERR,
+    HLP_NV_EHRPD_DATA_ERR,
+    HLP_NV_EHRPD_DATA_LEN_ERR,
+    HLP_NV_DMU_PUBKEY_ERR,
+    HLP_NV_DMU_PUBKEY_LEN_ERR,
+    HLP_NV_ERR_MAX
+} HlpNvRdWtErrT;
+
+typedef enum
+{
+   NO_SILENTLY_RETRY, /*don't retry by modem, directly notify AP*/
+   SILENTLY_AFRESH_CONN,/*re-establish connection*/
+   SILENTLY_AFRESH_PS,/*re-establish connection and re-nego ppp*/
+   SILENTLY_PPP_RENEGO  /*re-establish PPP*/
+} HlpRecoverFlagT;
+
+typedef enum
+{
+    HLP_PROTOCOL_COMPRESSION,        /* Protocol Compression */
+    HLP_ADDRESS_CONTROL_COMPRESSION, /* Address/Control Compression */ 
+    HLP_PPP_HEADER_ENC_GETBUFF_NULL
+}HlpPppHeaderEncWarningT;
+
+typedef struct
+{
+   kal_uint16 tcpTag;
+   kal_uint32 tcpPort;
+   kal_uint32 srcIpAddr;
+   kal_uint32 dstIpAddr;
+}socketInfoT;
+
+typedef struct
+{
+   CpBufferT*           sourceAddr;
+   CpBufferT*           destAddr;
+   kal_uint8*               directSrcAddr;
+   kal_uint32               xferCount;
+   kal_uint32               configReg;
+#ifdef SYS_OPTION_PPPHA_ENC_ENH
+   kal_uint8                leadingPad;
+   kal_uint8                tailingPad;
+#endif
+   kal_uint32               accmInUse;
+   kal_uint16               encodedLen;
+   kal_uint16               sourceOffset;
+   kal_bool                 isCpBufPtr;
+   AppSubTypeT          AppSubType;
+   socketInfoT          dstSocket;
+} HlpPPPHaEncTableT;
+
+typedef struct
+{
+   ExeRspMsgT  RspInfo;
+} HlpGetIPServiceTypeMsgT;
+
+typedef struct
+{
+   kal_uint8 pureAckTagRateTD;
+   kal_uint8 pureAckTagRate;
+} HlpEtsPureAckRateMsgT;
+
+typedef struct
+{
+   kal_uint32 tmrStatusHspd;
+   kal_uint32 tmrSysIdHspd[MAX_NUM_SYS_TMR_ENTRY];
+   kal_uint32 tmrStatusHrpd;
+   kal_uint32 tmrSysIdHrpd[MAX_NUM_SYS_TMR_ENTRY];
+   kal_uint32 tmrStatusEhrpd;
+   kal_uint32 tmrSysIdEhrpd[MAX_NUM_SYS_TMR_ENTRY];
+} HlpEtsThrottlingTmrStatusMsgT;
+
+#define HLP_UIM_MAX_PROFILE_NUM         16
+#define HLP_UIM_MAX_MIP_ADD_ACT_NAI_NUM 16
+typedef struct
+{
+   kal_uint8 MaxNumNAI;
+   kal_uint8 MaxNAILen;
+   kal_uint8 MaxSSLen;
+   kal_uint8 AuthAlgo;
+} HlpUim3GPDSipCapT;
+
+typedef struct
+{
+   kal_uint8 MaxNumNAI;
+   kal_uint8 MaxNAILen;
+   kal_uint8 MaxMNAAASSLen;
+   kal_uint8 MNAAAAuthAlgo;
+   kal_uint8 MaxMNHASSLen;
+   kal_uint8 MNHAAuthAlgo;
+} HlpUim3GPDMipCapT;
+
+typedef struct
+{
+   kal_uint8 NAIEntryIndex;
+   kal_uint8 NAILen;
+   kal_uint8 NAI[MN_NAI_MAX_SIZE];
+   kal_uint8 AuthAlgo;
+} HlpSipUserProfileT;
+
+typedef struct
+{
+   kal_uint8 NumNAI;
+   HlpSipUserProfileT SipUserProfile[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDSipUserProfileT;
+
+typedef struct
+{
+   kal_uint8 NAIEntryIndex;
+   kal_uint8 NAILen;
+   kal_uint8 NAI[MN_NAI_MAX_SIZE];
+   kal_bool TBit;
+   kal_uint32 HomeAddress;
+   kal_uint32 PrimaryHomeAgent;
+   kal_uint32 SecondaryHomeAgent;
+   kal_uint8 MNAAAAuthAlgo;
+   kal_bool MNAAASpiInd;
+   kal_uint32 MNAAASpi;
+   kal_uint8  MNHAAuthAlgo;
+   kal_bool MNHASpiInd;
+   kal_uint32 MNHASpi;
+} HlpMipUserProfileT;
+
+typedef struct
+{
+   kal_bool RetryInfoIncluded;
+   kal_uint8 MaxNumRetry;
+   kal_uint8 FirstRetryTimeOut;
+   kal_uint8 ReregThreshold;
+   kal_uint8 NumNAI;
+   HlpMipUserProfileT MipUserProfile[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDMipUserProfileT;
+
+typedef struct
+{
+   kal_uint8 ActNAIEntryIndex;
+   kal_uint8 NumAddActNAI;
+   kal_uint8 AddActNaiEntryIndex[HLP_UIM_MAX_MIP_ADD_ACT_NAI_NUM];
+} HlpUim3GPDMipStatusT;
+
+typedef struct
+{
+   kal_uint8 ActNAIEntryIndex;
+   kal_uint8 SSLen;
+   kal_uint8 SS[32];
+} HlpSipPapSSParmsT;
+
+typedef struct
+{
+   kal_uint8 NumNAI;
+   HlpSipPapSSParmsT SipPapSSParms[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDSipPapSSParmsT;
+
+typedef struct
+{
+   kal_uint8  NAIEntryIndex;
+   kal_uint32 Application;
+   kal_uint8  Priority;
+   kal_uint8  DataRateMode;
+   kal_uint8  DataBearer;
+} HlpUserProfileExtParamsT;
+
+typedef struct
+{
+   kal_uint8 NumNAI;
+   HlpUserProfileExtParamsT UppExtParams[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDUserProfileExtT;
+
+typedef struct
+{
+   kal_uint16 InitNeighborSolicitDelayTime;
+   kal_uint16 SolicitInterval;
+   kal_uint16 ReSolicitInterval;
+   kal_uint16 MaxSolicitAttempt;
+   kal_uint16 MaxReSolicitAttempt;
+   kal_uint16 PreRAExpiryReSolicitTime;
+   kal_uint8  IidInfo[8];
+   kal_uint8  Flags;
+} HlpUim3GPDIpv6capT;
+
+typedef struct
+{
+   kal_uint8 Flags;
+   kal_uint8 KeepAliveIdleTimer;
+} HlpUim3GPDTcpConfigT;
+
+typedef struct
+{
+   kal_uint8 DataDormTimer;
+   kal_uint8 EpzidTypeInfo;
+   kal_uint8 HystActTime;
+} HlpUim3GPDDgcT;
+
+typedef struct
+{
+   kal_uint8 MaxNaiLen;
+   kal_uint8 MaxSsLen;
+   kal_uint8 AuthAlgo;
+} HlpUimHrpdAccessAuthCapT;
+
+typedef struct
+{
+   kal_uint8 NaiLen;
+   kal_uint8 Nai[HLP_MAX_USRID_LEN];
+   kal_uint8 AuthAlgo;
+} HlpUimHrpdAccessAuthUppT;
+
+typedef struct
+{
+   /* this field indicates the EFcst, EFust, EFest file be used or not
+    * used only for UIM file test critical checking
+    * KAL_FALSE, not use the files
+    * KAL_TRUE,  use the files
+    * default value should be KAL_FALSE
+    */
+   kal_bool  TurnOnCheck;
+   kal_bool  SipEnabled;
+   kal_bool  MipEnabled;
+   kal_bool  HrpdEnabled;
+   kal_bool  Msg3gpdExtEnabled;
+   kal_bool  Ipv6Enabled;
+   /* EFust, 6F38, byte5.bit3 */
+   kal_bool  UstAclEnabled;
+   /* EFest, 6F56, byte1.bit3 */
+   kal_bool  EstAclEnabled;
+} HlpUimServiceTableT;
+
+typedef struct
+{
+   kal_bool Flag;
+   kal_uint16 FileId[2];
+   kal_bool IsNeededForCTCard;
+} HlpUimFileTableT;
+
+typedef struct
+{
+  /*-------------card status----------------*/
+  kal_uint8                          CardStatus;
+  /*-------------card index----------------*/
+  sim_interface_enum                 sim_index;
+  /*-------------card type-----------------*/
+  kal_bool                           is_uicc_card;
+  kal_bool                           is_omh_card;
+  kal_bool                           is_ct_card;
+  /*-------------file read flag-------------*/
+  /* read index point to next file index */
+  kal_uint8                          ReadIndex;
+  kal_bool                           ReadDone;
+  /* this flag is ugly! to solve the duplicated 0x6F56 EF ID
+   * in RUIM/CSIM, it's EFhrpdcap, in USIM, it's EFest
+   * in HLP_UIM_FILE_CHANGED_MSG, if 0x6F56 received, both files are read
+   * EFhrpdcap will always be handled before EFest
+   * default value is KAL_FALSE, once EFhrpdcap is handled, this flag is set to KAL_TRUE
+   * after the whole read procedure is finished, this flag is reset to KAL_FALSE
+   */
+  kal_bool                           Cur6F56IsUsimFile;
+
+  /*-------------service table--------------*/
+  HlpUimServiceTableT            srvtbl;
+
+  /*-------------operation mode-------------*/
+  /* EFme3gpdopc */
+  kal_uint8                          opc;
+  /* EF3gpdopm */
+  kal_uint8                          opm;
+
+  /*----------------simpe IP----------------*/
+  /* EFsipsp */
+  kal_uint8                          sipsp;
+  /* EFsipcap */
+  HlpUim3GPDSipCapT              sipcap;
+  /* EFsipupp */
+  HlpUim3GPDSipUserProfileT      sipupp;
+  /* EFsippapss */
+  HlpUim3GPDSipPapSSParmsT       sippapss;
+
+  /*----------------mobile IP----------------*/
+  /* EFmipsp */
+  HlpUim3GPDMipStatusT           mipsp;
+  /* EFmipcap */
+  HlpUim3GPDMipCapT              mipcap;
+  /* EFmipupp */
+  HlpUim3GPDMipUserProfileT      mipupp;
+
+  /*-------------extension files-------------*/
+  /* EFmipflags */
+  kal_uint8                          mipflags;
+  /* EF3gpduppext */
+  HlpUim3GPDUserProfileExtT      uppext;
+  /* EFtcpconfig */
+  HlpUim3GPDTcpConfigT           tcpcfg;
+  /* EFdgc */
+  HlpUim3GPDDgcT                 dgc;
+  /* EFipv6cap */
+  HlpUim3GPDIpv6capT             ipv6cap;
+
+  /*---------HRPD Access Auth files---------*/
+  /* EFhrpdcap */
+  HlpUimHrpdAccessAuthCapT       hrpdcap;
+  /* EFhrpdupp */
+  HlpUimHrpdAccessAuthUppT       hrpdupp;
+  /* EFimsi */
+  IMSIType                       imsi;
+  kal_bool                       bUSIMIMSINeedUpdate;
+  /* EFad */
+  kal_uint8                      MncLen;
+} HlpUimFilesT;
+
+typedef void (*hlp_timer_expiry_func)(hlp_timer_enum timer_id);
+
+typedef struct
+{
+    eventid                  id;
+	hlp_timer_enum           timer_id;
+    kal_bool                 pending;
+    kal_uint32               duration_ms;
+    hlp_timer_expiry_func    expiry_func;
+}hlp_es_struct;
+
+typedef struct
+{
+    peer_buff_struct *head;
+    peer_buff_struct *tail;
+}hlp_sll_ul_queue_struct;
+
+typedef struct
+{
+    peer_buff_struct *head;
+    peer_buff_struct *tail;
+    kal_uint8        pdn_id;
+}hlp_sll_dl_queue_struct;
+
+/*----------------------------------------------------------------------------
+ Global Variable Declarations
+----------------------------------------------------------------------------*/
+extern kal_bool     PppRenego;
+
+/*----------------------------------------------------------------------------
+ Function Declarations
+----------------------------------------------------------------------------*/
+void HlpConnectionIndMsg(void *MsgDataP, kal_bool atDONetwork);
+void Hlp1XMTConnInNullStIndMsg(void *MsgDataP);
+void HlpConnectionReleasedIndMsg(void *MsgDataP);
+void HlpConnectionFailedIndMsg(void *MsgDataP);
+void HlpPppConnectReqMsg(void *MsgDataP);
+void HlpPppDisconnectReqMsg(void *MsgDataP);
+void HlpPppUpdateReqMsg(void *MsgDataP);
+void HlpPppReleaseReqMsg(void *MsgDataP);
+void HlpPppStatusMsg(void *MsgDataP);
+void HlpUmAppInstance(void * MsgDataPtr);
+void HlpPppAnswerReqMsg(void *MsgDataP);
+void HlpRlpResetIndMsg(void *MsgDataP);
+void HlpFwdDataIndSig(void);
+void HlpRevDataIndSig(void);
+void HlpRlpRevDataRspMsg(void *MsgDataP);
+void HlpRlpIdleIndMsg(void *MsgDataP);
+void HlpRlpOpenFailedMsg(void *MsgDataP);
+void HlpRlpRevDataRspMsg(void *MsgDataP);
+void HlpUpbConnStatusMsg(void *MsgDataP);
+void HlpUpbConnReqMsg(void* MsgDataP);
+void HlpAiwBeginUdpMsg(void* MsgDataP);
+void HlpUpbEndMsg(void* MsgDataP);
+void HlpUpbSendDataMsg(void* MsgDataP);
+void HlpUpbDormantReq(void *MsgDataP);
+void HlpUpbRecvDataRspMsg(void *MsgDataP);
+void HlpRmPppBeginMsg(void* MsgDataP);
+void HlpRmDisconnectInd(void *MsgDataP);
+void HlpRmConnectStatusMsg(void *MsgDataP);
+void HlpServiceStatusMsg(void *MsgDataPtr);
+void HlpUmPppBeginMsg(void* MsgDataP);
+void HlpUmRestartRlpMsg(void* MsgDataP);
+void HlpUmDisconnMsg(void* MagDataP);
+void HlpDormantReconnectReqMsg(void* MagDataP);
+void HlpUmAbortReqMsg(void* MagDataP);
+void HlpMipUmPppStatusMsg(void * MsgDataP);
+void HlpPktZoneIdMsg(void* MagDataP);
+void HlpTimerExpiredMsg(void* MsgDataP);
+void HlpTestBrowserConnectMsg(void* MsgDataP);
+void HlpTcpbConnReqMsg(void* MsgDataP);
+void HlpTcpbConnEndMsg(void* MsgDataP);
+void HlpTcpbDataSendReqMsg(void* MsgDataP);
+void HlpTcpbDataRecvRspMsg(void *MsgDataP);
+void HlpSocketCreateMsg(void *MsgDataP);
+void HlpSocketBindMsg(void *MsgDataP);
+void HlpSocketConnectMsg(void *MsgDataP);
+void HlpSocketCloseMsg(void *MsgDataP);
+void HlpSocketSendReqMsg(void *MsgDataP);
+void HlpSocketListenMsg(void *MsgDataP);
+void HlpSocketOptionMsg(void *MsgDataP);
+void HlpSocketShutDownMsg(void *MsgDataP);
+void HlpSocketLingerMsg(void *MsgDataP);
+void HlpUartReadyMsg(void *MsgDataP);
+void HlpMipInit(void);
+void HlpMipRrpMsg(void *MsgDataP);
+void HlpMipAgentAdvMsg(void *MsgDataP);
+void HlpMipUmPppStatusMsg(void *MsgDataP);
+void HlpOosaIndMsg(void *MsgDataPtr);
+void HlpSystemQueryRspMsg(void* MsgDataPtr);
+void HlpSysSelPrefSetMsg(void* MsgDataPtr);
+void HlpUmPppReNegotiationMsg(void *MsgDataPtr);
+void HlpSetNetworkOrRelayModeMsg(void *MsgDataPtr);
+void HlpAlmpConnReleased(void);
+void HlpAlmpConnFailed(void);
+void HlpXoffRspRcvdMsg(void);
+#ifdef KDDI_EXTENSIONS
+extern void HlpDORetryTmrExp(void);
+#endif
+void HlpDormantReqMsg(void);
+void HlpValCtaUpdateReqMsg(HlpValCtaUpdateReqMsgT* MsgDataPtr);
+void HlpSetHoFlag(kal_uint8 direction);
+kal_uint8 HlpGetHoFlag(void);
+extern void HlpVoiceCallReleaseIndMsg(void);
+#ifdef MTK_DEV_C2K_IRAT
+void HlpSetHO21xFlag(kal_bool bHO21xEnabledFlag);
+kal_bool HlpGetHO21xFlag(void);
+void HlpSetByPassThresholdCheckFlag(kal_bool bNewFlag);
+kal_bool HlpGetByPassThresholdCheckFlag(void);
+#endif /* MTK_DEV_C2K_IRAT */
+void HlpValDMUVSetMsg(void *MsgDataPtr);
+void HlpDOInactivityExprMsg(void);
+#ifdef MTK_DEV_C2K_IRAT
+void HlpSendPppMtu2Val(void);
+#endif
+HlpDataChRetStatus HlpWrite(RmDataCpBuffDescT *Buff);
+HlpDataChRetStatus HlpRead(RmDataCpBuffDescT *Buff);
+kal_uint16 GetRevHlpDataSize(void);
+kal_uint16 HlpCheckRxReadyStatus(void);
+void HlpAccessStreamStart(void);
+void HlpGetPPPConnParams(PppConnParamsT *connPtr);
+
+/* System ID Change message function prototypes */
+void HlpSidNidChangeIndMsg(void *MsgDataPtr);
+void HlpPktZoneIdChangeIndMsg(void *MsgDataPtr);
+void HlpSubnetIdChangeIndMsg(void *MsgDataPtr);
+void HlpColorCodeIndMsg(void *MsgDataP);
+
+/* Hlpdbm function prototypes */
+void HlpDbmHspdSegInitReq(void);
+void HlpNvHspdSegDataReadHandler(void);
+void HlpParmSetMsg(void *MsgDataPtr);
+void hlp_elt_set_parm_msg(ilm_struct* ilm_ptr, HlpParmOperationId ParmId);
+
+void HlpNvSecureDataReadHandler(void);
+void HlpParmGetMsg(void *MsgDataPtr);
+void hlp_elt_get_parm_msg(ilm_struct* ilm_ptr, HlpParmOperationId ParmId);
+void HlpDbmGetEsnMeidRspMsg(void *MsgDataPtr);
+void HlpDmuSecureDataChangedMsg(void *MsgDataP);
+void HlpPswMDNUpdatedMsg(void *MsgDataPtr);
+void HlpSetMipPasswordMsg(void *MsgDataPtr);
+kal_uint8 HlpDbmGetMipMode(void);
+kal_uint8 HlpDbmGetHaAuthMode(void);
+kal_uint8 HlpDbmGetVJCompressionEnabled(void);
+void HlpDbmGetPppUmCfg(HlpPppUmCfg_APIStruct *HlpPppUmCfg);
+void HlpDbmGetPppRmCfg(HlpPppRmCfg_APIStruct *HlpPppRmCfg);
+void HlpDbmGetTcpCfg(HlpTcpCfg_APIStruct *HlpTcpCfg);
+kal_bool HlpDbmGetHspdLocked(void);
+void HlpNvEHrpdDataReadHandler(void);
+
+void HlpDormancyTimersSetMsg(void *MsgDataPtr);
+void HlpDORetryTimersSetMsg(void *MsgDataPtr);
+
+/* Timer expiration function prototypes */
+void HlpTimerStartReq(hlp_timer_enum timer_id);
+void HlpTimerKillReq(hlp_timer_enum timer_id);
+void HlpTimerSetDuration(hlp_timer_enum timer_id, kal_uint32 duration);
+void HlpTimerSetPending(hlp_timer_enum timer_id, kal_bool pending);
+kal_bool HlpTimerIsActive(hlp_timer_enum timer_id);
+kal_bool HlpTimerIsPending(hlp_timer_enum timer_id);
+kal_uint32 HlpTimerGetDuration(hlp_timer_enum timer_id);
+void WfrFastConnTimeUp(hlp_timer_enum timer_id);
+void HlpWfsSysRspTimeup(hlp_timer_enum timer_id);
+void HlpWfrUimAuthRspTimeup(hlp_timer_enum timer_id);
+void WfrRmConnectionTimeUp(hlp_timer_enum timer_id);
+void DataRetryTimeUp(hlp_timer_enum timer_id);
+void DoRetryTimeUp(hlp_timer_enum timer_id);
+void HlpWaitForIratReleaseTimerExp(hlp_timer_enum timer_id);
+void HlpWfrFallBack1XConnectTimeUp(hlp_timer_enum timer_id);
+void HlpSetC109LowExp(hlp_timer_enum timer_id);
+void HlpProcThrottlingTmrExp(hlp_timer_enum timer_id);
+void DormantReconnectBackOffTimerUp(hlp_timer_enum timer_id);
+void HlpPppConnectBackOffTimerExp (hlp_timer_enum timer_id);
+void HlpFiveMinsTimeOut(hlp_timer_enum timer_id);
+void HlpForceCpIdle(hlp_timer_enum timer_id);
+void HlpCloseConnAtDO(hlp_timer_enum timer_id);
+void HlpMipTimerRrpRegTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerRrpDeregTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerRrqRegTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerAgentAdvTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerLifetimeTimeUp(hlp_timer_enum timer_id);
+void HlpIp6TestTmrExp(hlp_timer_enum timer_id);
+void natTimerExpire(hlp_timer_enum timer_id);
+void HlpPendingRedailA12TmrExp(hlp_timer_enum timer_id);
+void HlpSetPendingRedailA12Flag(kal_bool flag);
+kal_bool HlpGetPendingRedailA12Flag(void);
+void HlpRsvasAbortReqTimeUp(hlp_timer_enum timer_id);
+
+/* Throttling function prototypes */
+void HlpThrottSetEnable(kal_bool enable);
+kal_bool HlpThrottGetEnable(void);
+void HlpThrottSetCurrSys(CamSysTypeT system);
+CamSysTypeT HlpThrottGetCurrSys(void);
+kal_bool HlpThrottIsActive(CamSysTypeT SystemType);
+void HlpThrottLogSysId(CamSysTypeT SystemType);
+void HlpThrottInit(void);
+void HlpThrottResetAll(void);
+void HlpThrottStop(CamSysTypeT SystemType);
+void HlpThrottStart(void);
+
+/* IPv6 function prototypes */
+#ifdef CBP7_EHRPD
+kal_bool EapAkaFailureByNwkRejFlagGet(void);
+void EapAkaFailureByNwkRejFlagSet(kal_bool bRejByNetworkNotification);
+#endif
+
+void HlpFwdPktDataIndSig( void );
+
+/* PPP free mode support */
+void HLPRouteTypeSet(HlpPppRouteTypeE type);
+HlpPppRouteTypeE HLPRouteTypeGet(void);
+/* TCP/IP filter-mux function prototypes */
+void IP_Add_TCP_FilterMux(MuxInfo *Info, kal_uint32 address, kal_uint16 port);
+void IP_Delete_TCP_FilterMux(MuxInfo *Info, kal_uint32 address, kal_uint16 port);
+kal_bool CheckTcpPacketWithTcpFilterMux(MuxInfo *Info, kal_uint32 address, kal_uint16 port, kal_bool fragmentIpPkt);
+void IP_Init_TCP_FilterMux(MuxInfo *Info);
+
+/* UIM function prototypes */
+void HlpUimNotifyRegisterMsg(void *MsgDataPtr);
+void HlpDbmPowerCycleMsg(void);
+void HlpUim3GPDDataUpdate(void);
+void HlpUimGet3GPDOpcRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDOpcRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDOpmRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDOpmRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipCapRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDMipCapRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipUPPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDMipUPPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipSPRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDSipSPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDMipSPRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDMipSPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipPapSSRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDSipPapSSRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDImsiRspMsg(void *MsgDataPtr, kal_bool NeedToReadOtherFile);
+void HlpUimUpdate3GPDAdRspMsg(void *MsgDataPtr);
+kal_uint8 HlpUimGetMipMnHaAuthAlgorithm(void);
+
+/* System ID function prototypes */
+void   HlpSetCurrentSidNid(kal_uint16 sid, kal_uint16 nid);
+void   HlpSetCurrentPid(kal_uint8 pid);
+kal_uint8 *HlpGetCurrentSidPid(void);
+void   HlpSetCurrentSubnetId(kal_uint8 *pSubnetId);
+kal_uint8 *HlpGetCurrentSubnetId(void);
+void   HlpColorCodeIndMsg(void *MsgDataP);
+kal_uint16 HlpGetDormancyTimer(kal_bool bForRDUD);
+IMSIType HlpGetImsiInfoInUimCntx(void);
+kal_uint8 HlpGetMncLenInUimCntx(void);
+kal_bool HlpCheckImsiInfoNeedUpdate(void);
+void HlpWaitForExtMsg(kal_uint32 expMsgId, ilm_struct *ilm);
+#ifdef CBP7_EHRPD
+void HlpGetImsiFromUsim(void);
+#endif
+void HlpSendTchSetupStatusToCss(CssTchSetupStatusT status);
+void HlpSendConnStatusMsg2Val(ValWmcConnStatusT connStatus);
+void HlpSendPppConnStatusMsg2Val(ValHlpPppConnStatusMsgT *ConnStatus);
+void HlpSendPppConnStatusMsg2ValAtc(ValHlpPppConnStatusMsgT *ConnStatus);
+
+void hlp_nvram_read_cnf_handler(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
+void hlp_nvram_write_cnf_handler(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
+void HlpProcessRevDataFromHIF(void* MsgDataP);
+AlmpStateT HlpGetAlmpState(void);
+void HlpTcpPacketTagPureAck(kal_uint8 *pIpPacket, socketInfoT *dstSocketPtr);
+kal_uint16 PPP_HeaderEncode_CopyFree(kal_uint16 prot, kal_uint8 *data, kal_bool acomp, kal_bool pcomp, kal_uint8 pdn_id);
+void HlpHandleDnsQueryNoNwRsp(kal_uint8 *pIpPacket, kal_bool *pToRelPpp);
+HlpRecoverFlagT HlpGetRecoverFlag(void);
+void HlpSetRecoverFlag(HlpRecoverFlagT value);
+kal_bool HlpTransferToLower(char* pStrIn, char* pStrOut, kal_uint32 nLen);
+DialingInfoT* HlpCallInfoGet(void);
+void HlpSendXonXoffToFcp(kal_bool bXOnOff, StreamType StreamID);
+kal_uint8 HlpGetPPPConnParamsCid(void);
+kal_bool HlpUimIsUiccCard(void);
+kal_bool HlpUimIsOmhCard(void);
+void HlpConnectionSuspendCmd(void);
+void HlpConnectionResumeCmd(void);
+void HlpConnectionDisableCmd(void);
+void HlpConnectionResetCmd(void);
+void HlpConnectionFallbackCmd(void);
+
+void HlpSetHOEHRPDEnableFlag(kal_bool bEnable);
+kal_bool HlpGetHOEHRPDEnableFlag(void);
+sim_interface_enum HlpUimGetCurSimIndex(void);
+kal_uint16 HlpRmCheckRxReadyStatus(void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpem.h b/mcu/interface/protocol/l2_c2k/common/hlpem.h
new file mode 100644
index 0000000..d828339
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpem.h
@@ -0,0 +1,72 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/****************************************************************************
+ *
+ * Module:     hlpem.h
+ *
+ * Purpose:    hlp engineer mode definitions and prototypes.
+ *
+ ****************************************************************************/
+
+#ifndef _HLPEM_H_
+#define _HLPEM_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "em_public_struct_c2k_hlp.h"
+
+void HlpEmSendTimerStatusInd(kal_uint32 hlp_timer_tmp, kal_bool act_tmp, kal_uint32 duration_tmp);
+void HlpEmSendCamStateInd(kal_uint8 old_state_tmp, kal_uint8 event_tmp, kal_uint8 new_state_tmp);
+void HlpEmSendNspeStateInd(void);
+void HlpEmSendPdnStatusInd(void);
+void HlpEmSendPpphaStatusInd(em_hlp_pppha_enum hlp_pppha_name, kal_uint16 PullOut_tmp);
+void HlpEmSendPppStatusInd(void);
+void HlpEmSendRmBufQInfoInd(void);
+void HlpEmSendUmBufQInfoInd(void);
+void HlpEmSendPacketInfoInd(void);
+void HlpEmDecPacketInfo(em_hlp_data_dir_enum UL_DL, kal_uint8 *pIpPacket, kal_uint16 data_len);
+void HlpEmSendStatusCnf(void);
+void HlpEmUpdateReqMsg(local_para_struct *local_para_ptr);
+void HlpEmInitDataPlaneInfo(void);
+void HlpEmPpphaBadPacketIncrease(em_hlp_pppha_enum hlp_pppha_name, kal_uint16 Add_in);
+void HlpEmDiscardUmData(em_queue_type_enum FwdRevFlag);
+void HlpEmSendAbnormalEventInfoInd(em_hlp_abnormal_event_enum hlp_abnormal_event);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpmip.h b/mcu/interface/protocol/l2_c2k/common/hlpmip.h
new file mode 100644
index 0000000..4019366
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpmip.h
@@ -0,0 +1,249 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _HLPMIP_H_
+#define _HLPMIP_H_
+/*****************************************************************************
+*
+* FILE NAME   : hlpmip.h
+*
+* DESCRIPTION :
+*
+*     This include file provides  type declarations and constants for Mobile IP
+*
+* HISTORY     :
+*     See Log at end of file.
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "pswnam.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define AAA_AUTH_MAX_SIZE            8
+#define DMU_ENCRYPTED_DATA_MAX_SIZE  128
+
+#define MAX_RSA_PUBLIC_KEY_SUPPORTED 2
+
+#define HLP_DEFAULT_INLAND_NAI_REALM        "@inland3g.com"
+#define HLP_DEFAULT_IVC_NAI_REALM           "@ivcdata.com" /* IIIinois Valley Cellular */
+#define HLP_DEFAULT_APPALACHIAN_NAI_REALM   "@myawi.com" /* Applalachian */
+typedef struct {
+    kal_uint8 MN_AAAH_Key[MN_PASSWD_MAX_SIZE];
+    kal_uint8 MN_HA_Key[MN_PASSWD_MAX_SIZE];
+    kal_uint8 CHAP_Key[MN_PASSWD_MAX_SIZE];
+    kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+    kal_uint8 AAA_Authenticator[AAA_AUTH_MAX_SIZE];
+} HlpDMUKeyDataT;
+
+typedef struct {
+    kal_uint8 MN_AAA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+    kal_uint8 MN_HA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+    kal_uint8 MN_SIP_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+    kal_uint8 MN_AN_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+} HlpDmuSecureDataMsgT;
+
+typedef enum
+{
+   MIP_WFR_REREG_WINDOW,
+   MIP_REREG_WINDOW,
+   MIP_REREG_RRQ_SENT_WINDOW,
+   MIP_REREG_LIFETIME_EXPIRED,
+   MIP_DEREG_ALREADY
+} ReRegStateT;
+
+typedef enum
+{
+    MIP_RRP_TYPE,
+    MIP_RRP_CODE,
+    MIP_RRP_IDENT,
+    MIP_RRP_VENDOR_ID,
+    MIP_RRP_PUBLIC_KEY,
+    MIP_RRP_KEY_ENCRYPT,
+    MIP_RRP_CVSE_LEN,
+    MIP_RRP_AAA_AUTHENTICATOR,
+    MIP_RRP_CVSE_VENDOR_TYPE,
+    MIP_RRP_CVSE_TYPE_NUMBER,
+    MIP_RRP_LIFETIME,
+    MIP_RRP_AUTH_DATA,
+    MIP_RRP_EXT_TYPE,
+    MIP_RRP_EXT_LEN,
+    MIP_RRP_MAX_NUM
+} HlpMipRrpErrTypeT;
+
+typedef enum
+{
+    MIP_ADV_TYPE,
+    MIP_ADV_CODE,
+    MIP_ADV_ROUTER_NUM,
+    MIP_ADV_ENTRY_SIZE,
+    MIP_ADV_MOB_EXT_TYPE,
+    MIP_ADV_CHALL_EXT_TYPE,
+    MIP_ADV_FA_BUSY,
+    MIP_ADV_COA_NUM,
+    MIP_ADV_EXT_LEN,
+    MIP_ADV_MAX_NUM
+} HlpMipAdvErrTypeT;
+
+#define SECURE_DATA_SIP_PWD_BIT     (1<<0)
+#define SECURE_DATA_AN_PWD_BIT      (1<<1)
+#define SECURE_PROFILE_BIT          (1<<2)
+#ifdef CBP7_EHRPD
+#define SECURE_DATA_AKA_PWD_BIT     (1<<3)
+#endif
+
+typedef enum
+{
+   SECURE_DATA_SIP_PWD_SET = SECURE_DATA_SIP_PWD_BIT,
+   SECURE_DATA_AN_PWD_SET = SECURE_DATA_AN_PWD_BIT,
+#ifdef CBP7_EHRPD
+   SECURE_DATA_AKA_PWD_SET = SECURE_DATA_AKA_PWD_BIT,
+#endif
+   SECURE_SET_BOTH = RSA_PUBLIC_KEY_BIT|SECURE_DATA_SIP_PWD_BIT|SECURE_DATA_AN_PWD_BIT,
+   SECURE_PROFILE_SET = SECURE_PROFILE_BIT,
+#ifdef CBP7_EHRPD
+   SET_ALL = SECURE_DATA_SIP_PWD_BIT|SECURE_DATA_AN_PWD_BIT|SECURE_PROFILE_BIT|SECURE_DATA_AKA_PWD_BIT
+#else
+   SET_ALL = SECURE_DATA_SIP_PWD_BIT|SECURE_DATA_AN_PWD_BIT|SECURE_PROFILE_BIT
+#endif
+}SecureDataSetE;
+
+typedef enum
+{
+   HLP_MIP_ERR_INVALID_STATE,            /* MIP error codes                  */
+   HLP_MIP_ERR_INVALID_TIMER_ID, 
+   HLP_MIP_ERR_AGENT_ADV_INVALID_TYPE,
+   HLP_MIP_ERR_AGENT_ADV_INVALID_CODE,
+   HLP_MIP_ERR_AGENT_ADV_INVALID_NUM_ROUTER,
+   HLP_MIP_ERR_AGENT_ADV_INVALID_ENTRY_SIZE,
+   HLP_MIP_ERR_AGENT_ADV_INVALID_NUM_COA,
+   HLP_MIP_ERR_AGENT_ADV_INVALID_EXT_TYPE,  /* 0x10 */
+   HLP_MIP_ERR_AGENT_ADV_INVALID_EXT_LEN,
+   HLP_MIP_ERR_AGENT_ADV_INVALID_AGENT,
+   HLP_MIP_ERR_AGENT_ADV_FA_BUSY,
+   HLP_MIP_ERR_AGENT_SOL_BUFFER_BUSY,
+   HLP_MIP_ERR_RRP_INVALID_TYPE,
+   HLP_MIP_ERR_RRP_INVALID_CODE,
+   HLP_MIP_ERR_RRP_INVALID_LIFETIME,
+   HLP_MIP_ERR_RRP_INVALID_IDENT,
+   HLP_MIP_ERR_RRP_INVALID_EXT_TYPE,
+   HLP_MIP_ERR_RRP_INVALID_EXT_LEN,
+   HLP_MIP_ERR_RRP_INVALID_AUTH_DATA,
+   HLP_MIP_ERR_RRP_INVALID_CHALLENGE_DATA,
+   HLP_MIP_ERR_RRQ_TOO_LARGE,
+   HLP_MIP_ERR_RRQ_BUFFER_BUSY,
+   HLP_MIP_ERR_USER_DATA_GET_FAILED,
+   HLP_MIP_ERR_INVALID_CVSE_TYPE_NUMBER,    /* 0x20 */
+   HLP_MIP_ERR_INVALID_VENDOR_ID,
+   HLP_MIP_ERR_INVALID_CVSE_VENDOR_TYPE,
+   HLP_MIP_ERR_INVALID_PUBLIC_KEY,
+   HLP_MIP_ERR_INVALID_CVSE_LEN,
+   HLP_MIP_ERR_MIP_KEY_ENCRYPT_INVALID,
+   HLP_MIP_ERR_INVALID_AAA_AUTHENTICATOR,
+} HlpMipErrCodeE;
+
+/*----------------------------------------------------------------------------
+ Externs Declarations
+----------------------------------------------------------------------------*/
+extern void HlpMipInit(void);
+extern void HlpMipFallbackSipSet(kal_bool bEnable);
+extern kal_bool HlpMipFallbackSipGet(void);
+extern void HlpMipFallbackSipActive(void);
+
+extern void HlpMipRrpMsg(void *MsgDataP);
+extern void HlpMipAgentAdvMsg(void *MsgDataP);
+extern void HlpMipUmPppStatusMsg(void *MsgDataP);
+extern void HlpMipNvmMiscData(void* MsgDataP);
+extern void HlpMipNvmRRAUpdate(kal_uint16 Rra);
+extern void HlpMipNvmNumRegRetriesUpdate(kal_uint8 Num);
+extern void HlpMipNvmDeRegRetriesUpdate(kal_uint8 Num);
+extern void HlpMipNvmReRegOnlyIfTrafficUpdate(kal_bool ReRegOnlyIfTraffic);
+extern void HlpMipNvmMipNaiEnabledUpdate(kal_bool NaiEnabled);
+extern void HlpMipNvmRegTimeoutUpdate(kal_uint8 Timeout);
+extern void HlpMipNvmActivedProfileDataUpdate(HlpHspdSegData * MsgDataP);
+extern void HlpMipNvmSecureProfileDataUpdate(kal_uint8 SetType, HlpHspdSecureSegData* MsgDataP);
+
+extern void HlpDMUInit(void);
+extern void HlpMipKeysGenEnc(void);
+/*extern void HlpResetMNAuthMsg(void *MsgDataP);*/
+/*extern void HlpSetMNAuthMsg(void *MsgDataP);*/
+extern void HlpPswSDmuKeyGenRspMsg(void);
+extern void HlpPswSDmuKeyEncRspMsg(void);
+extern void HlpDmuRsaPublicKeyActiveAndMNAuthSetMsg(kal_uint8 SetType, HlpRSAPublicKeyOrgIdInfoT *MsgDataP);
+
+extern void HlpMipStartRrpAdminProhibRetry(void);
+extern kal_bool HlpMipCheckRrpAdminProhibRetry(void);
+extern kal_bool HlpMipCheckRrpAdminProhibRetryOtherErr(void);
+extern void HlpMipClearRrpAdminProhibRetry(void);
+
+extern void HlpMipResetRrpCode(void);
+extern void HlpMipSetRrpCode(kal_uint8 RrpCode);
+extern kal_uint8 HlpMipGetRrpCode(void);
+extern void HlpMIPReRegistration(MipReRegReasonT Reason);
+extern void HlpReturnToService(void);
+
+extern void HlpToReadNVRSAPublicKeyInfo(void);
+extern kal_bool HlpCheckRSAPublicKeyInfo(kal_uint8 nPKOID);
+extern kal_bool HlpIsAcgOpTetheringMode(void);
+extern kal_bool HlpIsAcgOpMipOnlyMode(void);
+extern kal_bool HlpCheckIsAcgSpecialNAI(char *pStr);
+extern kal_uint8  HlpDeriveTetheredNAIForACG(kal_uint8 *InputNAI, kal_uint8 InNAILen);
+/*****************************************************************************
+* $Log: hlpmip.h $
+*
+* 11 09 2016 sue.zhong
+* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+* Update C2K PS code (1/2)
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+