[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/Rlp_ofst.h b/mcu/interface/protocol/l2_c2k/1xrtt/Rlp_ofst.h
new file mode 100644
index 0000000..196a1a1
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/Rlp_ofst.h
@@ -0,0 +1,119 @@
+/*****************************************************************************
+*  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: t_offset.h 
+ * 
+ * Purpose: Defines module id offsets to add with token value 
+ *          to create contiguous tokens. 
+ * 
+ **********************************************************************
+ **********************************************************************/
+
+kal_uint16 TokenOffsetsRlp[13] =                               
+{                                                                
+  0,
+  15,
+  100,
+  146,	
+  176,	
+  179,	
+  192,	
+  195,	
+  195,	
+  200,	
+  201,	
+  207,	
+  207
+};
+
+/*****************************************************************************
+$Log: rlp_ofst.h $
+Revision 1.2  2004/05/04 13:41:05  ameya
+Merged the CP 10.0.0 changes from CBP 4.0 into the CBP 4.05 baseline.
+Revision 1.6  2004/01/20 18:49:32  hhong
+Added two more token traces in rlp_enc.c.
+Revision 1.1  2004/01/22 10:52:23  fpeng
+Initial revision
+Revision 1.5  2003/11/21 20:36:27  hhong
+Fixed TokenOffsetsRlp[ ].
+Revision 1.4  2002/06/06 13:54:23  chinh
+Changed and Added Copyright
+Revision 1.3  2001/11/14 14:29:28  hhong
+Changed to accomodate added tokens.
+Revision 1.2  2001/08/08 18:26:34  hhong
+To update offset due to additional engine traces for RLP type III.
+Revision 1.1  2001/04/26 11:43:17  fpeng
+Initial revision
+Revision 1.6  2000/12/14 15:58:42  hhong
+Change the offset for Rlp_stat.c for added engine traces.
+Revision 1.5  2000/05/19 12:38:03  hhong
+Revision 1.4.1.2  2000/05/18 19:05:39Z  hhong
+A duplicated version of 1.4
+Revision 1.4.1.1  2000/05/11 18:43:15Z  hhong
+Duplicate revision
+Revision 1.4  2000/05/11 18:43:15Z  hhong
+Updated from the Isotel release R2.30.
+Revision 1.2.1.2  2000/03/27 23:28:04Z  hhong
+Bugs fix from Isotel's release in 02/2000
+Revision 1.2.1.1  1999/12/04 01:21:39Z  hhong
+Duplicate revision
+Revision 1.4.1.2  2000/05/18 19:05:39Z  hhong
+A duplicated version of 1.4
+Revision 1.4.1.1  2000/05/11 18:43:15Z  hhong
+Duplicate revision
+Revision 1.4  2000/05/11 18:43:15Z  hhong
+Updated from the Isotel release R2.30.
+Revision 1.2.1.2  2000/03/27 23:28:04Z  hhong
+Bugs fix from Isotel's release in 02/2000
+Revision 1.2.1.1  1999/12/04 01:21:39Z  hhong
+Duplicate revision
+Revision 1.2  1999/12/04 01:21:39Z  etarolli
+Fixed EOL in file
+Revision 1.1  1999/11/30 23:18:40Z  cdma
+Initial revision
+Revision 1.5  1999/08/03 22:01:01  hhong
+Patches from ISOTEL dated 08/03/99.
+*****************************************************************************/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmd_audio.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_audio.h
new file mode 100644
index 0000000..318e33c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_audio.h
@@ -0,0 +1,296 @@
+/*******************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *    lmd_audio.h
+ *
+ * Project:
+ * --------
+ *    
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ *    
+ *
+ ******************************************************************************/
+#ifndef _LMD_AUDIO_H_
+#define _LMD_AUDIO_H_
+
+#include "kal_general_types.h"
+
+#define MAX_FCH_FRAME_WORD_LEN      17
+
+typedef struct
+{
+    kal_uint16   SpkrVoiceFwdChPcktRate;    /* forward channel voice packet rate */
+    kal_uint16   SpkrVoiceFwdChPcktSize;    /* forward channel voice packet size (in x16 words) */
+    kal_uint16   SpkrVoiceFwdChPcktData[MAX_FCH_FRAME_WORD_LEN]; /* forward channel voice packet data */
+}IpcDsvSendSpkrVoiceFwdChPcktDataMsgT;
+
+typedef struct
+{
+   kal_uint16   EbNt;                       /* Eb/Nt for FCH */
+}IpcDsvSendAudioChanQltyMsgT;
+
+typedef struct
+{
+   kal_uint16   AudioSpchSrvcOpt;          /* speech service option connection type */
+   kal_uint16   AudioSpchSrvcOptMaxRate;   /* maximum voice encode rate */
+} IpcDsvSendAudioSsoConnectMsgT;
+
+/*MSG_ID_IPC_DSV_SEND_SPKR_VOICE_FWD_CH_PCKT_DATA_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IpcDsvSendSpkrVoiceFwdChPcktDataMsgT msg;
+} ipc_dsv_send_spkr_voice_fwd_ch_pckt_data_msg_struct;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_CHAN_QLTY_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IpcDsvSendAudioChanQltyMsgT msg;
+}ipc_dsv_send_audio_chan_qlty_msg_struct;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SSO_CONNECT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IpcDsvSendAudioSsoConnectMsgT msg;
+} ipc_dsv_send_audio_sso_connect_msg_struct;
+typedef struct
+{
+   kal_uint16   RoutingDisabled;           /* KAL_TRUE if speech routing disabled */
+} IpcDsvSendAudioSpchRoutingMsgT;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SPCH_ROUTING_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IpcDsvSendAudioSpchRoutingMsgT msg;
+} ipc_dsv_send_audio_spch_routing_msg_struct;
+
+typedef struct
+{
+   kal_uint16   AudioSsoCtrlRrmLevel;      /* rate reduced mode bit-field */
+   kal_uint16   AudioSsoCtrlM2mMode;       /* mobile-to-mobile mode bit-field */
+   kal_uint16   AudioSsoCtrlInitCodecMode; /* initialize codec mode bit-field */
+} IpcDsvSendSsoCtrlParamsMsgT;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SSO_CTRL_PARAMS_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IpcDsvSendSsoCtrlParamsMsgT msg;
+}ipc_dsv_send_audio_sso_ctrl_params_msg_struct;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SSO_DISCONNECT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+}ipc_dsv_send_audio_sso_disconnect_msg_struct;
+typedef struct
+{
+   kal_uint16   MicVoiceEncMaxRate;     /* maximum voice encode rate for connected SSO */
+}  IpcDsvSetMicVoiceEncMaxRateMsgT;
+
+
+/*MSG_ID_IPC_DSV_SET_MIC_VOICE_ENC_MAX_RATE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IpcDsvSetMicVoiceEncMaxRateMsgT msg;
+} ipc_dsv_set_mic_voice_enc_max_rate_msg_struct;
+
+/*MSG_ID_LMD_AUDIO_SSO_CONNECT_RSP_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_audio_sso_connect_rsp_msg_struct;
+
+/*MSG_ID_LMD_AUDIO_SSO_DISCONN_RSP_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_audio_sso_disconn_rsp_msg_struct;
+typedef struct
+{
+   kal_uint16 MppSpchRate;                 /* Encoder rate decision indicator */
+   kal_uint16 NumMppSpchData;              /* Number of Tx Speech Data */
+   kal_uint16 MppSpchData[MAX_FCH_FRAME_WORD_LEN];              /* Starting address of Tx Speech Data */
+} IpcCpSpchDataRevChPacketMsgT;
+
+/*MSG_ID_LMD_TX_SPCH_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	IpcCpSpchDataRevChPacketMsgT msg;
+} lmd_tx_spch_msg_struct;
+/*MSG_ID_LMD_SPCH_DATA_ENC_AGC_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+}lmd_spch_data_enc_agc_msg_struct;
+
+/*MSG_ID_LMD_SPCH_DATA_ENC_HFREE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+}lmd_spch_data_enc_hfree_msg_struct;
+
+/*MSG_ID_LMD_SPCH_DATA_DEC_HFREE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+}lmd_spch_data_dec_hfree_msg_struct;
+
+/* 
+** LMD_SPEECH_LOOPBACK_MODE_MSG, start or stop speech loopback mode
+*/
+typedef struct
+{
+    kal_bool            start;
+    kal_uint16          ServiceOption;  /* associated service option    */
+} LmdSpeechLoopBackMsgT;
+
+/*MSG_ID_LMD_SPEECH_LOOPBACK_MODE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdSpeechLoopBackMsgT msg;
+}lmd_speech_loopback_mode_msg_struct;
+
+typedef enum 
+{
+   IPC_SPCH_BLANK       = 0x0,
+   IPC_SPCH_EIGHTH      = 0x1,
+   IPC_SPCH_QUARTER     = 0x2,   /* not used for SSO 3 */
+   IPC_SPCH_HALF        = 0x3,
+   IPC_SPCH_FULL        = 0x4,   
+#ifdef MTK_CBP_ENCRYPT_VOICE
+   IPC_SPCH_ENCRYPT_BLK	= 0x5,	 /*used only for SO32944*/
+   IPC_SPCH_ENCRYPT_FULL = 0X6,	/*used only for SO32944*/
+#endif
+   IPC_SPCH_NON_CRITICAL= 0xC,/*change to 0xc since there's a definition in other Branches which already used 0X5*/
+   IPC_SPCH_ERASURE     = 0xE,
+   IPC_SPCH_FULL_LIKELY = 0xF    /* used only for SSO's 1&3 */
+} IpcSpchSrvcOptRateT;
+
+typedef enum
+{
+   IPC_SPCH_SRVC_OPTION_NULL   = 0,       /* Invalid service option  */
+   IPC_SPCH_SRVC_OPTION1       = 1,       /* SO1.   QCELP8. not supported  */
+   IPC_SPCH_SRVC_OPTION3       = 3,       /* SO3.   EVRC-A */
+   IPC_SPCH_SRVC_OPTION17      = 17,      /* SO17.  QCELP13 */
+   IPC_SPCH_SRVC_OPTION68      = 68,      /* SO68.  EVRC-B */
+   IPC_SPCH_SRVC_OPTION73      = 73,      /* SO73.  EVRC-NB */
+   IPC_SPCH_SRVC_OPTION73WB    = 173,     /* SO73.  EVRC-WB */
+   IPC_SPCH_SRVC_OPTION_AMR    = 100,     /* WCDMA. AMR */
+   IPC_SPCH_SRVC_OPTION_AMRWB  = 101,     /* WCDMA. AMR-WB */
+   IPC_SPCH_SRVC_OPTION_GSMFR  = 256,     /* GSM.   GSMFR */
+   IPC_SPCH_SRVC_OPTION_GSMEFR = 257,     /* GSM    GSMEFR */
+   IPC_SPCH_SRVC_OPTION_GSMHR  = 258      /* GSM.   GSMHR */
+#ifdef MTK_CBP_ENCRYPT_VOICE
+	, 
+   IPC_SPCH_SRVC_OPTION32944  =32944 	/*SO0x80b0 Voice Encryption*/
+#endif
+} IpcSpchSrvcOptT;
+
+typedef struct
+{
+    kal_uint32 u4HBFrmCountUL1, u4HBFrmCountUL2;
+    kal_uint32 u4HBFrmCountDL1, u4HBFrmCountDL2;
+    kal_bool bSta;
+    kal_bool bCodRdy;
+    kal_bool bFstDLFrm;
+    kal_bool bAppSta;
+    kal_bool bLMDLbk;
+    kal_bool bCAALLbk;
+    kal_uint16 u2Cod;
+    kal_uint16 u2RS;
+    kal_uint16 u2Dbg;
+    
+}SPC2K_Struct;
+
+
+typedef struct
+{
+    kal_uint16        u2Mode;
+    kal_uint16        u2SO;
+    kal_bool          bStart;
+        
+}HwdSphLbkMsgT;
+
+//enum CAALMsgId
+//{
+//    MSG_ID_CAAL_SSO_CONN_RSP_MSG = 0,
+//    MSG_ID_CAAL_SSO_DISCONN_RSP_MSG,
+//    MSG_ID_CAAL_SPH_DATA_UL_MSG
+//};
+
+//enum SphEtsMsgId
+//{
+//    SPH_ETS_READ_DSP_MEM = IPC_CP_FROM_SPH_ETS_MIN_MSG,
+//    SPH_ETS_LBK,
+//    SPH_ETS_FRC_TONE
+//};
+
+void SPC2K_init( void );
+void SPC2K_ConSSO_Req( kal_uint16 u2SrvOpt, kal_uint16 u2MaxEncRate);
+void SPC2K_DisconSSO_Req( void );
+void SPC2K_ConSSO_Done( void );
+void SPC2K_DisconSSO_Done( void );
+void SPC2K_ConSSO_Done_Rsp( void );
+void SPC2K_DisconSSO_Done_Rsp( void );
+kal_bool SPC2K_State( void );
+void SPC2K_UL_GetSpeechFrame( void );
+void SPC2K_DL_PutSpeechFrame(IpcDsvSendSpkrVoiceFwdChPcktDataMsgT *MsgFLDataP);
+void SPC2K_DL_PutSpeechFrame_Do(IpcDsvSendSpkrVoiceFwdChPcktDataMsgT *MsgFLDataP);
+void SPC2K_SOCM_Set(IpcDsvSendSsoCtrlParamsMsgT *pMsg);
+void SPC2K_EncMaxRate_Set(IpcDsvSetMicVoiceEncMaxRateMsgT *pMsg);
+void SPC2K_GetSyncDelayRW( kal_uint16 *u2DelR, kal_uint16 *u2DelW, kal_uint16 *u2DelM);
+void SPC2K_Debug_Info(IpcDsvSendAudioChanQltyMsgT * pMsg);
+void SPC2K_Link_Lbk(HwdSphLbkMsgT *pMsg);
+
+extern SPC2K_Struct spc2k;
+
+
+#endif 
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmd_msg_struct.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_msg_struct.h
new file mode 100644
index 0000000..0c6eac8
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_msg_struct.h
@@ -0,0 +1,396 @@
+/*****************************************************************************
+*  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 _LMD_MSG_STRUCT_H
+#define _LMD_MSG_STRUCT_H
+
+/*****************************************************************************
+* 
+* FILE NAME   :lmd_msg_struct.h 
+*
+* DESCRIPTION :
+*
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "c2k_lmd_model.h"
+#include "lmddefs.h"
+
+/* LMD Messages */
+/*MSG_ID_LMD_L1D_FWD_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdL1dFwdDataIndMsgT msg;
+
+} lmd_l1d_fwd_data_ind_msg_struct; 
+
+
+
+/*MSG_ID_LMD_REVERSE_ACCESS_SIG_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	LmdReverseAccessSigMsgT msg;
+} lmd_reverse_access_sig_msg_struct;
+
+/*MSG_ID_LMD_ACCESS_PROBE_ABORT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_access_probe_abort_msg_struct;
+
+/*MSG_ID_LMD_TRAFFIC_CHAN_START_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTrafficChanStartMsgT msg;
+} lmd_traffic_chan_start_msg_struct;
+
+/*MSG_ID_LMD_TRAFFIC_CHAN_STOP_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_traffic_chan_stop_msg_struct;
+
+/*MSG_ID_LMD_RLP_REV_FUNDICATED_DATA_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdRevFundicatedDataReqMsgT msg;
+} lmd_rlp_rev_fundicated_data_req_msg_struct;
+
+/* MSGs used in UT */
+/*MSG_ID_UT_LMD_FWD_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    c2k_fwd_dbuf_mailbox_registers_struct c2k_fwd_dbuf_mailbox_registers;
+} ut_lmd_fwd_data_ind_msg_struct;
+
+/*MSG_ID_UT_LMD_REV_DATA_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    c2k_rev_dbuf_mailbox_registers_struct msg;
+} ut_lmd_rev_data_req_msg_struct;
+
+/*MSG_ID_LMD_SERVICE_CONFIGURATION_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdServiceConfigurationMsgT msg;
+} lmd_service_configuration_msg_struct;
+
+/*MSG_ID_LMD_SERVICE_CONFIG_NN_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdServiceConfigurationNnMsgT msg;
+} lmd_service_config_nn_msg_struct;
+
+/*MSG_ID_LMD_SERVICE_OPTION_CONTROL_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	LmdServiceOptionControlMsgT msg;
+} lmd_service_option_control_msg_struct;
+
+/*MSG_ID_LMD_PWR_CTL_PARMS_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdPwrCtlParmsMsgT msg;
+} lmd_pwr_ctl_parms_msg_struct;
+
+/*MSG_ID_LMD_SCH_REV_TDSO_DATA_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdRevSchDataReqMsgT msg;
+} lmd_sch_rev_tdso_data_msg_struct;
+
+/*MSG_ID_LMD_FCH_REV_TDSO_DATA_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdRevFundicatedDataReqMsgT msg;
+} lmd_fch_rev_tdso_data_msg_struct;
+
+/*MSG_ID_LMD_RLP_REV_SCH_DATA_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdRevSchDataReqMsgT msg;
+} lmd_rlp_rev_sch_data_req_msg_struct;
+
+/*MSG_ID_LMD_TRANSMITTER_STATUS_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTransmitterStatusMsgT msg;
+} lmd_transmitter_status_msg_struct;
+
+/*MSG_ID_LMD_SET_STAT_CNT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdSetStatCntMsgT msg;
+} lmd_set_stat_cnt_msg_struct;
+
+/*MSG_ID_LMD_GET_STAT_CNT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdGetStatCntMsgT msg;
+} lmd_get_stat_cnt_msg_struct;
+
+/*MSG_ID_LMD_SET_FER_STATS_NUM_FRAMES_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdSetFerStatsNumFramesMsgT msg;
+} lmd_set_fer_stats_num_frames_msg_struct;
+
+/*MSG_ID_LMD_GET_DEBUG_SCRN_INFO_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdGetDebugScrnInfoRequestT msg;
+} lmd_get_debug_scrn_info_msg_struct;
+
+/*MSG_ID_LMD_SPEECH_DISABLE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdSpeechDisableMsgT msg;
+} lmd_speech_disable_msg_struct;
+
+/*MSG_ID_LMD_COUNTER_SUSPEND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdCounterSuspendMsgT msg;
+} lmd_counter_suspend_msg_struct;
+
+/*MSG_ID_LMD_RESOURCE_UPDATE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdResourceUpdateT msg;
+} lmd_resource_update_msg_struct;
+
+/*MSG_ID_LMD_FSCH_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdFschMsgT msg;
+} lmd_fsch_msg_struct;
+
+/*MSG_ID_LMD_FSCH_BURST_END_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdFschBurstEndMsgT msg;
+} lmd_fsch_burst_end_msg_struct;
+
+/*MSG_ID_LMD_RSCH_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdRschMsgT msg;
+} lmd_rsch_msg_struct;
+
+/*MSG_ID_LMD_FSCH_PDU_ORDER_CTRL_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdFschPduOrderCtrlMsgT msg;
+} lmd_fsch_pdu_order_ctrl_msg_struct;
+
+/*MSG_ID_LMD_MARKOV_SERVICE_OPTION_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	LmdMsoFwdChDataMsgT msg;
+} lmd_markov_service_option_msg_struct;
+
+/*MSG_ID_LMD_CLEAR_MARKOV_STATS_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdMsoClearStatsMsgT msg;
+} lmd_clear_markov_stats_msg_struct;
+
+/*MSG_ID_LMD_LOOPBACK_SERVICE_OPTION_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	IpcDsvSendSpkrVoiceFwdChPcktDataMsgT msg;
+} lmd_loopback_service_option_msg_struct;
+
+/* MSG_ID_LMD_REVERSE_TRAFFIC_SIG_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+	LmdReverseTrafficSigMsgT msg;
+} lmd_reverse_traffic_sig_msg_struct;
+
+/* MSG_ID_LMD_CONVERSATION_SUBSTATE_CONN_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_conversation_substate_conn_msg_struct;
+
+/*MSG_ID_LMD_CONVERSATION_SUBSTATE_DISC_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_conversation_substate_disc_msg_struct;
+
+/*MSG_ID_LMD_RSCH_STOP_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_rsch_stop_msg_struct;
+
+
+
+/*MSG_ID_LMD_RESET_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_reset_msg_struct;
+
+/*MSG_ID_LMD_RLP_STOP_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} lmd_rlp_stop_req_msg_struct;
+
+
+
+/*MSG_ID_LMD_TX_LOOPBACK_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	IpcCpSpchDataRevChPacketMsgT msg;
+} lmd_tx_loopback_msg_struct;
+
+/*MSG_ID_LMD_TX_MARKOV_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+	IpcCpSpchDataRevChPacketMsgT msg;
+} lmd_tx_markov_msg_struct;
+
+
+/* LMD_S Messages */
+/*MSG_ID_LMD_S_TDSO_CONNECT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTdsoConnectMsgT msg;
+} lmd_s_tdso_connect_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_DISCONNECT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTdsoDisconnectMsgT msg;
+} lmd_s_tdso_disconnect_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_CONTROL_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdServiceOptionControlMsgT msg;
+} lmd_s_tdso_control_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_DATA_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTdsoFwdChDataMsgT msg;
+} lmd_s_tdso_data_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_CLEAR_STATS_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTdsoClearStatsMsgT msg;
+} lmd_s_tdso_clear_stats_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_RANDOM_NUMBER_CALC_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdTdsoRandomNumberCalcMsgT msg;
+} lmd_s_tdso_random_number_calc_msg_struct;
+
+/*MSG_ID_LMD_EACH_SIG_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LmdReverseEACHSigMsgT msg;    
+}lmd_each_sig_msg_struct;
+
+/*MSG_ID_LMD_SIM_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR   
+}lmd_sim_msg_struct;
+
+/*MSG_ID_LMD_RESET_STAT_CNT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR   
+}lmd_reset_stat_cnt_msg_struct;
+
+/*MSG_ID_LMD_CLEAR_FWD_SCH_DTX_STATS_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR   
+}lmd_clear_fwd_sch_dtx_stats_msg_struct;
+
+
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmdapi.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmdapi.h
new file mode 100644
index 0000000..9c6611c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmdapi.h
@@ -0,0 +1,1235 @@
+/*****************************************************************************
+*  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 _LMDAPI_H_
+#define _LMDAPI_H_
+/*****************************************************************************
+* 
+* FILE NAME   : lmdapi.h
+*
+* DESCRIPTION :
+*
+*   This is the interface include file for LMD.
+*   It is organized by first defining the EXE mailboxes and signals used.
+*   After this, the enumerated message IDs are defined.  Basic typedefs follow
+*   this and Following that is the message structure for each message.
+*
+*   NOTE: At the end of the file are typedefs that the PS had expected to find in
+*         this file during CBP3 development.  These are included here as a temporary
+*         workaround until these issues can be resolved.
+*
+* HISTORY     :
+*   See Log at end of file
+*
+*****************************************************************************/
+
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "sysdefs.h"
+#include "sysapi.h"
+#include "rlpwapi.h"
+#include "lmd_msgid.h"
+#include "lmd_audio.h"
+
+/*----------------------------------------------------------------------------
+* EXE Interfaces - Definition of Signals and Mailboxes
+*----------------------------------------------------------------------------*/
+/* array size for long code mask */
+#define LMD_LONG_CODE_MASK_SIZE     6
+#define MOD_DUMMY                   0
+
+/* Voice Memo prefetch buffer size = (max size frame + the rate word) X 4.
+ *
+ * LMD defines a static buffer SpchData[] where it prefetches the speech
+ * data during voice memo or answering machine playback.  There are
+ * conditions where FSM is late in doing the block reads and LMD would
+ * be starving of data.  By making the buffer size 4 times bigger than
+ * the maximun speech packet size we guarantee that LMD will always have
+ * at least one packet in prefetch buffer.
+ */
+
+/*---------------------------------------------------------------
+*  Message IDs for signals and commands sent to LMD
+*---------------------------------------------------------------*/
+/* Maximum number of SCH */
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+#define  MAX_PDU_NUM         8  /* now 8 for one SCH */
+#else
+#define  MAX_PDU_NUM         1  /* now 8 for one SCH */
+#endif
+
+#define MAX_ACCESS_MSG_LEN          111
+#define MAX_MSG_LEN                 255
+#define PCH_FRAME_LEN               24
+#define MAX_FCH_FRAME_BYTE_LEN      34
+
+/*
+** Messages of LmdCmdMsgIdT type
+** should be sent to the LMD_CMD_MAILBOX.
+*/
+#include "lmd_msgid.h"
+
+
+/*Move some structures form dspmapi.h to here*/
+/* Forward channel modem channel buffer sizes in kal_uint16 */
+#define IPC_DTA_MBOX_M2C_CH0_SIZE     17
+#define IPC_DTA_MBOX_M2C_CH1_SIZE     30
+#define IPC_DTA_MBOX_M2C_CH2_SIZE     47
+
+/* Reverse channel modem channel buffer sizes in kal_uint16 */
+#define IPC_DTA_MBOX_C2M_CH0_SIZE     17
+#define IPC_DTA_MBOX_C2M_CH1_SIZE     17
+#define IPC_DTA_MBOX_C2M_CH2_SIZE     390
+/* Reverse channel signaling buffer size in kal_uint16 */
+#define IPC_DTA_MBOX_C2M_SIGBUF_SIZE  5
+
+/* define for varais in lmddbuf.c*/
+#define  IPC_DTA_MBOX_C2M_CH0_SIZE_IN_DB_WORDS 9
+#define  IPC_DTA_MBOX_C2M_CH2_SIZE_IN_DB_WORDS 195
+
+typedef enum
+{
+   LMD_REV_NULL_CHNL        = 0,
+   LMD_REV_ACCESS_CHNL,
+   LMD_REV_EACH_CHNL,
+   LMD_REV_TRAFFIC_CHNL
+} LmdRevChanTypeT;
+
+typedef enum                      /* Rev fch rate */
+{
+  R_FULL = 0,
+  R_HALF,
+  R_QUARTER,
+  R_EIGHTH,
+  R_ZERO
+} LmdRevFundRateTypeT;
+
+typedef enum
+{
+   IPC_FWD_FRAME_BLANK       = 0x0,
+   IPC_FWD_FRAME_EIGHTH      = 0x1,
+   IPC_FWD_FRAME_QUARTER     = 0x2,   /* not used for SSO 3 */
+   IPC_FWD_FRAME_HALF        = 0x3,
+   IPC_FWD_FRAME_FULL        = 0x4,
+   IPC_FWD_FRAME_ERASURE     = 0xE,
+   IPC_FWD_FRAME_FULL_LIKELY = 0xF    /* used only for SSO's 1&3 */
+} LmdFwdFrameRateT;
+
+typedef enum
+{
+   FER_FCH = 0,
+   FER_SCH,
+   FER_MAX_CHANNELS
+} LmdFerStatsChannelsT;
+
+typedef enum
+{
+   FSYNC,
+   FPAGE,
+   FBCCH,
+   FQPCH,
+   FCPCCH,
+   FCACH,
+   FCCCH,
+   FDCCH,
+   FFCH,   /* also for traffic channel in IS95 FTCH */
+   FSCH,
+   F_MON_CHNL,
+   FPDCH,
+   FWD_MAX_CHNL_TYPS
+} LmdFwdChnlTypeT;
+
+/*---------------------------------------------------------------
+*  Basic Types
+*---------------------------------------------------------------*/
+
+/*
+** The Logic To Physical Mapping (LPM) table is used in
+** the service configuration messages.
+*/
+#define MAX_LPM_ENTRIES 15
+
+typedef struct
+{
+    kal_uint8    SrId;
+    kal_uint8    LogicalResource;
+    kal_uint8    PhysicalResource;
+    kal_bool     ForwardFlag;
+    kal_bool     ReverseFlag;
+    kal_uint8    Priority;
+} LmdLpmT;
+
+
+/*---------------------------------------------------------------
+*  Message Definitions
+*       There is a section for each defined message type.  If
+*       there is no MsgT shown, there is no data associated with
+*       the message.
+*---------------------------------------------------------------*/
+
+/*LMD_L1D_FWD_DATA_IND_MSG*/
+typedef struct
+{
+    kal_bool   FchChnlQuality;
+    kal_bool   SchChnlReady;
+    kal_bool   SchChnlQuality;
+    kal_uint16 FchEbNt;
+    kal_uint16 DecodeSucPcgIndex;
+    kal_uint16 AckReceivePcgIndex;
+    LmdFwdFrameRateT FchRate;
+    kal_uint16 FchDataLength;
+    kal_uint16 SchEbNt;
+    kal_uint16 SchDataLength;
+    kal_uint32  *FchDataAddress;
+    kal_uint32  *SchDataAddress;
+} LmdL1dFwdDataIndMsgT;
+
+
+
+
+
+
+
+
+/* 
+** LMD_REVERSE_ACCESS_SIG_MSG
+*/
+typedef struct
+{       
+    kal_uint8   MsgLength;  /* Length of the message in bytes */
+    kal_uint8   MsgData[MAX_ACCESS_MSG_LEN]; /* Starting address of the message            */
+}  LmdReverseAccessSigMsgT;
+
+/* The follwoing is for EACH frame durations*/
+typedef enum
+{
+	LMD_FRAME_DURATION_5MS,
+	LMD_FRAME_DURATION_10MS,
+	LMD_FRAME_DURATION_20MS
+}LmdFrameDurationT;
+
+/* 
+** LMD_EACH_SIG_MSG
+*/
+typedef struct
+{ 
+    kal_uint16            FrameNumBits;   /* number of bits per frame */
+	LmdFrameDurationT FrameDuration; /* Frame duration of EACH:5ms,10ms,20ms*/
+    kal_uint16            MsgLength;      /* Message length in bytes */
+    kal_uint8             MsgData[1];     /* Starting address of the message */
+} LmdReverseEACHSigMsgT;
+
+/* 
+** LMD_REVERSE_TRAFFIC_SIG_MSG
+*/
+typedef struct
+{
+    kal_uint8   PrevInUse;  /* minimum of mob_p_rev and p_rev */
+    kal_uint8   retryCount;
+    kal_uint16  MsgLength;  /* Length of message in bytes */
+    kal_uint8   MsgData[MAX_MSG_LEN];
+} LmdReverseTrafficSigMsgT;
+
+/*
+** LMD_ACCESS_PROBE_ABORT_MSG
+*/
+
+/* 
+** LMD_TRAFFIC_CHAN_START_MSG
+*/
+typedef struct
+{
+    kal_uint8     LcMask[LMD_LONG_CODE_MASK_SIZE];    /* Long code Mask */
+    kal_uint8     ChInd;          /* Channel Indicator: 1=FCH, 2=DCCH, 3=BOTH */
+								/* Note that the ch_ind has additional new entries 
+												corresponding to the ExtChInd for PDCH channel 
+												configurations, as follows:
+	        									4 = FPDCH_FCPCCH_RFCH,
+        										5 = FPDCH_FCPCCH_RDCCH,
+        										6 = FPDCH_FFCH_RFCH,
+        										7 = FPDCH_FDCCH_RDCCH,
+        										8 = FPDCH_RFCH_FFCH_RDCCH,
+        										9 = FPDCH_RFCH_FFCH_RDCCH_FDCCH   */
+
+    kal_uint16    ForMuxOption;
+    kal_uint16    RevMuxOption;
+    kal_uint8     ForRc;          /* RC for FCH and DCCH, see Table 3.7.2.3.2.21-3 */
+    kal_uint8     RevRc;          /* RC for FCH and DCCH, see Table 3.7.2.3.2.21-3 */
+    kal_uint8     NumLpmEntries;
+    LmdLpmT   LpmEntries[MAX_LPM_ENTRIES];
+    kal_uint8     FrameOffset;
+} LmdTrafficChanStartMsgT;
+
+/* 
+** LMD_SERVICE_CONFIGURATION_MSG
+*/
+#define     LMD_MAX_CON_REC     5
+#define     LMD_MAX_SCH_NUM     2
+
+typedef enum
+{
+    LMD_NO_TRAFFIC,
+    LMD_PRIMARY_TRAFFIC,
+    LMD_SECONDARY_TRAFFIC
+} LmdTrafficTypeT;
+
+typedef struct
+{
+    kal_uint8           ConRef;         /* service option connection reference  */
+    kal_uint16          ServiceOption;  /* associated service option    */
+    LmdTrafficTypeT ForTraffic;     /* forward traffic type */
+    LmdTrafficTypeT RevTraffic;     /* reverse traffic type */
+    kal_uint8           SrId;
+} LmdConnectionRecordT;
+
+typedef struct
+{
+   kal_uint8         SchId;
+   kal_bool          Coding; /*  True-- Turbo is On */
+   kal_uint16        SchMux; /* MuxOption of */
+   kal_uint8         SchRc;
+} LmdSchChanConfigT;
+
+typedef struct
+{
+    kal_uint16              ForMuxOption;
+    kal_uint16              RevMuxOption;
+    kal_uint8               ForNumBits;
+    kal_uint8               RevNumBits;
+    kal_uint8               NumConRec;
+    LmdConnectionRecordT    ConRec[LMD_MAX_CON_REC];        
+    kal_bool                FchCcIncl;            
+    SysFchFrameSizeT    FchFrameSize;       /* valid only if FchCcIncl = 1 */
+    kal_uint8               FchForRc;
+    kal_uint8               FchRevRc;
+    kal_bool                DcchCcIncl;
+    SysDcchFrameSizeT   DcchFrameSize;      /* valid only if dcch_cc_incl = 1 */
+    kal_uint8               DcchForRc;
+    kal_uint8               DcchRevRc;
+    kal_bool                ForSchCcIncl;
+    kal_uint8               NumForSch;          /* Number of Fwd SCH*/
+    LmdSchChanConfigT   ForSchConfig[LMD_MAX_SCH_NUM];
+    kal_bool                RevSchCcIncl;
+    kal_uint8               NumRevSch;          /* number of Rev SCH*/
+    LmdSchChanConfigT   RevSchConfig[LMD_MAX_SCH_NUM];
+
+    kal_bool                ForPdchCcIncl;		/* If T, the following F-PDCH fields apply */
+    kal_uint16              ForPdchMuxOption;         
+    kal_uint8   			ForPdchRc;   
+} LmdServiceConfigurationT;
+
+/*used for lmdsrvcfg.c*/
+typedef struct
+{
+   kal_uint8           FwdLogicalRes;
+   kal_uint8           FwdPhysicalResCount;
+   kal_uint8           FwdPhysicalRes;/* bit map */
+   kal_uint8           FwdPhysicalResOn;
+   LmdTrafficTypeT FwdTraffic;
+}ForwardConfigT;
+
+typedef struct
+{
+   kal_uint8           RevLogicalRes;
+   kal_uint8           RevPhysicalResCount;
+   kal_uint8           RevPhysicalRes;/* bit map*/
+   kal_uint8           RevPhysicalResOn;
+   LmdTrafficTypeT RevTraffic;
+}ReverseConfigT;
+
+typedef struct
+{
+   LmdServiceOptionT ServiceOpt;
+   kal_uint16        SvcTaskId;
+}ServiceConfigT;
+
+typedef struct
+{
+   kal_uint8          priority;
+   ForwardConfigT forward;
+   ReverseConfigT reverse;
+   ServiceConfigT service;
+}LmdSridDataT;
+
+typedef struct
+{
+    LmdServiceConfigurationT SrvcConfig;    /* traffic channel service configuration */
+    SysActionTimeT           ActTime;       /* Time this message takes effect */
+    kal_bool                     SrvcConfigNonNegInc;
+} LmdServiceConfigurationMsgT;
+
+
+/* 
+** LMD_SERVICE_CONFIG_NN_MSG
+*/
+typedef struct
+{
+    kal_uint8           NumLpmEntries;
+    LmdLpmT         LpmEntries[MAX_LPM_ENTRIES];
+    SysActionTimeT  ActTime;         /* Time this message takes effect */
+} LmdServiceConfigurationNnMsgT;
+
+typedef struct
+{
+   SysActionTimeT    ActTime;       /* system time (uint=20 ms) to  */
+                                    /* send message                 */
+   LmdServiceOptionT ServiceOption; /* service option number        */
+   kal_uint8             ConRef;        /* connection reference being controled */
+   kal_uint8             DataSize;      /* control data size in bytes   */
+   kal_uint8             Data[MAX_MSG_LEN];       /* control data                 */
+} LmdServiceOptionControlMsgT;
+
+/* 
+** LMD_CONVERSATION_SUBSTATE_CONN_MSG
+*/
+
+/* 
+** LMD_CONVERSATION_SUBSTATE_DISC_MSG
+*/
+
+/* 
+** LMD_PWR_CTL_PARMS_MSG
+*/
+typedef struct
+{ 
+   kal_uint8    ChanMonitor;           /* 0 = FCH, 1 = DCCH */
+   kal_bool     PwrThreshEnable;
+   kal_uint8    PwrRepThresh;
+   kal_bool     PwrPeriodEnable;
+   kal_uint8    PwrRepFrames;
+   kal_uint8    PwrRepDelay;
+   kal_bool     ResetFPC;
+} LmdPwrCtlParmsMsgT;
+
+
+typedef struct 
+{
+   kal_uint16 ParmId;
+   kal_uint32 Value;
+} LmdRevStatT;
+
+typedef struct
+{
+   kal_uint16      NumRecs;
+   LmdRevStatT Rec[1];
+} LmdRevStatSetMsgT;
+
+typedef enum
+{
+   LMD_FULL_RATE     = 0x80,
+   LMD_HALF_RATE     = 0x40,
+   LMD_QUARTER_RATE  = 0x20,
+   LMD_EIGHTH_RATE   = 0x10,
+   LMD_NULL_RATE     = 0x00
+} LmdRatesT;
+
+
+ /*
+ ** LMD_RLP_REV_FUNDICATED_DATA_REQ_MSG
+ */
+ 
+#define MAX_FUNDICATED_FRAME_SIZE 34   /* Max. size per RLP frame in byte.  */
+ typedef struct
+ {
+   kal_uint8  priSrId;                /* SR_ID for Primary Traffic     */
+   SysRlpFrameRateE priRate;      /* frame rate for primary        */ 
+   kal_uint8  priData[MAX_FUNDICATED_FRAME_SIZE];  /* data buffer for primary       */
+     
+   kal_uint8  secSrId;                /* SR_ID for Secondary Traffic   */
+   SysRlpFrameRateE secRate;      /* frame rate for secondary      */
+   kal_uint8  secData[MAX_FUNDICATED_FRAME_SIZE];  /* data buffer for secondary     */
+ } LmdRevFundicatedDataReqMsgT;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/*
+** LMD_RLP_REV_SCH_DATA_REQ_MSG
+*/
+#define NUM_RSCH_FRAMES                   8
+#define REV_SCH_NON_RLP_IND           0xFF
+#define REV_SCH_RLP_IND                   0
+
+ typedef struct
+ {
+   kal_uint8      srId;
+   kal_uint8      frameFormat; /* The first 2 bits of RLP frame at SCH goes to the lower
+                                   2 bits of frameType */
+   SysRlpFrameRateE frameRate;      /* The number of byte */
+   kal_uint8     pduType;  /* MuxPdu Type used for TDSO */
+   kal_uint16   frameLen;
+   kal_uint8*    dataPtr;
+ } LmdPduT;
+ 
+ typedef struct
+ {
+   kal_uint8       schUser;    /* Used to indicate if RLP or TDSO uses R-SCH */
+   kal_uint8        numSchFrames; /* Number of PDU data packets    */
+   LmdPduT  schFrames[NUM_RSCH_FRAMES];    /* data type defined in PDUOctet */
+ } LmdRevSchDataReqMsgT;
+
+/*
+** LMD_SCCH_REV_DATA_MSG
+*/
+typedef  struct
+{
+   kal_bool       IsSecondary;    /* False=Primary, True=Secondary */
+   kal_uint8      NumberOfSCCH;   /* Number of SCCH included       */
+   kal_uint8*     Data[7];        /* data pointed by Data          */
+} LmdScchRevDataMsgT;
+
+/*
+** LMD_SEC_HIGH_MSG,
+*/
+typedef struct
+{
+   kal_bool SecPriorityHigh;
+} LmdSecHighMsgT;
+
+typedef enum
+{
+   LMD_TRANSMITTER_STATUS_ON, /* Transmitter is off */
+   LMD_TRANSMITTER_STATUS_OFF /* Transmitter is on */
+} LmdTransmitterStatusT;
+
+/*
+** LMD_TRANSMITTER_STATUS_MSG,
+*/
+typedef struct
+{
+   LmdTransmitterStatusT Status;
+}  LmdTransmitterStatusMsgT;
+
+/*
+** LMD_SET_STAT_CNT_MSG,
+*/
+
+typedef  struct {
+   kal_uint8          Offset;              /* Offset from first element     */
+   kal_uint32         Value;               /* Value received from BS        */
+}  SetValueT;
+
+/*
+** LMD_SET_STAT_CNT_MSG,
+*/
+typedef struct {
+   StatCounterT   StatCounter;         /* Statistics counter            */
+   kal_uint8          NumSetValue;         /* Number of set value included  */
+   SetValueT      SetValue[MAX_STAT_ELEMENT];
+}  LmdSetStatCntMsgT;
+
+/*
+** LMD_GET_STAT_CNT_MSG,
+*/
+typedef struct {
+  StatCounterT    StatCounter;         /* Statistics counter */
+} LmdGetStatCntMsgT;
+
+/*
+** LMD_SET_FER_STATS_NUM_FRAMES_MSG,
+*/
+typedef struct {
+  kal_uint16    NumFrames;                /* Number of frames for running average */
+} LmdSetFerStatsNumFramesMsgT;
+
+/*
+**LMD_GET_DEBUG_SCRN_INFO_MSG,
+*/
+typedef struct {
+  ExeRspMsgT  RspInfo;                    /* Response routing information */
+} LmdGetDebugScrnInfoRequestT;
+
+typedef struct {
+  kal_uint16 badframes;
+  kal_uint16 totframes;
+} LmdGetDebugScrnInfoResponseT;
+
+/*
+** LMD_SPEECH_DISABLE_MSG,
+*/
+typedef struct 
+{
+   kal_bool Disable;
+   kal_bool Restart;    /* KAL_TRUE if speech connection to be restarted, 
+                       KAL_FALSE if just disabling routing of speech but remain connected */
+} LmdSpeechDisableMsgT;
+
+/****************FSCH muxHwPdu********************/
+/* MuxPDU Type Definitions */
+typedef enum
+{
+   LMD_MP_MUXTYPE_1 = 0,
+   LMD_MP_MUXTYPE_2,
+   LMD_MP_MUXTYPE_3,
+   LMD_MP_MUXTYPE_5,
+   LMD_MP_MUXTYPE_MAX
+} LmdMpMuxTypeT;
+
+/* MuxPDU Header */
+typedef struct
+{
+   kal_uint16      sr_id;
+   kal_uint16      Len;
+   kal_uint16      ExtHeader;
+   kal_uint16      Padding[1];
+   CpBufferT       *MpBufPtr;            /* MuxPDU RAM buffer pointer */
+} LmdSchHeaderT; /* 12 bytes */
+
+/* MuxPDU Configuration */
+typedef struct
+{
+   kal_uint8       MuxType;          /* 1/2/3/5 */
+   kal_uint16      FrameLength;      /* Frame length in bits - used in BYPASS mode  */
+} LmdMpConfigT;
+
+//extern kal_bool LmdMpRawSpyEnabled;
+#define  LMD_MP_MAX_PDUS            100
+
+typedef enum
+{
+   MUX1_REV_FCH_1    = 1,      
+   MUX1_REV_FCH_2,     
+   MUX1_REV_FCH_3,      
+   MUX1_REV_FCH_4,
+   MUX1_REV_FCH_5,             
+   MUX1_REV_FCH_6,     
+   MUX1_REV_FCH_7,      
+   MUX1_REV_FCH_8,
+   MUX1_REV_FCH_9,     /* Reserved */
+   MUX1_REV_FCH_10,    /* Reserved */
+   MUX1_REV_FCH_11,            
+   MUX1_REV_FCH_12,    
+   MUX1_REV_FCH_13,     
+   MUX1_REV_FCH_14,
+   MUX1_FOR_FCH_1    = 15,     
+   MUX1_FOR_FCH_2,     
+   MUX1_FOR_FCH_3,      
+   MUX1_FOR_FCH_4,
+   MUX1_FOR_FCH_5,             
+   MUX1_FOR_FCH_6,     
+   MUX1_FOR_FCH_7,      
+   MUX1_FOR_FCH_8,
+   MUX1_FOR_FCH_9,             
+   MUX1_FOR_FCH_10,    
+   MUX1_FOR_FCH_11,     
+   MUX1_FOR_FCH_12,
+   MUX1_FOR_FCH_13,            
+   MUX1_FOR_FCH_14,
+   PAG_1             = 29,    /* number of paging ch messages received         */
+   PAG_2,                     /* number of paging ch messages with bad crc     */
+   PAG_3,                     /* number of paging ch msgs addressed to mobile  */
+   PAG_4,                     /* number of paging ch half frames received      */
+   PAG_5,                     /* # pag half frames rec. part of a valid message*/
+   PAG_6,                     /* number of times loss of paging ch declared    */
+   PAG_7,                     /* number of idle handoffs                       */   
+   ACC_1             = 36,    /* number of layer 3 requests messages generated */
+   ACC_2,                     /* number of layer 3 response messages generated */
+   ACC_3,                     /* number of times access probe was gen. 2 times */
+   ACC_4,                     /* number of times access probe was gen. 3 times */
+   ACC_5,                     /* number of times access probe was gen. 4 times */
+   ACC_6,                     /* number of times access probe was gen. 5 times */
+   ACC_7,                     /* number of times access probe was gen. 6 times */
+   ACC_8,                     /* number of unsuccessful access attempts        */
+   LAYER2_RTC1       = 44,     
+   LAYER2_RTC2,        
+   LAYER2_RTC3,         
+   LAYER2_RTC4,
+   LAYER2_RTC5,
+   OTHER_SYS_TIME    = 49,
+   MUX2_REV_FCH_1    = 50,     
+   MUX2_REV_FCH_2,     
+   MUX2_REV_FCH_3,      
+   MUX2_REV_FCH_4,
+   MUX2_REV_FCH_5,             
+   MUX2_REV_FCH_6,     
+   MUX2_REV_FCH_7,      
+   MUX2_REV_FCH_8,
+   MUX2_REV_FCH_9,             
+   MUX2_REV_FCH_10,    
+   MUX2_REV_FCH_11,     
+   MUX2_REV_FCH_12,
+   MUX2_REV_FCH_13,            
+   MUX2_REV_FCH_14,    
+   MUX2_REV_FCH_15,     
+   MUX2_REV_FCH_16,
+   MUX2_REV_FCH_17,            
+   MUX2_REV_FCH_18,    
+   MUX2_REV_FCH_19,     
+   MUX2_REV_FCH_20,
+   MUX2_REV_FCH_21,            
+   MUX2_REV_FCH_22,    
+   MUX2_REV_FCH_23,     
+   MUX2_REV_FCH_24,
+   MUX2_REV_FCH_25,            
+   MUX2_REV_FCH_26,
+   MUX2_FOR_FCH_1    = 76,     
+   MUX2_FOR_FCH_2,     
+   MUX2_FOR_FCH_3,      
+   MUX2_FOR_FCH_4,
+   MUX2_FOR_FCH_5,             
+   MUX2_FOR_FCH_6,     
+   MUX2_FOR_FCH_7,      
+   MUX2_FOR_FCH_8,
+   MUX2_FOR_FCH_9,             
+   MUX2_FOR_FCH_10,    
+   MUX2_FOR_FCH_11,     
+   MUX2_FOR_FCH_12,
+   MUX2_FOR_FCH_13,            
+   MUX2_FOR_FCH_14,    
+   MUX2_FOR_FCH_15,     
+   MUX2_FOR_FCH_16,
+   MUX2_FOR_FCH_17,            
+   MUX2_FOR_FCH_18,    
+   MUX2_FOR_FCH_19,     
+   MUX2_FOR_FCH_20,
+   MUX2_FOR_FCH_21,            
+   MUX2_FOR_FCH_22,    
+   MUX2_FOR_FCH_23,     
+   MUX2_FOR_FCH_24,
+   MUX2_FOR_FCH_25,            
+   MUX2_FOR_FCH_26,
+   /* reverse SCCH  not supported in CBP4 */
+   SCCH1_REV_S       = 102,    
+   SCCH1_REV_P,        
+   SCCH2_REV_S,         
+   SCCH2_REV_P,  
+   SCCH3_REV_S,                
+   SCCH3_REV_P,        
+   SCCH4_REV_S,         
+   SCCH4_REV_P,  
+   SCCH5_REV_S,                
+   SCCH5_REV_P,        
+   SCCH6_REV_S,         
+   SCCH6_REV_P,  
+   SCCH7_REV_S,                
+   SCCH7_REV_P,             
+   /* forward SCCH  not supported in CBP4 */
+   SCCH1_FOR_S       = 116,    
+   SCCH1_FOR_P,        
+   SCCH2_FOR_S,         
+   SCCH2_FOR_P,
+   SCCH3_FOR_S,                
+   SCCH3_FOR_P,        
+   SCCH4_FOR_S,         
+   SCCH4_FOR_P,
+   SCCH5_FOR_S,                
+   SCCH5_FOR_P,        
+   SCCH6_FOR_S,         
+   SCCH6_FOR_P,
+   SCCH7_FOR_S,                
+   SCCH7_FOR_P,
+   /* MM RTC not supported in CBP4 */
+   MM_RTC1           = 130,    
+   MM_RTC2,            
+   MM_RTC3,             
+   MM_RTC4,
+   MM_RTC5,
+   
+   MUX1_REV_FCH_15   = 135,    /* Reserved */      
+   MUX1_REV_FCH_5_ms,          /* not supported in CBP4 */
+   MUX1_FOR_FCH_15,            /* Reserved */      
+   MUX1_FOR_FCH_5_ms,          /* not supported in CBP4 */
+   MUX2_REV_FCH_27,            /* Reserved */      
+   MUX2_REV_FCH_5_ms,          /* not supported in CBP4 */
+   MUX2_FOR_FCH_27,            /* Reserved */      
+   MUX2_FOR_FCH_5_ms,          /* not supported in CBP4 */
+   
+   MUX1_REV_DCCH_1   = 143,    
+   MUX1_REV_DCCH_2,    
+   MUX1_REV_DCCH_3,     
+   MUX1_REV_DCCH_4,
+   MUX1_REV_DCCH_5,            
+   MUX1_REV_DCCH_6,    
+   MUX1_REV_DCCH_7,     
+   MUX1_REV_DCCH_8,
+   MUX1_REV_DCCH_9,            
+   MUX1_REV_DCCH_10,   
+   MUX1_REV_DCCH_11,    
+   MUX1_REV_DCCH_12,
+   MUX1_REV_DCCH_13,           
+   MUX1_REV_DCCH_14,   
+   MUX1_REV_DCCH_15,   
+   MUX1_REV_DCCH_5_ms,  /* not supported in CBP4 */
+  
+   MUX1_FOR_DCCH_1   = 159,    
+   MUX1_FOR_DCCH_2,    
+   MUX1_FOR_DCCH_3,     
+   MUX1_FOR_DCCH_4,
+   MUX1_FOR_DCCH_5,            
+   MUX1_FOR_DCCH_6,    
+   MUX1_FOR_DCCH_7,     
+   MUX1_FOR_DCCH_8,
+   MUX1_FOR_DCCH_9,            
+   MUX1_FOR_DCCH_10,   
+   MUX1_FOR_DCCH_11,    
+   MUX1_FOR_DCCH_12,
+   MUX1_FOR_DCCH_13,           
+   MUX1_FOR_DCCH_14,   
+   MUX1_FOR_DCCH_15,   
+   MUX1_FOR_DCCH_5_ms,  /* not supported in CBP4 */
+
+   MUX2_REV_DCCH_1   = 175,    
+   MUX2_REV_DCCH_2,    
+   MUX2_REV_DCCH_3,     
+   MUX2_REV_DCCH_4,
+   MUX2_REV_DCCH_5,            
+   MUX2_REV_DCCH_6,    
+   MUX2_REV_DCCH_7,     
+   MUX2_REV_DCCH_8,
+   MUX2_REV_DCCH_9,            
+   MUX2_REV_DCCH_10,   
+   MUX2_REV_DCCH_11,    
+   MUX2_REV_DCCH_12,
+   MUX2_REV_DCCH_13,           
+   MUX2_REV_DCCH_14,   
+   MUX2_REV_DCCH_15,    
+   MUX2_REV_DCCH_16,
+   MUX2_REV_DCCH_17,           
+   MUX2_REV_DCCH_18,   
+   MUX2_REV_DCCH_19,    
+   MUX2_REV_DCCH_20, 
+   MUX2_REV_DCCH_21,           
+   MUX2_REV_DCCH_22,   
+   MUX2_REV_DCCH_23,    
+   MUX2_REV_DCCH_24,    
+   MUX2_REV_DCCH_25,           
+   MUX2_REV_DCCH_26,   
+   MUX2_REV_DCCH_27,
+   MUX2_REV_DCCH_5_ms,  /* not supported in CBP4 */
+  
+   MUX2_FOR_DCCH_1   = 203,    
+   MUX2_FOR_DCCH_2,    
+   MUX2_FOR_DCCH_3,     
+   MUX2_FOR_DCCH_4,
+   MUX2_FOR_DCCH_5,            
+   MUX2_FOR_DCCH_6,    
+   MUX2_FOR_DCCH_7,     
+   MUX2_FOR_DCCH_8,
+   MUX2_FOR_DCCH_9,            
+   MUX2_FOR_DCCH_10,   
+   MUX2_FOR_DCCH_11,    
+   MUX2_FOR_DCCH_12,
+   MUX2_FOR_DCCH_13,           
+   MUX2_FOR_DCCH_14,   
+   MUX2_FOR_DCCH_15,    
+   MUX2_FOR_DCCH_16,
+   MUX2_FOR_DCCH_17,           
+   MUX2_FOR_DCCH_18,   
+   MUX2_FOR_DCCH_19,    
+   MUX2_FOR_DCCH_20, 
+   MUX2_FOR_DCCH_21,           
+   MUX2_FOR_DCCH_22,   
+   MUX2_FOR_DCCH_23,    
+   MUX2_FOR_DCCH_24,    
+   MUX2_FOR_DCCH_25,           
+   MUX2_FOR_DCCH_26,   
+   MUX2_FOR_DCCH_27,
+   MUX2_FOR_DCCH_5_ms,  /* not supported in CBP4 */
+
+   SCH0_REV_1X       = 231,    
+   SCH0_REV_2X,        
+   SCH0_REV_4X,         
+   SCH0_REV_8X,
+   SCH0_REV_16X,             
+   SCH0_REV_LTU,       
+   SCH0_REV_LTUOK,  /* not supported in CBP4 */
+
+   /*  reverse SCH1 not supported in CBP4 */
+   SCH1_REV_1X       = 238,    
+   SCH1_REV_2X,        
+   SCH1_REV_4X,         
+   SCH1_REV_8X,
+   SCH1_REV_16X,
+   SCH1_REV_LTU,
+   SCH1_REV_LTUOK,   /* not supported in CBP4 */
+
+   SCH0_FOR_1X       = 245,    
+   SCH0_FOR_2X,        
+   SCH0_FOR_4X,         
+   SCH0_FOR_8X,
+   SCH0_FOR_16X,
+   SCH0_FOR_LTU,
+   SCH0_FOR_LTUOK,   /* not supported in CBP4 */
+
+   /*  forward SCH1 not supported in CBP4 */
+   SCH1_FOR_1X       = 252,    
+   SCH1_FOR_2X,        
+   SCH1_FOR_4X,         
+   SCH1_FOR_8X,
+   SCH1_FOR_16X,
+   SCH1_FOR_LTU,
+   SCH1_FOR_LTUOK,    /* not supported in CBP4 */
+   BCCH_1,/* = 259 */      
+   BCCH_2,    
+   BCCH_3,
+   BCCH_4,
+   BCCH_5,
+   FCCCH_1,
+   FCCCH_2,
+   FCCCH_3,
+   FCCCH_4,
+/* EACH */
+ #ifdef LMD_EACH_ON
+   EACH_BA_1         = 470,
+   EACH_BA_2,
+   EACH_BA_3,
+   EACH_BA_4,
+   EACH_BA_5,
+   EACH_BA_6,
+   EACH_BA_7,
+   EACH_BA_8,
+ #endif
+   PCG_0_FOR_FCH_1 = 661,
+   PCG_0_FOR_FCH_2,
+   PCG_0_FOR_FCH_3,
+   PCG_0_FOR_FCH_4,
+   PCG_1_FOR_FCH_1,
+   PCG_1_FOR_FCH_2,
+   PCG_1_FOR_FCH_3,
+   PCG_1_FOR_FCH_4,
+   PCG_2_FOR_FCH_1,
+   PCG_2_FOR_FCH_2,
+   PCG_2_FOR_FCH_3,
+   PCG_2_FOR_FCH_4,
+   PCG_3_FOR_FCH_1,
+   PCG_3_FOR_FCH_2,
+   PCG_3_FOR_FCH_3,
+   PCG_3_FOR_FCH_4,
+   PCG_4_FOR_FCH_1,
+   PCG_4_FOR_FCH_2,
+   PCG_4_FOR_FCH_3,
+   PCG_4_FOR_FCH_4,
+   PCG_5_FOR_FCH_1,
+   PCG_5_FOR_FCH_2,
+   PCG_5_FOR_FCH_3,
+   PCG_5_FOR_FCH_4,
+   PCG_6_FOR_FCH_1,
+   PCG_6_FOR_FCH_2,
+   PCG_6_FOR_FCH_3,
+   PCG_6_FOR_FCH_4,
+   PCG_7_FOR_FCH_1,
+   PCG_7_FOR_FCH_2,
+   PCG_7_FOR_FCH_3,
+   PCG_7_FOR_FCH_4,
+   PCG_8_FOR_FCH_1,
+   PCG_8_FOR_FCH_2,
+   PCG_8_FOR_FCH_3,
+   PCG_8_FOR_FCH_4,
+   PCG_9_FOR_FCH_1,
+   PCG_9_FOR_FCH_2,
+   PCG_9_FOR_FCH_3,
+   PCG_9_FOR_FCH_4,
+   PCG_10_FOR_FCH_1,
+   PCG_10_FOR_FCH_2,
+   PCG_10_FOR_FCH_3,
+   PCG_10_FOR_FCH_4,
+   PCG_11_FOR_FCH_1,
+   PCG_11_FOR_FCH_2,
+   PCG_11_FOR_FCH_3,
+   PCG_11_FOR_FCH_4,
+   PCG_12_FOR_FCH_1,
+   PCG_12_FOR_FCH_2,
+   PCG_12_FOR_FCH_3,
+   PCG_12_FOR_FCH_4,
+   PCG_13_FOR_FCH_1,
+   PCG_13_FOR_FCH_2,
+   PCG_13_FOR_FCH_3,
+   PCG_13_FOR_FCH_4,
+   PCG_14_FOR_FCH_1,
+   PCG_14_FOR_FCH_2,
+   PCG_14_FOR_FCH_3,
+   PCG_14_FOR_FCH_4,
+   PCG_15_FOR_FCH_1,
+   PCG_15_FOR_FCH_2,
+   PCG_15_FOR_FCH_3,
+   PCG_15_FOR_FCH_4,
+   PCG_0_FOR_SCH_1 = 725,
+   ACK_TX_PCG_0_FCH = 805,
+   ACK_TX_PCG_1_FCH,
+   ACK_TX_PCG_2_FCH,
+   ACK_TX_PCG_3_FCH,
+   ACK_TX_PCG_4_FCH,
+   ACK_TX_PCG_5_FCH,
+   ACK_TX_PCG_6_FCH,
+   ACK_TX_PCG_7_FCH,
+   ACK_TX_PCG_8_FCH,
+   ACK_TX_PCG_9_FCH,
+   ACK_TX_PCG_10_FCH,
+   ACK_TX_PCG_11_FCH,
+   ACK_TX_PCG_12_FCH,
+   ACK_TX_PCG_13_FCH,
+   ACK_TX_PCG_14_FCH,
+   ACK_TX_PCG_15_FCH,
+   ACK_TX_PCG_0_SCH = 821,
+   ACK_RX_PCG_1_FCH = 837,
+   ACK_RX_PCG_2_FCH,
+   ACK_RX_PCG_3_FCH,
+   ACK_RX_PCG_4_FCH,
+   ACK_RX_PCG_5_FCH,
+   ACK_RX_PCG_6_FCH,
+   ACK_RX_PCG_7_FCH,
+   ACK_RX_PCG_8_FCH,
+   ACK_RX_PCG_9_FCH,
+   ACK_RX_PCG_10_FCH,
+   ACK_RX_PCG_11_FCH,
+   ACK_RX_PCG_12_FCH,
+   ACK_RX_PCG_13_FCH,
+   ACK_RX_PCG_14_FCH,
+   ACK_RX_PCG_15_FCH,
+   ACK_RX_PCG_1_SCH = 852,
+   END_OF_LIST
+ } RetrievableAndSettableParametersT;
+
+typedef enum
+{
+    R_NULL = 0,
+	R_ACCESS,
+	R_EACH,
+	R_TRAFFIC
+
+}RevChnlTypeT;
+
+typedef struct
+{
+  kal_bool  CounterSuspend;
+} LmdCounterSuspendMsgT;
+
+typedef struct
+{
+  SysActionTimeT     ActTime;
+  kal_uint8              ch_ind;		/* Channel Indicator: 1=FCH, 2=DCCH, 3=BOTH */
+									/* Note that the ch_ind has additional new entries 
+												corresponding to the ExtChInd for PDCH channel 
+												configurations, as follows:
+	        									4 = FPDCH_FCPCCH_RFCH,
+        										5 = FPDCH_FCPCCH_RDCCH,
+        										6 = FPDCH_FFCH_RFCH,
+        										7 = FPDCH_FDCCH_RDCCH,
+        										8 = FPDCH_RFCH_FFCH_RDCCH,
+        										9 = FPDCH_RFCH_FFCH_RDCCH_FDCCH   */
+  kal_bool               SrvConfigNonNegInc;
+} LmdResourceUpdateT;
+
+/*-----------------------------------------
+*   The Forward SCH  Msg.
+*------------------------------------------*/
+
+typedef struct
+{
+  kal_uint8               ForSchId;
+  kal_uint8               ForSchDuration;
+  kal_uint8               ForSchRate;
+
+} LmdFschRecT;
+
+typedef struct
+{
+   kal_bool             PilotGatingUseRate;
+   kal_bool             ForSchFerRep;
+   kal_uint8            NumForSch; /* number of SCH assigned.*/  
+   LmdFschRecT      FschRec[2];
+
+} LmdFschMsgT;
+
+typedef struct
+{
+  kal_uint8 sch_id;
+  kal_bool  FinalBurst;
+  
+} LmdFschBurstEndMsgT;
+/*-----------------------------------------
+*   The Reverse SCH  Msg.
+*------------------------------------------*/
+typedef struct
+{
+  kal_uint8              RevSchId;
+  kal_uint8              RevSchDuration;
+  kal_uint8              RevSchRate;
+
+} LmdRschRecT;
+
+typedef struct
+{
+   kal_uint8            RevSchDtxDuration;
+   kal_uint8            NumRevSch; /* number of SCH assigned.*/
+   LmdRschRecT      RschRec[LMD_MAX_SCH_NUM];
+   
+} LmdRschMsgT;
+
+
+/* The Fwd RLP Data Reading Order revert Msg */
+typedef struct
+{
+
+   kal_bool   ReadSwap;
+
+} LmdFschPduOrderCtrlMsgT;
+
+/*========================================================================================
+==========================================================================================
+===================== The following sections need to be resolved. ========================
+==========================================================================================
+========================================================================================*/
+
+
+typedef enum
+{
+  LMD_PRIORITY_NO_MSG,
+  LMD_PRIORITY_HIGH,  /* send in < 200 msec */
+  LMD_PRIORITY_MEDIUM,  /* send in < 300 msec */
+  LMD_PRIORITY_LOW  /* send in < 500 msec */
+} LmdMsgPriorityT;
+
+/*---------------------------------------------------------------
+*  Miscellaneous Typedefs
+*       These typedefs are not used in any of the messages defined
+*       so far.  They are here in case other units need these definitions
+*       to compile.  If they do not eventually move to message definitions,
+*       they should be removed from this file.
+*---------------------------------------------------------------*/
+
+typedef enum
+{
+    LMD_FRAME_RATE_FULL,
+    LMD_FRAME_RATE_HALF,
+    LMD_FRAME_RATE_QUARTER,
+    LMD_FRAME_RATE_EIGHTH,
+    LMD_FRAME_ERASURE,
+    LMD_FRAME_RATE_FULL_LIKELY,
+    LMD_FRAME_RATE       = 0x7FFFFFFF
+} LmdFrameRateFwdT;
+
+typedef struct
+{
+   kal_uint8 Frames;
+} LmdPowerReportFramesT;
+
+typedef enum
+{
+  LMD_RTC_PREAMBLE = 0,
+  LMD_RTC_SIGNALING_ONLY,
+  LMD_RTC_TRAFFIC
+} LmdRTCTrafficT;
+/* Tx signal Control data type */
+typedef enum
+{
+  LMD_REV_TX_DISABLE =0,
+  LMD_REV_TX_ENABLE=1
+
+}LmdTxSignalControlT;
+
+/* PT DATA */
+typedef struct
+{
+    kal_uint16 MsgId;
+    IpcCpSpchDataRevChPacketMsgT* PtDataMsgP;
+} LmdRevPtDataT;
+/* DS FCH DATA */
+typedef struct
+{
+    kal_uint16 MsgId;
+    LmdRevFundicatedDataReqMsgT* fchDataMsgP;
+} LmdRevDsFchDataT;
+/* DS SCH DATA */
+typedef struct
+{
+    kal_uint16 MsgId;
+    LmdRevSchDataReqMsgT* schDataMsgP;
+}LmdRevDsSchDataT;
+
+/*---------------------------------------------------------------
+**  Global function prototypes for use outside LMD
+**---------------------------------------------------------------*/
+/*--forward channel functions--*/
+extern void LmdIpcUpdateFwdStats(LmdFwdChnlTypeT ChnlType, kal_uint16 TotalFrames, kal_uint16 BadFrames);
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*--- Reverse Tx Signal Control handler----------*/
+extern void LmdRevTxSignalControl(LmdTxSignalControlT  TxSigControl, RevChnlTypeT Channel, kal_uint8  PcgIdx);
+
+
+/*--- Rev Sch Transmission Status --- */
+extern void LmdRevSchTxStatusSet(kal_bool RschTxAllowed);
+void LmdGetFrameInfo(kal_uint16 *badframes, kal_uint16 *totframes);
+
+/*--- Interrupt handlers --- */
+//extern void LmdMpLisr (void);
+//extern void LmdMpFIQIsr (void);
+
+extern void LmdFwdSetFrameOffset (kal_uint8 FrameOffset);
+extern void LmdFwdSetFwdBlankingDutyCycles (kal_uint8 FwdBlankingDutyCycle);
+extern void LmdFwdSetRevBlankingDutyCycles (kal_uint8 RevBlankingDutyCycle);
+
+/*---------------------------------------------------------------
+**  Global variable prototypes for use outside LMD
+**---------------------------------------------------------------*/
+
+//extern kal_uint16	LmdFerConsecutiveBadFrames[FER_MAX_CHANNELS]; /* 0: FCH, 1: SCH */
+//extern kal_uint16	LmdFerStats[FER_MAX_CHANNELS]; /* 0: FCH, 1: SCH */
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy_SO73\1 2013-07-10 07:00:01 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+/**Log information: \main\2 2013-07-17 08:16:12 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmddefs.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmddefs.h
new file mode 100644
index 0000000..79e5a03
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmddefs.h
@@ -0,0 +1,1297 @@
+/*****************************************************************************
+*  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 _LMDDEFS_H_
+#define _LMDDEFS_H_
+/*****************************************************************************
+* 
+* FILE NAME   : lmddefs.h
+*
+* DESCRIPTION : LMD unit definitions
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "lmdapi.h"
+#include "lmdsapi.h"
+#include "sysapi.h"
+#include "pswapi.h"
+#include "l1dapi.h"
+#include "rlpwapi.h"
+#include "cpbuf.h"
+#include "lmderr.h"
+#include "xl2_em.h"
+#include "lmd_audio.h"
+
+/* Bit maps for the Physical channel type */
+#define     PHY_RES_NULL             0x00
+#define     PHY_RES_FCH              0x01
+#define     PHY_RES_DCCH             0x02
+#define     PHY_RES_SCH0             0x04
+#define     PHY_RES_SCH1             0x08
+
+/* MUX Pdu Types */
+#define MUXPDUTYPE1                1
+#define MUXPDUTYPE2                2
+#define MUXPUDTYPE3                3
+#define MUXPDUTYPE4                4
+#define MUXPDUTYPE5                5
+#define MUXPDUTYPE6                6
+
+#define MUX_PDU_TYPE_5_SIGNALING_LIM 10
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+/*Used for VoiceEncryption in so32944*/
+#define PLAINT_LEN    171
+#define PLAINT_LEN_IN_SIZE 22
+#define PLAINT_LEN_IN_WORD 11
+#endif
+
+/*---------------------------------------------------------------
+*  IPC Direct Buffer Mailbox Interface
+*---------------------------------------------------------------*/
+
+/* Direct buffer maximum sizes */
+#define  REV_EACH_MBX_SIZE      47
+
+#define  REV_FCH_MBX_SIZE       IPC_DTA_MBOX_C2M_CH0_SIZE 
+#define  REV_DCCH_MBX_SIZE      IPC_DTA_MBOX_C2M_CH1_SIZE
+#define  REV_SCH_MBX_SIZE       IPC_DTA_MBOX_C2M_CH2_SIZE
+#define  REV_FCH_MBX_SIZE_IN_DB_WORD  IPC_DTA_MBOX_C2M_CH0_SIZE_IN_DB_WORDS
+#define  REV_SCH_MBX_SIZE_IN_DB_WORD  IPC_DTA_MBOX_C2M_CH2_SIZE_IN_DB_WORDS
+
+/*  FCH MUXPDU1 number of bits definition */
+#define   FCH_MUX_PDU1_9600        0x0080
+#define   FCH_MUX_PDU1_4800        0x0040
+#define   FCH_MUX_PDU1_2400        0x0020
+#define   FCH_MUX_PDU1_1200        0x0010
+
+/*  FCH MUXPDU2 number of bits definition */
+#define   FCH_MUX_PDU2_14400       0x0080
+#define   FCH_MUX_PDU2_7200        0x0040
+#define   FCH_MUX_PDU2_3600        0x0020
+#define   FCH_MUX_PDU2_1800        0x0010
+
+#define   FCH_MUX_PDU_ALL_RATE     0x00F0
+
+/* Channel type used by the reverse traffic channel carrier type data struct */
+#define  LMD_REV_FCH            0x01
+#define  LMD_REV_DCCH           0x02
+#define  LMD_REV_SCH            0x04
+
+#define  LMD_FRAME_DELAY_TRAFFIC_CHAN 1
+#define  MUX_PDU_NO_HEADER         0x07
+
+/* the rate type of the PT data */
+/* The DSPV packet Rate representation, using IpcSpchSrvcOptRateT */
+/*  The DSPM will use the LmdFrameRateFwdT, which Full = 0 */
+#define  PT_BLANK        IPC_SPCH_BLANK      /* 0 */
+#define  PT_EIGHTH       IPC_SPCH_EIGHTH
+#define  PT_QUARTER      IPC_SPCH_QUARTER   /* not used for SSO 3 */
+#define  PT_HALF         IPC_SPCH_HALF
+#define  PT_FULL         IPC_SPCH_FULL
+#define  PT_ERASURE      IPC_SPCH_ERASURE
+#define  PT_FULL_LIKELY  IPC_SPCH_FULL_LIKELY
+#define  PT_NON_CRITICAL IPC_SPCH_NON_CRITICAL
+
+
+#define  RLP_FRAME_TYPE_BITS           2 /* RLP request LMD to read FRAME Type*/   
+
+/* Static Tdso Data Buffer count and size in bytes
+   The size is derived from the largest size of a PDU block.
+   The count is (NumPdus for Fch/Dcch + NumPdus for Sch) * 4 = (1+8) * 4 = 36.
+   We quadruble the count to have some cushion in case Tdso generates more
+   data than LmdRevch.c can handle */
+#define TDSO_BUFFER_SIZE         68
+#define TDSO_BUFFER_COUNT        36
+
+
+#define SCH_INFINITE_DURATION     0xFFFF
+#define SCH_INFINITE_DTX_DURATION 0x000F
+
+
+/* LSO counters */
+#define RECEIVE_ACK_NAK_COUNTERS_MAX  4
+extern kal_uint32 LsoFAckChCounters[RECEIVE_ACK_NAK_COUNTERS_MAX];
+typedef enum
+{
+   LSO_FACKCH_EACK_RACK   = 0,
+   LSO_FACKCH_EACK_RNAK   = 1,
+   LSO_FACKCH_ENAK_RNAK   = 2,
+   LSO_FACKCH_ENAK_RACK   = 3
+} LsoReceiveAckNakCountersT;
+/*the amount of counters*/
+
+/*---------------------------------------------------------------
+* Task Id definitions used for primary traffic routing
+*---------------------------------------------------------------*/
+
+#define   MARKOV_TASK      (MOD_LMD|0x8000)
+/* EACH Frame Size limitation...*/
+
+/* 
+   Each of the following data structures are passed as parameters to
+   functions which write various LMD channel data to the IPC direct
+   buffer mailbox.
+*/
+
+/* Access channel data structure */
+typedef struct
+{
+   kal_uint8   DataLength; /* Number of bytes in access channel data */
+   kal_uint8*  AccessData; /* Pointer to access channel data */
+} LmdAccessDataCarrierT;
+
+/* Fch data structure */
+typedef struct
+{
+   kal_uint16  RevFchRate;                   /* Fch rate */
+   kal_uint16  RevFchLength;                 /* Number of fch bytes */
+   kal_uint16  RevFchData[REV_FCH_MBX_SIZE]; /* Array of fch data */
+} LmdRevFchCarrierT;
+
+/* Dcch data structure */
+typedef struct
+{
+   kal_uint16  RevDcchLength;                  /* Number of dcch bytes */
+   kal_uint16  RevDcchData[REV_DCCH_MBX_SIZE]; /* Array of fch data */
+} LmdRevDcchCarrierT;
+
+/* Sch data structure */
+typedef struct
+{
+   kal_uint16  RevSchLength;                 /* Number of sch bytes */
+   kal_uint16  RevSchData[REV_SCH_MBX_SIZE]; /* Array of sch data */
+} LmdRevSchCarrierT;
+
+/* Traffic channel data structure */
+typedef struct
+{
+   kal_uint8             ChannelType; /* FCH, DCCH, SCH */
+   LmdRevFchCarrierT    *FchCarrierP; /* Pointer to fch data struct */
+   LmdRevDcchCarrierT   *DcchCarrierP;/* Pointer to dcch data struct */
+   LmdRevSchCarrierT    *SchCarrierP; /* Pointer to sch data struct */
+} LmdReverseTchCarrierT;
+
+typedef struct
+{
+   kal_uint16 NumBits;
+   kal_uint8  *DataP;
+} LmdDataTypeT;
+
+/* Data structures used to communicate service configurations to the reverse object */
+
+/* The FCH rev mux format */
+typedef struct
+{
+   kal_uint8  FchHeader;      /* The header to use for fch */
+   kal_uint8  FchHeaderBits;  /* The number of bits in the fch header */
+   kal_uint16 FchPtBits;      /* The number of primary traffic bits in fch */
+   kal_uint16 FchSigBits;     /* The number of signaling bits in fch */
+   kal_uint8  FchSigNumInsertBits;/* The number of signaling insert bits in fch */
+   kal_uint16 FchSecBits;     /* The number of secondary traffic bits in fch */
+   kal_bool   CreateNullFrame;/* Boolean indicating the frame should be null */
+   LmdRevFundRateTypeT  FchRate;     /* The FCH rate information used for DSPM. */
+   SysMultiplexOptionT MuxOpt; /* The current FCH mux option */
+   kal_uint16 NumBits;             /* Number of bits per second */
+   PswFrameCatagoryT Category; /* Frame category */
+   kal_bool NonCritical;
+}FchRevMuxFormatT;
+
+/* The DCCH rev mux format */
+typedef struct
+{
+   kal_uint8  DcchHeader;      /* The header to use for dcch */
+   kal_uint8  DcchHeaderBits;  /* The number of bits in the dcch header */
+   kal_uint16 DcchPtBits;      /* The number of primary traffic bits in dcch */
+   kal_uint16 DcchSigBits;     /* The number of signaling bits in dcch */
+   kal_uint8  DcchSigNumInsertBits;/* The number of signaling insert bits in dcch */
+   kal_uint16 DcchSecBits;     /* The number of secondary traffic bits in dcch */
+   kal_bool   CreateNullFrame;/* Boolean indicating the frame should be null */
+   SysMultiplexOptionT MuxOpt; /* The current DCCH mux option */
+   kal_uint16 NumBits;             /* Number of bits per second */
+   PswFrameCatagoryT Category; /* Frame category */
+}DcchRevMuxFormatT;
+
+typedef struct
+{
+  kal_uint8 SrId;
+  kal_uint8 FrameFormat;
+}LmdSvcRevDsSchInfoT;
+
+typedef struct
+{
+  kal_uint8                NumberOfSchPdu; /* Getting it from the RLP Msg*/
+  LmdSvcRevDsSchInfoT  PduInfo[MAX_PDU_NUM];
+} LmdSvcDsSchT;
+
+/* The SCH rev mux format */
+typedef struct
+{
+   kal_uint8     sch_id;
+   kal_bool      Coding;      /* True-- Turbo is On */
+   kal_uint8     NumLtu;      /* Number of LTU */
+   kal_uint16    LtuBits;
+   kal_uint8     NumPdu;      /* Number of PDU: in case LTU = 0: total
+                          PDU num in a frame; LTU >=2, PDU num
+                          per LTU.*/
+   kal_uint8     PduHeader;   /* The header of each Pdu:  Only for
+                          MuxPdu Type 1 and 2. in the MuxPdu
+                          Type3, the Header is sr_id + '0000'
+                          for Mux PDu3 Filled PDU:
+                          Header = '111' + '0000'
+                       */
+   kal_uint8     MuxPduType;
+   kal_uint8     NumFilledPdu;/* LTU >0 only */
+   kal_uint8     HeaderBits;  /* the number of header in each PDU */
+   kal_uint16    PduBits;
+   SysMultiplexOptionT   MuxOpt; /* reverse Mux Option*/
+   LmdSvcDsSchT         *RevSchConfig;/* contains each Pdu's SrId and FrameType*/ 
+}SchRevMuxFormatT;
+
+/* 
+   The structure that ties it all together and is filled in by the service
+   configuration object 
+*/
+typedef struct
+{
+   FchRevMuxFormatT  FchRevMuxFormat;
+   DcchRevMuxFormatT DcchRevMuxFormat;
+   SchRevMuxFormatT  SchRevMuxFormat[SYS_MAX_FSCH];
+}LmdRevSvcConfigT;
+
+/* Data structure used to communicate service configurations to the forward object */
+typedef struct
+{
+   kal_uint16     NumBits; /* Number of primary/sec traffic bits associated with 
+                          this physical channel */
+   kal_uint16     Routing; 
+                         /* How the primary/sec traffic for this channel should be 
+                          routed, this contains the task id for the task to
+                          which the data should be routed */
+   kal_uint8     SrId;     /* Primary/sec Channel Sr_id:  used in RLP Fwd Frame Ind. */
+   kal_uint32    MsgId;    /* The message id that should be used to route the 
+                          primary/sec traffic to the PtRouting task */
+}SubChnlT;
+
+typedef  struct
+{
+  /**---------- Signaling channel ------------------------------------------*/
+  kal_uint16              NumBits; /* Number of signaling bits associated with this
+                                  physical channel */
+  kal_uint16          Routing; 
+                                  /* How the signaling for this channel should be routed,
+                                  this contains the task id for the task to which the data
+                                  should be routed */
+  PswFrameCatagoryT   Category;
+  PswFrameQuality     Quality; /* Good for bad signalling frame */
+  SysMultiplexOptionT MuxOpt;
+  kal_uint32              MsgId;   /* The message id that should be used to route the 
+                                  signaling data to the SigRouting task */
+}SigChnlT;
+
+typedef struct
+{
+  kal_bool       IsSecondary;
+  kal_uint8      HeaderBits; /* Number of Headerbits */
+  kal_uint8      DataBits;
+  kal_uint16     Routing;
+}FwdScchT;
+
+typedef struct
+{ 
+  kal_uint8               sch_id;         
+  kal_uint8               NumLtu;
+  kal_uint16              LtuBits; /* Num of each Ltu's length in bits*/
+  kal_uint8               NumPdu;  /* Num of PDU: in case LTU = 0: total
+                                  PDU num in a frame; LTU >=2, PDU num
+                                  per LTU.*/
+  kal_uint8               MuxPduType; /* MuxPdu type for each PDU */
+  SysRlpFrameRateE    PduRate;
+  kal_uint8               PduHeaderBits;
+  kal_uint16               PduBits; 
+  kal_uint8               PduSrId; /* only offered in case PDUType1 or 2 */
+  kal_uint16          Routing;       
+  SysMultiplexOptionT mux_option;
+  kal_uint32              MsgId;
+}FwdSchT;
+
+/* SCH Frame from L1D public buffer*/
+typedef  struct
+{
+   kal_uint32     TimeStamp;        /* System time in frames, needed by TDSO */
+   kal_uint16     NumMuxPdus;       /* Number of MuxPDUS */
+   kal_uint16     NumGoodFrames;
+   kal_uint8      MuxPduType;
+   LmdSchHeaderT  Header[1];
+} LmdSchFrameT;
+
+
+typedef struct
+{
+   SubChnlT Primary;
+   SigChnlT Signaling;
+   SubChnlT Secondary;
+   /*----------- Header and null frame indicator --------------------- */
+   kal_uint8    HeaderBits;        /* Number of header bits for this physical channel */
+   kal_bool     NullFramePossible; /* Identifies that the forward object should determine if
+                                  this in fact is a null frame */
+   kal_uint16   NumBits;           /* Number of bits per second */
+   /*----------- Channel assigned --------------------- */
+   kal_bool     FchAssigned;
+   kal_bool     DcchAssigned;      /* Dcch assigned kal_boolean, indicates that Dcch is assigned. */
+}FwdDtchT;
+
+typedef enum
+{
+    FFch = 0,
+    FDcch,
+    FScch,
+    FSch,
+    FNull
+}FwdDataChnlT;
+
+/* Data structure used to communicate service configurations to the forward object */
+typedef struct
+{
+   FwdDataChnlT PhysChnlType; /* Channel type indicator -- FCH, DCCH, SCCH, SCH */
+   FwdDtchT     Dtch;
+   FwdScchT     Scch;
+   FwdSchT      Sch[SYS_MAX_FSCH];
+}LmdFwdSvcConfigT;
+
+/* data info sent to SVC */
+typedef struct 
+{
+  LmdFwdChnlTypeT     PhysChan;   /* this will tell SVC FWD receives SCH data.*/
+  kal_uint8            Header; 
+  kal_uint16           DtchNumBits;/* Only for FCH, DCCH*/
+  LmdFwdFrameRateT DtchRate;   /* Only for FCH, DCCH*/
+}FwdDataT;
+
+typedef  enum
+{   
+   LMD_REV_FCH_PT = 0x0,
+   LMD_REV_FCH_SIG,  
+   LMD_REV_FCH_SEC, 
+   LMD_REV_DCCH_PT,
+   LMD_REV_DCCH_SIG,
+   LMD_REV_DCCH_SEC,
+   LMD_REV_NONE
+} LmdRevPhysChnlTypeT;
+
+typedef struct 
+{
+   //ExeMailboxIdT       PtMbox;
+   LmdRevPhysChnlTypeT PtPhysChannel;/* the PT mailbox's carrier channel */
+}LmdPtMboxSetT;
+
+typedef struct 
+{
+   //ExeMailboxIdT       Mbox;           /* used for frame request, then RLP put data in this Mbox */
+   kal_uint8               PrimSrId;       /* used for frame request */
+   LmdRevPhysChnlTypeT PrimChannel;    /* used for Rev to dispose data */
+   RlpFrameRateTabT    PrimRateMax;    /* used for Frame request*/
+   kal_uint8               SecSrId;        /* used for frame request */
+   LmdRevPhysChnlTypeT SecChannel;     /* used for Rev to dispose rev data */
+   RlpFrameRateTabT    SecRateMax;     /* used for Frame request*/
+   kal_uint8               SchId;          /* SCH id for the REV channel*/
+   //ExeMailboxIdT       SchMbox;
+   kal_uint8               NumberOfSchPDU; /* Number of PDU's allowed */
+   SysRlpFrameRateE    PDURate; 
+}LmdRlpMboxSetT;
+
+typedef struct
+{     
+   LmdRevPhysChnlTypeT PtPhysChannel;
+   LmdRlpMboxSetT*     RlpFch;   /*RLP mail FCH setups*/ 
+   LmdRevPhysChnlTypeT SigPhysChannel; /* Signaling carrier channel */
+   kal_bool                RlpDtchShareMbox;
+}LmdRevMboxSetT;
+
+typedef struct
+{
+   kal_uint16 PtBits;
+   kal_uint16 PtRate;
+}LmdSvcPtDataT;
+
+typedef struct
+{
+   kal_uint8            PrimSrId;
+   SysRlpFrameRateE PrimRate;
+   kal_uint8            SecSrId;
+   SysRlpFrameRateE SecRate;
+}LmdSvcDsDtchT;
+
+/* The Fsch config info from SVC to FWD */
+typedef struct
+{
+  kal_bool            PilotGatingUseRate;
+  kal_bool            ForSchFerRep;
+  kal_uint8           sch_id;
+
+}LmdSvcFschInfoT;
+
+/* The Rsch config info from SVC to FWD */
+typedef struct
+{
+  kal_uint16            RevSchDtxDuration;
+  kal_uint8             sch_id;
+  kal_uint16            RevSchDuration;
+}LmdSvcRschInfoT;
+
+
+/*
+   Markov structures
+ */
+/* Markov data message */
+typedef struct
+{
+    kal_uint16 MuxCat;                              /* mux option category  */
+    kal_uint16 RxNumBits;                           /* size of data in bits */
+    kal_uint16 RxPacket [MAX_FCH_FRAME_WORD_LEN];   /* data */
+} LmdMsoFwdChDataMsgT;
+
+/* Markov control message */
+typedef struct
+{
+   kal_uint8 CtlRecType;
+    union
+   {
+      kal_uint8 Control;
+      kal_uint8 VectCounterId;
+   } Directive;
+} LmdMsoControlDataT;
+
+/* Markov Clear Spy Statistics message */
+typedef enum
+{
+   CLEAR_TX_STATS = 0x01,
+   CLEAR_RX_STATS = 0x02,
+   CLEAR_BOTH_STATS = 0x03
+} LmdDirectionFlagT;
+
+typedef struct
+{
+   LmdDirectionFlagT    DirFlag;  /* a bit mask variable (TX, RX, or both) */ 
+} LmdMsoClearStatsMsgT;
+
+/*
+   LSO structures
+ */
+
+
+/*SO75 control message*/
+typedef struct
+{
+	kal_uint8         CtlRecType;
+	union
+	{
+		kal_uint8 AckOrNak;//wait to be confirmed
+		kal_uint8 VectCounterId;
+	}Directive;
+    kal_uint8         ClearCounters;
+}  LmdLsoControlDataT;
+
+/*Control for ACK Channel(used for 1xAdv)*/
+typedef enum
+{
+    	DEPEND =0x0,
+		ACK    =0x1,
+		NAK    =0x2
+} AckNakControlT;
+
+
+/*
+   Tdso definitions
+ */
+/* Tdso connect message structure */
+typedef struct
+{
+   kal_uint8             RC;            /* Radio Configuration     */
+   kal_uint8             ChanMask;      /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+   LmdTrafficTypeT   TrafficType;   /* PRIMARY or SECONDARY    */
+   kal_uint16            MuxOptions[4]; /* 0 for Fch, 1 for Dcch, 2 for Sch0, 3 for Sch1 */
+} LmdTdsoConfigT;
+
+typedef struct
+{
+   LmdTdsoConfigT    Fwd;
+   LmdTdsoConfigT    Rev;
+} LmdTdsoConnectMsgT;
+
+/* Tdso data message structures */
+typedef enum
+{
+   DCID_FCH = 0,
+   DCID_DCCH,
+   DCID_SCH0,
+   DCID_SCH1,
+   DCID_NULL
+} LmdDataChanIdT;
+
+typedef struct
+{
+   LmdDataChanIdT    DataChanId;       /* FCH, DCCH, SCH0 or SCH1 */
+   kal_uint16            NumPdus;
+   kal_uint16            NumBits;
+   kal_uint8             *DataP[8];
+} LmdTdsoDataT;
+
+typedef struct
+{
+   kal_uint8             FwdChanMask;      /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+   kal_uint16            MuxCat;
+   kal_uint16            NumPdus;
+   kal_uint16            NumBits;
+   kal_uint32            SysTime;
+   CpBufferT     *DataP[8];
+} LmdTdsoFwdChDataMsgT;
+
+typedef struct
+{
+   kal_uint8             FwdChanMask;      /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+   kal_uint8             RevChanMask;      /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+} LmdTdsoDisconnectMsgT;
+
+typedef enum
+{
+   FWD_LINK = 0,
+   REV_LINK
+} LmdLinkDirectionT;
+
+/* Tdso clear statisctics ETS command message structure */
+typedef struct
+{
+   LmdDirectionFlagT    DirFlag;  /* a bit mask variable (TX, RX, or both) */ 
+} LmdTdsoClearStatsMsgT;
+
+/* Tdso Random Number Calc ETS command message structures */
+typedef struct
+{
+   ExeRspMsgT  RspInfo;
+   kal_bool        NewSeed;
+   kal_uint32      Seed;
+}  LmdTdsoRandomNumberCalcMsgT;
+
+typedef struct
+{
+   kal_uint8       SeqNum;
+   kal_uint32      Y31;
+   kal_uint32      Y24;
+}  RngT;
+
+typedef struct
+{
+   RngT        Yn[5];   
+} LmdTdsoRandomNumberCalcRspMsgT;
+
+/* Voice memo and voice recognition definitions */
+typedef enum
+{
+   LMD_VMEM_REASON_COMMANDED = 0,
+   LMD_VMEM_REASON_COMPLETED,
+   LMD_VMEM_REASON_CANNOT_DO
+} LmdVmemReasonT;
+
+typedef struct
+{
+   kal_uint8  NumMuxPDUs;
+   kal_uint8  Pad;
+   kal_uint16 MuxPDUSize;
+} LmdMpInputOutputDebugInputSpyT;
+
+typedef struct
+{
+   kal_uint8  NumRlpFrames;
+   kal_uint8  RlpFrameFormat;
+   kal_uint16 RlpFrameLen;
+} LmdMpInputOutputDebugOutputSpyT;
+
+typedef struct
+{
+   kal_uint16 MuxPduCtrl;
+   kal_uint16 MuxPduType5Ctrl;
+   kal_uint16 NumFrames;
+   kal_uint16 NumGoodFrames;
+   kal_uint16 NumMuxPDUs;
+   kal_uint16 SrId;
+   kal_uint16 MuxPDULen;
+   kal_uint16 MuxPDUExtHeader;
+   kal_uint8  MuxPDUData[4];
+} LmdMpPdchInputDebugSpyT;
+
+typedef struct
+{
+  kal_uint8            priSrId;   
+  SysRlpFrameRateE priRate;   
+  kal_uint8            priDataPtr[4];
+  kal_uint8            secSrId;
+  SysRlpFrameRateE secRate;
+  kal_uint8            secDataPtr[4];
+} LmdMpFundicatedDataOutputSpyT;
+
+typedef struct
+{
+   kal_uint8  srId;
+   RlpFrmFormatE  frameFormat;  
+   kal_uint8  offset;
+   kal_uint8  reserved;
+   kal_uint16 frameLen;
+   kal_uint8 Data[4];
+} LmdMpPdchOutputSpyFrameInfoT;
+
+typedef enum
+{
+   UNINITIALIZED     = 0,
+   INITIALIZED,
+   ACCESS,
+   EACH_STATE,
+   TRAFFIC,
+   TEST_STATE,
+   NULL_STATE,
+   WAIT_2_FRAME_STATE
+} LmdRevStateTypeT;
+
+typedef enum
+{
+   MPDU_NORMAL = 0,
+   MPDU_BYPASS,
+   MPDU_AUTOMATIC
+} MpOpModeT;
+
+/* MuxPDU Training States */
+typedef enum
+{
+   TRAINING_DISABLED = 0,
+   TRAINING_ACTIVE,
+   TRAINING_COMPLETE
+} MpStateT;
+/* MuxPDU Training State sub-trace ids */
+typedef enum
+{
+   MPT_SETUP_ID = 0,
+   MPT_CHECK_LTU_CRC_ID,
+   MPT_ACTIVATE_NEW_CONFIG_ID
+} MpActionIdT;
+/* MuxPDU Set Op Mode Msg */
+typedef struct
+{
+   ExeRspMsgT  RspInfo;    
+   MpOpModeT   PreferredMode;
+} LmdMpSetOpModeMsgT;
+
+typedef struct
+{
+   MpOpModeT   PreferredMode;
+   kal_uint8       CurrentMode;
+   kal_uint8       CheckLtuCrc;
+} LmdMpSetOpModeRspMsgT;
+
+/* MuxPDU Get Op Mode Msg */
+typedef struct
+{
+   ExeRspMsgT  RspInfo; 
+} LmdMpGetOpModeMsgT;
+
+typedef struct
+{
+   MpOpModeT   PreferredMode;
+   kal_uint8       CurrentMode;
+   kal_uint8       CheckLtuCrc;
+} LmdMpGetOpModeRspMsgT;
+
+
+typedef struct
+{
+   kal_uint8   FFchId;
+   kal_uint8   FSchId;
+   kal_uint8   RFchId;
+   kal_uint8   RSchId;
+}TdsoSrIdT;
+
+typedef struct
+{
+   kal_bool   Enabled;
+   kal_uint8  ChanMonitor;        /* 0 = FCH, 1 = DCCH */
+   kal_bool   PwrThreshEnable;
+   kal_uint8  PwrRepThresh;
+   kal_bool   PwrPeriodEnable;
+   kal_uint8  PwrRepFrames;
+   kal_uint8  PwrRepDelay;
+   kal_uint8  CurrRepDelay;
+   kal_uint8  BadFrames;
+   kal_uint8  DcchBadFrames;
+   kal_uint32 TotFrames;
+   kal_uint32 DcchTotFrames;
+   kal_uint8  FrameOffset;
+   kal_uint8  FwdBlankingDutyCycle;
+   kal_uint8  RevBlankingDutyCycle;
+}LmdFwdPwrCtlT;
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+typedef enum
+{
+   Discard_In_Config     = 0,
+   Discard_Full_0_Frame,
+   Discard_first_rev_3_Frame,
+   VoiceEncryptDelay_Reset,
+   Decrypt_Voice,
+   Encrypt_Voice
+} LmdVoiceEncryptEventT;
+#endif
+/*----------------------------------------------------------------------
+ Global variables.
+-----------------------------------------------------------------------*/
+/* Flag Value to indicate the Fwd counters are suspended */
+/* declared and initialized in lmdfwdch.c and used in lmdfwdch.c and lmdmpfwd.c */
+extern kal_bool  FwdCounterSuspend;
+extern kal_bool  LmdMpSchAssigned;
+
+
+extern TdsoSrIdT  TdsoSrId;
+extern kal_uint8      FwdRc;
+extern kal_uint8      RevRc;
+extern LmdFwdPwrCtlT LmdFwdPwrCtlParms;
+extern kal_uint8      VocSrId;
+extern LmdSridDataT LmdSrId[SYS_SR_ID_MAX + 1];
+
+/*flags for statistic and loopback data processing*/
+extern kal_bool  EAckCounter;
+extern kal_bool  ENakCounter;
+extern kal_bool  LsoTxFCHIsNull;
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+extern kal_bool  VoiceEncDataDisable;
+#endif
+
+
+/*----------------------------------------------------------------------
+ Global Function Prototypes
+-----------------------------------------------------------------------*/
+/*-------------------- TRACE/SPY MSG ID Handle------------------------*/
+extern void   LmdDhlMsgLog(module_type mod_id, msg_type msg_id, local_para_struct *msgPtr);
+
+/*-- Reverse Object Operations ---------------------------------*/
+extern void   LmdRevSig(kal_uint32 SigId);
+extern void   LmdRevCmdMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern void   LmdRevSigMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern kal_uint16 LmdRevSigDataQueueSizeGet(void);
+extern kal_uint8  LmdRevPrevGet(void);
+extern void   LmdRevSchMsg(LmdSvcRschInfoT *RschInfoP); 
+extern void   LmdGetRevStatCntMsg(LmdGetStatCntMsgT *MsgP);
+extern void   LmdSetRevStatCntMsg(LmdSetStatCntMsgT *MsgP);
+extern void   LmdResetRevStatCntMsg(void);
+extern void   LmdRevSchStop(kal_uint8  sch_id);
+extern void   LmdRevTrafficMBoxesFlush(void);
+extern void   LmdRevDataMsg(void* MsgDataPtr, kal_uint16 MsgId);
+
+/*-- Reverse channel rate test case handler -----*/
+extern void LmdRateTestControl(L1dTstChnTypeT ChnlType, L1dTstFchRateT FchRate, L1dTstSchRateT SchRate);
+
+
+/*-- Forward Object Operations ---------------------------------*/
+extern void   LmdFwdSig(kal_uint32 SigId);
+extern void   LmdFwdCmdMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern void   LmdFwdSchMsg(LmdSvcFschInfoT *FschInfoP); 
+extern void   LmdGetFwdStatCntMsg(LmdGetStatCntMsgT *MsgP);
+extern void   LmdSetFwdStatCntMsg(LmdSetStatCntMsgT *MsgP);
+extern void   LmdResetFwdStatCntMsg(void);
+extern void   LmdFwdSchStopSigProc(kal_uint8  sch_id);
+extern void   LmdFwdSchPwrMeasRep(kal_uint8 sch_id);
+extern void   LmdFwdChannelInit(void);
+extern void   LmdFwdUpdateAllSchStats (kal_bool PhysChanQlty, kal_bool SchChanRdy, LmdFwdSvcConfigT *LmdFwdConfig);
+//extern void   LmdClearDtxStats(void);
+extern void   LmdIpcClearFwdStats(void);
+
+#ifdef MTK_DEV_BUG_FIX_XL2	  
+extern void   LmdFwdSchFrameCountReset(kal_bool CountReset);
+#endif
+
+/*-- Service Configuration Object Operations ---------------------------------*/
+extern void   LmdSvcSig(kal_uint32 SigId);
+extern void   LmdSvcCmdMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern void   LmdSvcRevConfigGet(LmdRevSvcConfigT    *LmdRevConfig, 
+                                 LmdSvcPtDataT       *LmdPtData, 
+                                 LmdSvcDsDtchT       *RevRlpFch, 
+                                 LmdSvcDsSchT        *RevRlpSch,
+                                 kal_uint16 SigBits);
+extern void   LmdSvcFwdConfigGet(LmdFwdSvcConfigT *LmdFwdConfig, 
+                                 FwdDataT  *FwdData,
+                                 kal_bool ChnlQlty);
+extern kal_uint8  LmdSvcFwdMuxPDUType(void);
+extern void   LmdSvcFwdFrameReceive(LmdFwdChnlTypeT PhysChan);
+extern kal_uint16 LmdSvcFwdPtRate(kal_uint16 PtBits, kal_uint16 PtRouting, LmdFwdFrameRateT PhysChanRate);
+extern kal_uint16 LmdSvcFwdSecRate(kal_uint16 SecBits, kal_uint16 SecRouting);
+extern void   LmdSvcVocRateLimit(kal_bool Limit);
+extern void   LmdSvcRevMboxSet(LmdRevMboxSetT*  LmdRevMboxSet, kal_uint16 SigBits);
+
+extern kal_uint8  LmdSvcRevSigPhysRes(void);
+extern kal_uint8  LmdSvcServiceOptPhysRes(LmdLinkDirectionT LinkDir, LmdServiceOptionT SvcOpt);
+extern void   LmdSvcRevTdsoDataConvert(LmdTdsoDataT* GenMsgP, void* RevDsMsgP);
+extern kal_uint8 * LmdSvcLCMaskGet(void);
+
+extern RlpRxFrameRateT LmdRlpFrameSpyRate(SysMultiplexOptionT MuxOption, 
+                                            kal_uint16 PduType,SysRlpFrameRateE  PduRate); 
+
+extern void   LmdSvcSpeechDisableMsgHandler(LmdSpeechDisableMsgT *);
+
+extern kal_bool   LmdSvcRevSchCodingGet();
+extern kal_uint8  LmdSvcFwdSchMuxPduGet();
+/* for RSCH  DTX*/
+extern void   LmdSvcRschDtxExpired(kal_uint8  sch_id);
+extern void   LmdRevSchSendDtxExpiration(void);
+
+
+
+/* FSCH rate determination...*/
+extern void  LmdSvcActivateNewFSchConfig (void);
+extern kal_uint16 LmdSvcFwdSchDurationGet(kal_uint8 sch_id);
+
+/*-------- Direct Buffer functions --------------------*/
+extern void   LmdRevSendAccessFrame(LmdAccessDataCarrierT *LmdAccessDataCarrierP, kal_uint32 FrameBytes);
+extern void   LmdRevSendTrafficFrame(LmdReverseTchCarrierT *LmdRevTchCarrierP
+#if defined (MTK_DEV_OPTIMIZE_XL2)
+                                              , kal_uint8 vocieFlag, kal_uint8 SigFlag
+#endif
+                                              , kal_uint8 retryCount
+                                              );
+extern void   LmdRevSendTestFrame(void);
+extern void   LmdRevInitTestFrame(L1dTstChnTypeT ChnlType,L1dTstFchRateT FchRate,L1dTstSchRateT SchRate);
+extern void   LmdRevResetFrameTracking (void);
+extern void   LmdFwdStatistics(LmdFwdChnlTypeT PhysChanType, SysMultiplexOptionT MuxOpt,
+                             kal_uint16 NumBits, PswFrameCatagoryT Category, kal_bool NullFrame,
+                             kal_uint8 NumLtus, kal_uint8 NumGoodLtuCrc);
+
+/*-------- LMD Bit Copying Functions --------------------*/
+extern void   LmdPacked8to16BitCpy(kal_uint8  *FromP, kal_uint32 FromBitOffset, 
+                                   kal_uint16 *ToP, kal_uint32 ToBitOffset, kal_uint32 NumBits);
+
+extern void   Lmd16toPacked8bitcpy(kal_uint16 *FromP, kal_uint8 *ToP, kal_uint32 NumBits, 
+                                   kal_uint32 BuffBitOffset);
+
+extern void   Lmd16toPacked16BitCpy(kal_uint16 *FromP, kal_uint16 *ToP, 
+                                    kal_uint32 NumBits, kal_uint32 BuffBitOffset);
+
+extern void   LmdPacked16to16BitCpy(kal_uint16 *FromP, kal_uint16 *ToP, 
+                                    kal_uint32 NumBits, kal_uint32 BuffBitOffset);
+
+extern void   LmdPacked16toPacked16BitCpy(register kal_uint16 *FromP, 
+                                          register kal_uint16 *ToP,
+                                          kal_uint32 NumBits, kal_uint32 FromBitOffset);
+
+extern void   Lmd8Bitto8BitCpy(register kal_uint8 *FromP, register kal_uint8 *ToP, 
+                               kal_uint32 NumBits, kal_uint32 ToBitOffset);
+
+extern void   Lmd8BitOffsetto8BitOffsetCpy(register kal_uint8 *FromP, register kal_uint8 *ToP, 
+                                           kal_uint32 NumBits, kal_uint32 FromBitOffset, 
+                                           kal_uint32 ToBitOffset);
+
+extern void   LmdSendPswCmdStatusMsg(PswCmdStatusT Status);
+
+/* LMD Crc Functions */
+extern kal_uint16 LmdCrc16BitCalculate (kal_uint8 *msg, kal_uint8 len);
+extern kal_bool LmdCrc16BitCheck (kal_uint8 *message, kal_uint8 len);
+
+/* LMD IRAM Functions that are used by Markov and Test Data Service options */
+extern kal_uint32 LmdRNG48 ( kal_uint32 RNG32 );
+//extern void   LmdResetMpPdchCounter (void);
+
+/*for MOD_SPCH Functions*/
+extern void lmdSpch_process_ilm(ilm_struct *current_ilm); 
+
+
+/*-------- Markov Functions --------------------*/
+extern void LmdMsoInit ( void );
+extern void LmdMsoConnect ( kal_uint16 MultiplexOption, LmdServiceOptionT ServiceOption );
+extern void LmdMsoControlMsg ( LmdServiceOptionControlMsgT *RxMsgP );
+extern void LmdMsoProcessing ( LmdMsoFwdChDataMsgT *RxMsgP );
+extern void LmdMsoDisconnect ( void );
+extern void LmdMarkovClearStatsMsg ( LmdMsoClearStatsMsgT *RxMsgP );
+
+/*-------- Tdso Functions --------------------*/
+extern void LmdTdsoInit ( void );
+extern void lmds_process_ilm(ilm_struct *current_ilm);
+extern void LmdTdsoConnect ( LmdTdsoConnectMsgT *TdsoConnMsgP );
+extern void LmdTdsoControlMsg ( LmdServiceOptionControlMsgT *RxMsgP );
+extern void LmdTdsoProcessFwdChData ( LmdTdsoFwdChDataMsgT *RxMsgP );
+extern void LmdTdsoProcessRevChData ( void );
+extern void LmdTdsoDisConnect ( LmdTdsoDisconnectMsgT *RxMsgP );
+extern void LmdTdsoClearStatsMsg ( LmdTdsoClearStatsMsgT *RxMsgP );
+extern void LmdTdsoRandomNumberCalcMsg ( LmdTdsoRandomNumberCalcMsgT *RxMsgP );
+
+/*-------- Lso75 Functions --------------------*/
+extern void LmdLsoReset(void);
+extern kal_bool LmdOnTrafficChannel( void );
+extern kal_bool LmdInTestMode( void );
+
+/*------------- Debug Screen Info Response --------------------*/
+extern void LmdDebugScrnFERCalc (kal_bool badframe);
+extern void LmdDebugScrnInfoMsg (LmdGetDebugScrnInfoRequestT* RxMsgP);
+extern void LmdInitializeDebugScrnCounters (void);
+extern LmdRevStateTypeT getLmdRevState(void);
+#ifdef MTK_CBP_ENCRYPT_VOICE
+extern void LmdResetVoiceEncryptDelay(void);
+#endif
+
+/*****************************************************************************
+* $Log: lmddefs.h $
+* Revision 1.12.2.3  2006/03/21 14:38:21  vxnguyen
+* - Removed references to compiler flag LMD_MPDU_BYPASS_OPERATION.
+* - Defined MuxPdu SetMode and GetMode variables, message structures
+*   and function prototypes.
+* Revision 1.12.2.2  2006/02/17 10:22:11  wfu
+* - For Bypass mode.
+* Revision 1.12.2.1  2005/10/05 09:38:46  wfu
+* Revision 1.12.3.2  2006/03/13 17:31:56  winston
+* Fix CR7312: Added function prototypes for resetting the fwd/rev mux stat counters, LmdResetRevStatCntMsg() and LmdResetFwdStatCntMsg().
+* Revision 1.12.3.1  2005/10/05 09:38:46  winston
+* Duplicate revision
+* Revision 1.12  2005/10/05 09:38:46  chinh
+* - Move LmdRevStateTypeT from lmdrevch.c to this file.
+* Revision 1.11  2005/03/18 10:14:22  bcolford
+* CBP4.05 [4.21] to CBP6.1 [2.9.0] CP Software Merge.
+* Revision 1.6  2005/01/31 11:59:32  mmalopy
+* - LmdSvcGpsSpeechDisableMsgHandler() reprotoytyped as
+*   LmdSvcSpeechDisableMsgHandler() (denotes its used by
+*   applications other than GPS).
+* Revision 1.5  2005/01/14 16:08:38  wfu
+* Revision 1.4  2004/07/29 15:48:12  robertk
+* CR 3500: Removed SYS_OPTION_VOICE_MEMO compile switch from definitions.
+* Revision 1.3  2004/05/04 15:32:25  ckackman
+* CP_LMD_0.08.0_MergeCBP4.0_10.0
+* Revision 1.10  2005/02/03 12:10:39  wfu
+* - Update LmdEachCarrierT and functional prototype for LmdRevSendEachFrame() and declare the global buffer EachBuff[]  for EACH frame.
+* Revision 1.9  2004/11/18 11:11:02  vxnguyen
+* New LMD function prototypes.
+* Revision 1.8  2004/10/21 14:15:15  bcolford
+* Add new data structures to suppot F-PDCH, F-SCH and F-FCH
+* spies.
+* Revision 1.7  2004/10/06 14:01:14  bcolford
+* Add new data structures to support MuxPDU Type 5, F-PDCH
+* development.
+* Revision 1.6  2004/09/28 13:22:26  bcolford
+* CBP6.0 ver 3.3.0 to CBP6.1 merge
+* Revision 1.8  2004/06/29 11:14:39  bcolford
+* Updated for CBP4.0 to CBP6.0 merge
+* Revision 1.66  2004/03/12 15:16:33  ameya
+* Added prototypes for LmdDebugScrnFERCalc(), LmdDebugScrnInfoMsg() and LmdInitializeDebugScrnCounters().
+* Revision 1.65  2004/02/13 13:06:18  wfu
+* .Declare LmdFwdChannelInit() as a global function call. 
+* Revision 1.2  2004/04/07 16:08:58  vxnguyen
+* Removed all SpchDataMppAgc definitions/code in the effort of cleaning up IPC.
+* Revision 1.1  2004/01/22 10:44:44  fpeng
+* Revision 1.5  2004/08/27 10:48:22  bcolford
+* Export a subroutine to allow initialazation of PDCH counter.
+* Revision 1.4  2004/07/29 11:29:23  bcolford
+* Export the new PDCH Test Mode flag and the
+* LmdSrvMpPdchCtrl() subroutine.
+* Revision 1.3  2004/07/08 11:07:20  blee
+* Added support for new RLP API and support for MuxPDU Type 5
+* data objects on F-PDCH.
+* Revision 1.2.1.2  2004/04/20 10:38:34  bcolford
+* MuxPDU Type five development
+* Revision 1.2  2004/03/25 11:55:18  fpeng
+* Updated from 6.0 CP 2.5.0
+* Revision 1.7  2004/02/10 11:52:06  bcolford
+* Merged CBP4.0 Release 8.05.0 changes.
+* Revision 1.6  2004/01/30 10:32:31  vxnguyen
+* - Simplified LmdFwdSchMpFrameProc() function prototype.
+*   (the LtuOn, PhysChanQlty and SysTime arguments are no
+*   longer passed to this function).
+* Revision 1.5  2003/12/19 11:44:58  wavis
+* Removed NULL_TASK definition (replaced by EXE_DUMMY_TASK).
+* Revision 1.4  2003/12/10 16:07:13  bcolford
+* Add a new macro to support MuxPDU Bypass operation.
+* Revision 1.3.1.2  2003/12/02 16:30:40  bcolford
+* Add a new pre-processor directive to support MuxPDU Type 3
+* operation in bypass mode.
+* Revision 1.3  2003/11/26 15:37:42  bcolford
+* Added new prototypes for MuxType 3 processing on SCH.
+* Export a new flag to coordinate Sch Assigned status.
+* Revision 1.2.1.3  2003/11/26 11:09:12  bcolford
+* Completed integration between MuxPDU and TDSO.
+* Revision 1.2.1.2  2003/11/07 16:36:40  bcolford
+* Updated the prototype for MuxPDU processing subroutine.
+* Revision 1.2  2003/11/03 11:21:27  bcolford
+* Share some subroutines between normal forward channel
+* processing and MuxPDU forward channel processing.
+* Revision 1.1  2003/05/12 15:31:49  fpeng
+* Initial revision
+* Revision 1.64  2003/12/09 09:37:22  mshaver
+* Added LmdFwdSchPwrMeasRep() function prototype.
+* Revision 1.63  2003/04/25 15:02:16  wfu
+* .Change the data types of RevSchDtxDuration and RevSchDuration
+*   from kal_uint8 to kal_uint16 to avoid roundoff problem when
+*   the value goes beyond 255. CR2171.
+* Revision 1.62  2003/03/13 16:11:20  wfu
+* . LMD should inform SVC when RSCH DTX expired. Add function prototype
+* for LmdSvcRschDtxExpired().                               
+* Revision 1.61  2002/11/11 16:20:33  wfu
+* . Add one additional element of SysTime in
+*   LmdTdsoFwdChDataMsgT for 153K FSCH
+* Revision 1.60  2002/10/23 08:05:55  mshaver
+* Removed prototypes for LmdProcessSpchDataMppHfree() and
+* LmdProcessSpchDataSppHfree() as they are not needed.
+* Revision 1.59  2002/10/03 15:21:33  jbenders
+* Added function proto for LmdSvcGpsSpeechDisableMsgHandler() 
+* which will be used to properly disable/reenable the voice path and
+* vocoder at the beginning/end of a traffic channel GPS session.
+* Revision 1.58  2002/09/26 15:18:18  vxnguyen
+* Added additional Voice Memo function prototypes.
+* Revision 1.57  2002/09/09 16:18:50  wfu
+* . Add new element 'Coding' in
+*   SchRevMuxFormatT to indicate the
+*   RSCH's Turbo coding's status.
+* Revision 1.56  2002/08/27 17:28:31  wfu
+* . add LmdRevSchStop() and LmdfwdSchStopSigProc()
+*   as global functions.
+* Revision 1.55  2002/07/15 18:33:02  vxnguyen
+* Added 'LmdRNG48()' function prototype.
+* Revision 1.54  2002/06/18 11:58:03  wfu
+* .Added codes for CR 507:
+*   RLP Rx/Tx Frame Spies:
+* 
+*  1).Move #define MUXPDUTYPE1 - 6
+*     from lmdsrvcf.c.
+*  2).Declare prototype of
+*     LmdRlpFrameSpyRate().
+*  
+* Revision 1.53.1.2  2002/06/07 15:08:41  wfu
+* .  CR507 working version for RLp RX/TX  frame spy.
+* Revision 1.53.1.1  2002/05/30 11:11:28  wfu
+* Duplicate revision
+* Revision 1.53  2002/05/30 11:11:28  mshaver
+* Added VIA Technologies copyright notice.
+* Revision 1.52  2002/05/17 11:27:07  vxnguyen
+* - Updated Tdso function prototypes and definitions as a new
+* Lmd Secondary task has been created to handle Tdso.
+* Revision 1.51  2002/04/10 15:47:04  mshaver
+* Add the element  FchAssigned to FwdDtchT to indicate to the 
+* forward channel code whether or not FCH is in use.
+* Revision 1.50  2002/04/10 10:43:18  vxnguyen
+* Modified LmdSvcLCMaskGet() prototype.
+* Revision 1.49  2002/03/28 18:39:27  hans
+* is2000 rev 0 add 2, retrievable and settable parameters implemented. 
+* 
+* Revision 1.48  2002/02/07 16:50:53  vxnguyen
+* Added the use of compilor options SYS_OPTION_VOICE_MEMO
+* and SYS_OPTION_VOICE_RECOGNITION.
+* Revision 1.47  2002/01/23 17:29:24  mmalopy
+* - LmdRevSendTestFrame() and LmdRevInitTestFrame() functions
+*   prototyped.
+* Revision 1.46  2002/01/09 19:58:57  vxnguyen
+* - Added Tdso definitions.
+* - Renamed _SvcRlp_ definitions to _SvcDs_ whereever applicable
+* so that these definitions could be shared between RLP and TDSO.
+* Revision 1.45  2001/11/19 15:42:09  vxnguyen
+* Added new Voice Rec and Voice Memo definitions.
+* Revision 1.44  2001/11/13 13:10:58  mshaver
+* - Changes to be compliant with the new LMD-RLP interface design.
+* - Changes to support forward and reverse SCH.
+* - Changed fundamental and dedicated channel data structure
+*   organization to allow the code to be read easier.
+* - Changed the LMD service config get routine prototypes for both
+*   forward and reverse channels to be consistent with the above
+*   changes.
+* - Add RlpDtchShareMbox in the data structure of LmdRevMboxSetT to 
+*   indicate whether the RLP FCH and DCCH are sharing the same mailbox
+*   for delivery of reverse data to LMD.
+* - Add one element in the data structure SchRevMuxFormatT 
+*   to indicate the R-SCH's mux_option.
+* - Add LmdSchFschInfoT to allow SVC to pass FSCH Msg
+*   information to FWD.
+* - Add LmdSchRschInfoT to allow SVC to pass RSCH Msg
+*   information to REV.
+* - Declare LmdRevSchMsg() and LmdFwdSchMsg() as global in
+*   LMD, since the LMD_RSCH_MSG and LMD_FSCH_MSG will 
+*   only be handled by SVC, and SVC will call these 
+*   two functions to pass necessary information to REV and FWD.
+* Revision 1.43  2001/10/16 18:47:21  vxnguyen
+* Fixed LmdMsoConnect() prototype.
+* Revision 1.42  2001/08/29 14:49:31  vxnguyen
+* Added MSO data structure definitions and function prototypes.
+* Revision 1.41  2001/06/13 11:22:01  mshaver
+* For implementation of forward and reverse channel statistics, the
+* fch mux pdu 1 and 2 number of bits #defines were moved from
+* lmdsrvcf.c to lmddefs.h.  Also, NumBits was added to
+* LmdFwdSvcConfigT, and MuxOpt, NumBits and Category were
+* added to the FchRevMuxFormatT and DcchRevMuxFormatT
+* data structures.
+* Revision 1.40  2001/06/12 15:11:14  mshaver
+* Changed LmdFwdSvcConfigT to add message id elements to 
+* allow the service configuration object to tell the forward object
+* what message id should be used to route the sub channel data.
+* Revision 1.39  2001/06/06 10:21:29  mshaver
+* Merge in revision 1.38.1.2
+* Revision 1.38.1.2  2001/06/05 14:42:29  mshaver
+* Changed LmdFwdSvcConfigT ChanAssigned element to
+* DcchAssigned to indicate whether or not Dcch is assigned.
+* Revision 1.38.1.1  2001/06/04 14:37:02  mshaver
+* Duplicate revision
+* Revision 1.38  2001/06/04 14:37:02  mshaver
+* Moved signal definitions to lmdapi.h
+* Revision 1.37  2001/06/01 11:31:20  mshaver
+* Added prototypes for lmd crc utility functions.
+* Revision 1.36  2001/05/25 11:01:05  mshaver
+* Added ChanAssigned kal_boolean to LmdFwdSvcConfigT for
+* determining if a channel is assigned whether or not statistics 
+* for that channel should be updated.
+* Revision 1.35  2001/05/03 15:41:46  mshaver
+* Merge in changes from rev 1.30.1.2 which changed the prototype
+* for LmdSvcFwdConfigGet() to change the type for FchRate from
+* kal_uint16 to LmdFwdFrameRateT.
+* Revision 1.34  2001/04/26 16:41:52  wfu
+* Change in the data structure: LmdSvcRlpDataT:  The PrimaRate from kal_uint8 to SysRlpFrameRateT, same as SecRate.
+* Revision 1.33  2001/04/25 11:57:20  mshaver
+* Changed LmdSvcRevMboxSet() prototype to add a second
+* parameter to pass the number of signaling bits in the signaling
+* queue. This is needed by the service configuration object in order
+* for it to determine the maximum primary and secondary rates to be
+* assigned to RLP
+* Revision 1.32  2001/04/20 16:07:14  mshaver
+* Deleted unused data struct PtMboxSetT, changed types in
+* RlpChanMboxSetT to SysRlpFrameRateT, added signaling
+* physical channel type to LmdRevMboxSetT.
+* Revision 1.31  2001/04/19 17:46:37  wfu
+* Add the new data structures and functions for supporting RLP.
+* Revision 1.30  2001/04/18 15:23:11  mshaver
+* Changed LmdWvcFwdConfigGet() and 
+* LmdSvcFwdFrameReceive() prototypes' physical channel
+* parameter to be 'LmdFwdChnlTypeT' type.
+* Revision 1.29  2001/04/10 15:04:23  mshaver
+* Changes for revision 1.27 were deleted by revision 1.28. These
+* function prototypes have been restored.
+* Revision 1.28  2001/04/10 14:09:51  wfu
+* 1). Merge with 1.26.1.2
+* 2).  Added the DSPV rate representation:  PT_FULL = IPC_SPCH_BLANK , and so on.
+* Revision 1.26  2001/03/28 15:30:18  mshaver
+* Call integration. Add prototype for LmdSendPswCmdStatusMsg().
+* Revision 1.25  2001/03/19 13:57:40  wfu
+* Add MUX_PDU_NO_HEADER = 0x07
+* Revision 1.24  2001/03/16 13:32:57  wfu
+* Change the data type of Rev Config FchRate as LmdRevFundRateTypeT.
+* Revision 1.23  2001/03/16 12:53:35  wfu
+* Add  FchRate  in the Reverse Config.
+* Revision 1.22  2001/03/12 08:23:56  mshaver
+* Added prototype for LmdSvcVocRateLimit().
+* Revision 1.21  2001/03/08 17:07:08  mshaver
+* Added RevFchRate to LmdRevFchCarrierT as it is to be 
+* written to the signal buffer if there is FCH data. Also, added
+* a prototype for the reverse object function LmdRevPrevGet().
+* Revision 1.20  2001/03/02 16:35:25  wfu
+* Revision 1.19  2001/02/28 17:00:08  mshaver
+* Added prototype for reverse object for LmdRevSigDataQueueSizeGet().
+* Revision 1.18  2001/02/28 09:38:01  mshaver
+* Added rate parameter to LmdSvcRevConfigGet().
+* Revision 1.17  2001/02/27 10:10:02  wfu
+* Small changes in the functions' prototypes.
+* Revision 1.16  2001/02/27 10:07:59  wfu
+* Delete the functions' prototypes for LmdSvcInit() and LmdSvcSigBack().
+* Revision 1.15  2001/02/23 14:03:34  wfu
+* Add the function prototype:  LmdServiceConfigInit(void);
+* Revision 1.14  2001/02/23 11:03:42  wfu
+* Add the following signals:
+* LMD_SERVICE_OPTION_CONTROL_SIG
+* LMD_START_NN_SERVICE_CONFIG_SIG
+* LMD_START_SERVICE_CONFIG_SIG
+* Used from LMD<->LMD
+* Revision 1.13  2001/02/22 13:43:12  mshaver
+* Add parameter to LmdRevSendAccessFrame to pass the maximum
+* number of bytes in the access frame
+* Revision 1.12  2001/02/21 13:23:25  mshaver
+* Added parameter to LmdSvcFwdConfigGet to indicate the 
+* quality of the current channel (CRC).
+* Revision 1.11  2001/02/20 08:26:09  mshaver
+* Change header size from 16 to 8 bits in LmdSvcFwdConfigGet().
+* Revision 1.10  2001/02/16 14:48:53  mshaver
+* Added FchRate to LmdSvcFwdConfigGet() parameter list.
+* Revision 1.9  2001/02/15 17:32:01  mshaver
+* Changed the forward service config struct to define the routing
+* fields in terms of task ids, added frame category and mux option
+* to the struct as well. Added prototypes for addition service
+* configuration operations LmdSvcFwdMuxPDUType(), 
+* LmdSvcFwdFrameReceive() and LmcSvcFwdPtRate().
+* Revision 1.8  2001/02/14 13:53:37  mshaver
+* Added forward and reverse function prototypes to be consistent
+* with the Rhapsody model. Removed unneeded information that
+* is now local to a specific object.
+* Revision 1.7  2001/01/29 11:53:42  mshaver
+* Added Lmd8BitOffsetto8BitOffsetCpy() prototype, and signal
+* data queueing function prototypes.
+* Revision 1.6  2001/01/19 11:53:10  mshaver
+* Added LmdDataTypeTand LmdRevTchCarrierT data structures,
+* and lmdbit.c function prototypes.
+* Revision 1.5  2001/01/16 16:30:17  mshaver
+* Merge in revision 1.4.1.2.
+* Revision 1.4.1.2  2001/01/16 16:08:18  mshaver
+* Define enum typedef for lmd state, remove PACKED qualifier from the data structs used to write data to direct buffer as it is not needed, changed various function prototypes to be extern.
+* Revision 1.4.1.1  2001/01/10 16:07:11  mshaver
+* Duplicate revision
+* Revision 1.4  2001/01/10 16:07:11  wfu
+* revison on 01/10/01
+* Revision 1.3  2001/01/08 08:54:38  mshaver
+* Moved IPC direct buffer mailbox definitions from lmdapi.h to
+* lmddefs.h as they are not global. Added rcs log at bottom of 
+* file.
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+
+#endif
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:16:24 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:20:51 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+/**Log information: \main\Trophy\Trophy_SO73\1 2013-07-10 07:00:08 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+/**Log information: \main\Trophy\2 2013-07-17 08:16:58 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmderr.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmderr.h
new file mode 100644
index 0000000..2060a4e
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmderr.h
@@ -0,0 +1,282 @@
+/*****************************************************************************
+*  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 _LMDERR_H_
+#define _LMDERR_H_
+/*****************************************************************************
+* 
+* FILE NAME   :lmderr.h 
+*
+* DESCRIPTION :
+*
+*     Contains the error typdefs for error traping
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+typedef enum
+{
+   /* Events */
+   LMD_ERR_UNEXPECTED_EVENT                                       = 0x01,
+
+   /* Main object related */
+   LMD_ERR_CMD_MAILBOX_SHOULD_NOT_BE_EMPTY                        = 0x10,
+   LMD_ERR_INVALID_CMD_MSG_ID                                     = 0x11,
+   LMD_ERR_INVALID_SIG_MSG_ID                                     = 0x12,
+   LMD_ERR_INVALID_PRIMARY_TRAFFIC_MSG_ID                         = 0x13,
+   LMD_ERR_SIG_MAILBOX_SHOULD_NOT_BE_EMPTY                        = 0x14,
+
+   /* Forward channel object */
+   LMD_ERR_NO_FSCH_IND_ON_DIR_MBOX                                = 0x20,
+      
+   /* Reverse channel object */
+   LMD_ERR_ACCESS_MSG_FAIL                                        = 0x30,
+   LMD_ERR_EACH_MSG_FAIL                                          = 0x31,
+   LMD_ERR_RTC_SIG_MSG_FAIL                                       = 0x32,
+   LMD_ERR_TCSTART_MSG_FAIL                                       = 0x33,
+   LMD_ERR_TCSTOP_MSG_FAIL                                        = 0x34,
+   LMD_ERR_SUBSTATE_DISC_MSG_FAIL                                 = 0x35,
+   LMD_ERR_ACCESS_ABORT_MSG_FAIL                                  = 0x36,
+   LMD_ERR_MBOX_ROUTING                                           = 0x37, 
+   LMD_DBUF_ACCESS_TIMEOUT_ERR                                    = 0x38,
+   LMD_REV_TRAFFIC_FRAME_TIMING_ERR                               = 0x39,
+
+   /* Service configuration object */
+   LMD_ERR_INVALID_SVC_CMD_MSG                                    = 0x60,
+   LMD_MUX_PDU_1_RATE_UNKNOWN                                     = 0x61,
+   LMD_MUX_PDU_2_RATE_UNKNOWN                                     = 0x62,
+   LMD_DTCH_NOT_IN_USE                                            = 0x63,
+   LMD_DCCH_MUX_PDU_1_BITS_ERROR                                  = 0x64,
+   LMD_DCCH_MUX_PDU_2_BITS_ERROR                                  = 0x65,
+   LMD_CHANNEL_NOT_SUPPORT_IN_PHASE                               = 0x66,
+   LMD_ERR_INVALID_PACKET_RATE_PRI                                = 0x67,
+   LMD_INVALID_FWD_FCH_MUX_OPT                                    = 0x68,
+   LMD_INVALID_REV_FCH_MUX_OPT                                    = 0x69,
+   LMD_INVALID_FWD_DCCH_MUX_OPT                            = 0x6A,
+   LMD_ERR_INVALID_MUX_PDU_TYPE                                   = 0x6B,
+   LMD_ERR_CHNL_RATE_NOT_SUPPORT                                  = 0x6C,
+   LMD_ERR_LOOPBACK_TABLE_DEPENDENCY_OUT_SYNC                     = 0x6D,
+   LMD_ERR_INVALID_LOOPBACK_MUX_PDU_TYPE                          = 0x6E,
+   LMD_INVALID_SVC_OPT_FOR_CONTROL                                = 0x6F, 
+   LMD_ERR_UNABLE_SCHED_SRV_OPT_CONTROL_MSG                       = 0x70,
+   LMD_ERR_SVC_OPT_NOT_SUPPORTED                                  = 0x71,
+   LMD_ERR_INVALID_REV_FCH_NUM_BITS                               = 0x72,
+   LMD_ERR_INVALID_LPM_ENTRIES                                    = 0x73,
+   LMD_INVALID_FWD_FCH_NUM_BITS                                   = 0x74,
+   LMD_INVALID_SVC_SRID_CONFIG                                    = 0x75,
+   LMD_ERR_RLP_SRID_NOMATCH                                       = 0x76,
+   LMD_ERR_RLP_SRID_DISC                                          = 0x77,
+   /* FCH PT,SIG, SEC all in use MUXPDU1.*/
+   LMD_ERR_REV_MUX1_ALL_INUSE                                     = 0x78,
+   /* The FCH SEC and SIG in USE w/o PT */
+   LMD_ERR_REV_FCHSEC_SIG_INUSE                                   = 0x79,
+   LMD_ERR_REV_DCCHSEC_SIG_INUSE                                  = 0x7A,                     
+
+   LMD_ERR_REV_FCH_4_RLP                                          = 0x7B,
+   LMD_ERR_REV_DCCH_4_RLP                                         = 0x7C,
+   LMD_ERR_REV_FCH_DATA_MSG                                       = 0x7D,
+   LMD_ERR_REV_DCCH_DATA_MSG                                      = 0x7E,
+   LMD_ERR_REV_SCH_DATA_MSG                                       = 0x7F,
+   LMD_ERR_FWD_SCH_MSG_EMPTY_QUEUE                                = 0x80,
+   LMD_ERR_REV_SCH_MSG_EMPTY_QUEUE                                = 0x81,
+   LMD_ERR_FWD_PHY_CHNL_TYPE_4_RLP                                = 0x82,                  
+   LMD_INVALID_SIGNAL_CANCELATION                                 = 0x83,
+   LMD_ERR_TASK_NOT_CONNECTED                                     = 0x84,
+   LMD_ERR_SRID_FOR_RSCH                                          = 0x85,
+   LMD_ERR_RSCH_DATA_FROM_RLP                                     = 0x86,
+   LMD_ERR_AUDIO_DISABLED                                         = 0x87,
+   /*
+    * Voice Memo and Voice Recognition errs
+    */
+   /* Record errs */
+   LMD_ERR_RECORD_START_INVALID_DATATYPE                          = 0x90,
+   LMD_ERR_RECORD_START_INVALID_FOR_PRESENT_STATE                 = 0x91,
+   LMD_ERR_RECORD_START_INVALID_WHILE_ON_TRAFFIC_CH               = 0x92,
+   LMD_ERR_RECORD_STOP_INVALID_FOR_PRESENT_STATE                  = 0x93,
+   LMD_ERR_RECORD_RECEIVED_ZERO_LEN_ENCODE_PACKET                 = 0x94,
+   LMD_ERR_RECORD_RECEIVED_INVALID_ENCODE_PACKET_MSGID            = 0x95,
+   LMD_ERR_RECORD_EXPECTED_ENCODE_PACKET                          = 0x96,
+   LMD_ERR_RECORD_INVALID_DATATYPE_FROM_DSPV                      = 0x97,
+   LMD_ERR_RECORD_INVALID_RATE_FOR_SERVICE_OPTION_1               = 0x98,
+   LMD_ERR_RECORD_INVALID_RATE_FOR_SERVICE_OPTION_3               = 0x99,
+   LMD_ERR_RECORD_INVALID_RATE_FOR_SERVICE_OPTION_17              = 0x9A,
+   LMD_ERR_RECORD_INVALID_DATA_LEN_FROM_DSPV                      = 0x9B,
+   LMD_ERR_RECORD_INVALID_SRVC_OPT_DURING_LOOPBACK                = 0x9C,
+   /* Playback errs */
+   LMD_ERR_PLAYBACK_START_INVALID_FOR_PRESENT_STATE               = 0xA0,
+   LMD_ERR_PLAYBACK_START_INVALID_WHILE_ON_TRAFFIC_CH             = 0xA1,
+   LMD_ERR_PLAYBACK_STOP_INVALID_FOR_PRESENT_STATE                = 0xA2,
+   LMD_ERR_PLAYBACK_INVALID_PACKET_RATE                           = 0xA3,
+   LMD_ERR_PLAYBACK_SERVICE_OPTION_MISMATCH                       = 0xA4,
+   /* Specific Conversation Record and Answering Machine Playback errs */
+   LMD_ERR_CONV_RECORD_INVALID_NO_SPEECH_SRV_OPT                  = 0xA8,
+   LMD_ERR_ANSWER_PLAYBACK_WITH_NO_PACKETS                        = 0xA9,
+   /* General Record or Playback errs */
+   LMD_ERR_INVALID_RECORD_OR_PLAYBACK_SPCH_SRV_OPT                = 0xB0,
+   LMD_ERR_INVALID_RECORD_OR_PLAYBACK_MSG                         = 0xB1,
+   LMD_ERR_CANT_ENABLE_TIMER_FOR_RECORD_OR_PLAYBACK               = 0xB2,
+
+#if 0   
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+   /* Markov */
+   LMD_ERR_MARKOV_INVALID_ZN                                      = 0x1100,
+   LMD_ERR_MARKOV_INVALID_RATEMODE                                = 0x1101,
+   LMD_ERR_MARKOV_INVALID_MULTIPLEXOPTION                         = 0x1102,
+   LMD_ERR_MARKOV_INVALID_PACKETTYPE                              = 0x1103,
+   LMD_ERR_MARKOV_INVALID_PACKETRATE                              = 0x1104,
+   LMD_ERR_MARKOV_INVALID_PACKETCAT                               = 0x1105,
+   LMD_ERR_MARKOV_INVALID_COUNTERID                               = 0x1106,
+   LMD_ERR_MARKOV_INVALID_CTRLRECTYPE                             = 0x1107,
+   
+   /* TDSO */
+   LMD_ERR_TDSO_INVALID_PACKETCAT                                 = 0x1120,
+   LMD_ERR_TDSO_INVALID_COUNTERID                                 = 0x1121,
+   LMD_ERR_TDSO_INVALID_CONNECT_TRAFTYPE                          = 0x1122,
+   LMD_ERR_TDSO_INVALID_PACKETTYPE                                = 0x1123,
+   LMD_ERR_TDSO_INVALID_MUXOPTION                                 = 0x1124,
+   LMD_ERR_TDSO_INVALID_Nx_BUFSIZE                                = 0x1125,
+   LMD_ERR_TDSO_INVALID_FWD_RC                                    = 0x1126,
+   LMD_ERR_TDSO_INVALID_REV_RC                                    = 0x1127,
+   LMD_ERR_TDSO_INVALID_PROBABILITY                               = 0x1128,
+   LMD_ERR_TDSO_INVALID_CONNECT_CHANNELID                         = 0x1129,
+   LMD_ERR_TDSO_INVALID_PROCESS_CHANNELID                         = 0x112A,
+   LMD_ERR_TDSO_INVALID_DISCONN_CHANNELID                         = 0x112B,
+   LMD_ERR_TDSO_INVALID_CTRLRECTYPE                               = 0x112C,
+   LMD_ERR_TDSO_BUFSIZE_NOT_MULTIPLE_OF_3                         = 0x112D,
+
+   /* error codes from the secondary task */
+   LMD_ERR_S_INVALID_SIG_ID                                       = 0x1140,
+   LMD_ERR_S_MAILBOX_EMPTY                                        = 0x1141,
+   LMD_ERR_S_INVALID_MSG_ID                                       = 0x1142,
+
+   /* Resource Control */
+   LMD_DCCH_NOT_VALID_PHYRES                                      = 0x1150,
+   LMD_FCH_NOT_VALID_PHYRES                                       = 0x1151,
+   LMD_RES_ALLOC_DEALLOC_CONFLIC                                  = 0x1152,
+
+   /* MuxPDU FIQ ISR Error Codes */
+   LMD_ERR_MPISR_INVALID_NUM_PDUS                                 = 0x1160,
+   LMD_ERR_MP_OUT_OF_RAM_BUFFERS                                  = 0x1161,
+   LMD_ERR_MPISR_FRAME_QUE_FULL                                   = 0x1162,
+   LMD_ERR_MPISR_INVALID_PDU_LEN_ZERO                             = 0x1163,
+   LMD_ERR_MPISR_BAD_CRC                                          = 0x1164,
+   LMD_ERR_MP_FRAME_FREE_BAD_PTR                                  = 0x1165,
+   LMD_ERR_MP_FRAME_FREE_NOT_ALLOCATED                            = 0x1166,
+
+   /* MuxPDU RAM Buffer Access Error Codes */
+   LMD_ERR_MPMEM_BUF_FREE_BAD_PTR                                 = 0x1170,
+   LMD_ERR_MPMEM_BUF_FREE_NOT_ALLOCATED                           = 0x1171,
+   LMD_ERR_MPMEM_BUF_FREE_CORRUPTED                               = 0x1172,
+   LMD_ERR_MPMEM_BUF_GET_BAD_SIZE                                 = 0x1173,
+   LMD_ERR_MPMEM_BUF_GET_OUT_OF_BUFFERS                           = 0x1174,
+
+   /* MuxPDU Test Error Codes */
+   LMD_ERR_MPTEST_FRAME_DATA_MISMATCH                             = 0x1180,
+   LMD_ERR_MPTEST_INVALID_NUM_PDUS_RCVD                           = 0x1181,
+   LMD_ERR_REV_DATA_MSG_QUEUED                                    = 0x1182,
+   LMD_ERR_INVALID_INDEX_TO_CHIND_TABLE                           = 0x1183,
+
+   /* 1X PC Voice stream Error Codes */
+   LMD_ERR_VSTRM_INVALID_MSG_RCVD                                 = 0x1190,
+   LMD_ERR_VSTRM_FWD_PKT_DISCARD                                  = 0x1191,
+   LMD_ERR_VSTRM_CANT_ENABLE_TIMER                                = 0x1192,
+
+   /* Last entry place holder */
+   LMD_ERR_MAX_NUM_ERR_CODES
+} LmdErrorCodeT;
+
+
+/*****************************************************************************
+* $Log: lmderr.h $
+* Revision 1.6  2005/03/31 16:42:43  wfu
+* FixCR5920: Add new MonFault id: Rev Data Msg queued.
+* Revision 1.5  2004/10/20 18:30:15  vxnguyen
+* Added/changed some MuxPDU-related error codes.
+* Revision 1.4  2004/10/06 16:50:33  vxnguyen
+* Added new MuxPDU ISR 'BAD CRC' error code.
+* Revision 1.3  2004/07/16 14:13:54  vxnguyen
+* Added 2 new MPMEM_BUF_GET error codes.
+* Revision 1.2  2004/03/25 11:55:19  fpeng
+* Updated from 6.0 CP 2.5.0
+* Revision 1.2  2003/10/21 15:45:23  wavis
+* Added MuxPDU error codes.
+* Revision 1.1  2003/05/12 15:31:49  fpeng
+* Initial revision
+*
+*
+* Revision 1.23  2003/03/13 16:17:33  wfu
+* .Add new fault id: LMD_ERR_RSCH_DATA_FROM_RLP.
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:16:25 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:20:53 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmdsapi.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmdsapi.h
new file mode 100644
index 0000000..221bca0
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmdsapi.h
@@ -0,0 +1,120 @@
+/*****************************************************************************
+*  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) 2001-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _LMDSAPI_H_
+#define _LMDSAPI_H_
+/*****************************************************************************
+*
+* FILE NAME   : lmdsapi.h
+*
+* DESCRIPTION :
+*
+*   This is the interface include file for LMD secondary task.
+*   It is organized by first defining the EXE mailboxes and signals used.
+*   After this, the enumerated message IDs are defined, then basic typedefs
+*   and message structures, if any.
+*
+* HISTORY     :
+*   See Log at end of file
+*
+*****************************************************************************/
+
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "sysapi.h"
+
+#include "lmds_msgid.h"
+#include "lmd_audio.h"
+
+
+/*----------------------------------------------------------------------------
+* EXE Interfaces - Definition of Signals and Mailboxes
+*----------------------------------------------------------------------------*/
+
+#define LMD_S_MAILBOX            EXE_MAILBOX_1_ID
+
+
+/*---------------------------------------------------------------
+*  Message IDs for signals and commands sent to LMD_S
+* (NOTE:  TDSO Message Definitions are defined in lmdtdso.h)
+*---------------------------------------------------------------*/
+
+
+
+/*---------------------------------------------------------------
+*  Basic Types
+*---------------------------------------------------------------*/
+
+
+typedef enum
+{
+   IPC_VOICE_REC_SEL_PATH_REV       = 0,
+   IPC_VOICE_REC_SEL_PATH_FWD       = 1,
+   IPC_VOICE_REC_SEL_PATH_BOTH      = 2
+} IpcVoiceRecSelPathModeT;
+
+typedef enum
+{
+   IPC_VOICE_MUTE_AT_PLAYBACK        = 0,
+   IPC_VOICE_MIX_SPKR_AT_PLAYBACK    = 1,
+   IPC_VOICE_MIX_MIC_AT_PLAYBACK     = 2
+} IpcVoiceRecPlaybackVoiceMixT;
+
+
+/*---------------------------------------------------------------
+*  Message Definitions
+*---------------------------------------------------------------*/
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy_SO73\1 2013-07-09 02:12:56 GMT jtzhang
+** scbp#11737**/
+/**Log information: \main\Trophy\1 2013-07-17 08:23:59 GMT jtzhang
+** scbp#11737**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmdtdso.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmdtdso.h
new file mode 100644
index 0000000..a0a6981
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmdtdso.h
@@ -0,0 +1,509 @@
+/*****************************************************************************
+*  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 _LMDTDSO_H_
+#define _LMDTDSO_H_
+
+/*****************************************************************************
+* 
+* FILE NAME   : lmdtdso.h
+*
+* DESCRIPTION : Test Data Service Option definitions
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "sysapi.h"
+
+/*----------------------------------------------------------------------------
+ Test Data Service Option Defines and Macros
+----------------------------------------------------------------------------*/
+
+/* service option control counter response size */
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+
+/* this is 3 times the max of (FUND_TDSO_RX_MAX, SUPP_TDSO_RX_MAX, PDU_TDSO_RX_MAX,
+                               FUND_TDSO_TX_MAX, SUPP_TDSO_TX_MAX) */
+#define  MAX_COUNTER_RESPONSE_SIZE  (3 * PDU_TDSO_RX_MAX)
+
+#else
+
+/* this is 3 times the max of (FUND_TDSO_RX_MAX, FUND_TDSO_TX_MAX) */
+#define  MAX_COUNTER_RESPONSE_SIZE  (3 * FUND_TDSO_RX_MAX)
+
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+/*----------------------------------------------------------------------------
+ Test Data Service Option Typedefs
+----------------------------------------------------------------------------*/
+
+/* Traffic (channel) Direction type */
+typedef enum
+{
+   FUND_FORWARD = 0,
+   FUND_REVERSE,
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+   SUPP0_FORWARD,
+   SUPP0_REVERSE,
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+   TDSO_MAX_DIR
+} TdsoDirectionT;
+
+/* Frame Type Index based on MuxOption and TrafficType
+ * This index can and will be used to access parameters
+ * from many fast look up tables. */
+typedef enum
+{
+   /* muxoption: 0x01 */
+   FTI_1X_171_FUND = 0, /* primary   */
+   FTI_1X_168_FUND,     /* secondary */
+
+   /* muxoption: 0x02 */
+   FTI_1X_266_FUND,
+   FTI_1X_262_FUND,
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+   /* muxoption: 0x03 */
+   FTI_1X_171_SUPP,
+   FTI_1X_168_SUPP,
+
+   /* muxoption: 0x04 */
+   FTI_1X_266_SUPP,
+   FTI_1X_262_SUPP,
+
+   /* muxoptions: 0x809, 0x811, 0x821 */
+   FTI_2X_170_PRI,
+   FTI_2X_170_SEC,
+   FTI_4X_170_PRI,
+   FTI_4X_170_SEC,
+   FTI_8X_170_PRI,
+   FTI_8X_170_SEC,
+
+   /* muxoptions: 0x80A, 0x812, 0x822 */
+   FTI_2X_266_PRI,
+   FTI_2X_266_SEC,
+   FTI_4X_266_PRI,
+   FTI_4X_266_SEC,
+   FTI_8X_266_PRI,
+   FTI_8X_266_SEC,
+
+   /* muxoptions: 0x905 0x909, 0x911, 0x921 */
+   FTI_1X_346_PRI,
+   FTI_1X_346_SEC,
+   FTI_2X_346_PRI,
+   FTI_2X_346_SEC,
+   FTI_4X_346_PRI,
+   FTI_4X_346_SEC,
+   FTI_8X_346_PRI,
+   FTI_8X_346_SEC,
+
+   /* muxoptions: 0x906 0x90A, 0x912, 0x922 */
+   FTI_1X_538_PRI,
+   FTI_1X_538_SEC,
+   FTI_2X_538_PRI,
+   FTI_2X_538_SEC,
+   FTI_4X_538_PRI,
+   FTI_4X_538_SEC,
+   FTI_8X_538_PRI,
+   FTI_8X_538_SEC,
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+   FTI_MAX_SIZE
+} TdsoFrameTypeIndexT;
+
+/* Frame Params type */
+typedef struct
+{
+   kal_uint16   NumPdus;
+   kal_uint16   NumBits;
+   kal_uint16   PadBits;
+} TdsoFrameParamsT;
+
+/* Frame packet type */
+typedef enum
+{
+   FULL_PACKET = 0,
+   BLNK_PACKET
+} TdsoPacketTypeT;
+
+/* Data source used in the generation of local packets */
+typedef enum
+{
+   USE_PATTERN = 0,
+   USE_CIRBUF,
+   USE_ONES
+} TdsoDataSourceT;
+
+/* Frame activity types */
+typedef enum
+{
+   FA_DETERMINISTIC = 0,
+   FA_RANDOM
+} TdsoFrameActivityT;
+
+/* Control parameters */
+typedef struct
+{
+   kal_uint8               Nx;
+   TdsoFrameActivityT  FrameActivity;
+   kal_uint32              OnThreshold;
+   kal_uint32              OffThreshold;
+   kal_uint8               TxOnPer;
+   kal_uint8               TxOffPer;
+   TdsoDataSourceT     DataSource;
+   kal_uint8               DataPattern;
+} TdsoControlParmT;
+
+/* transition state definitions */
+typedef enum
+{
+   TDSO_STATE_OFF = 0,
+   TDSO_STATE_ON
+} TdsoStateT;
+
+typedef enum
+{
+   LAST_TIME = 0,
+   THIS_TIME,
+   NEXT_TIME,
+   MAX_TIME
+} TdsoTimeT;
+
+typedef struct
+{
+   kal_uint32   Value;
+   kal_uint32   Time;
+} TdsoSRNGT;
+
+/* Receive Counter Id Lookup Table type */
+typedef struct
+{
+   const kal_uint16  *FullRateTableP;
+   const kal_uint16  *BlnkRateTableP;
+   const kal_uint16   TableSize;
+} TdsoRxLookUpTableT;
+
+/* Receive frame counters on the fundicated channel
+ * NOTE:  the order of these ids MUST match that described
+ *        in section 3.8.1.4 - see GetFundRECCounters() */
+typedef enum
+{
+   FUND_TDSO_E1_R1 = 0,
+   FUND_TDSO_E1_RD,
+   FUND_TDSO_E1_RO,
+   FUND_TDSO_E1_RB,
+   FUND_TDSO_E1_RFL,
+   FUND_TDSO_E1_RE,
+   FUND_TDSO_E1_RERR,
+
+   FUND_TDSO_EN_RN,
+   FUND_TDSO_EN_RB,
+   FUND_TDSO_EN_RO,
+
+   FUND_TDSO_RX_MAX  /* 10, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoFundRxCntrT;
+
+/* Transmit frame counters on the fundicated channel
+ * NOTE:  the order of these ids MUST match that described
+ *        in section 3.8.2.3 - see GetFundTXCounters() */
+typedef enum
+{
+   FUND_TDSO_E1_T1 = 0,
+   FUND_TDSO_E1_TD,
+   FUND_TDSO_E1_TB,
+   FUND_TDSO_EB_TB,
+   FUND_TDSO_EB_TO,
+   FUND_TDSO_TX_MAX  /* 5, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoFundTxCntrT;
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+
+/* Receive frame counters on the supplemental channel */
+typedef enum
+{
+   SUPP_TDSO_ENx_RNx = 0,
+   SUPP_TDSO_ENx_RERR,
+   SUPP_TDSO_ENx_RE,
+   SUPP_TDSO_ENx_RB,
+   SUPP_TDSO_EB_RB,
+   SUPP_TDSO_EB_RO,
+
+   SUPP_TDSO_RX_MAX  /* 6, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoSuppRxCntrT;
+
+/* Receive PDU counters for the supplemental channel
+ * NOTE:  the order of these ids MUST match that described
+ *        in section 3.8.2.2 - see GetSuppPERCounters() */
+typedef enum
+{
+   PDU_TDSO_E3_R3 = 0,
+   PDU_TDSO_E3_RERR,
+   PDU_TDSO_E3_RE,
+
+   PDU_TDSO_E2_R2,
+   PDU_TDSO_E2_RERR,
+   PDU_TDSO_E2_RE,
+
+   PDU_TDSO_E1a_R1a,
+   PDU_TDSO_E1a_RERR,
+   PDU_TDSO_E1a_RE,
+
+   PDU_TDSO_E1b_R1b,
+   PDU_TDSO_E1b_RERR,
+   PDU_TDSO_E1b_RE,
+
+   PDU_TDSO_RX_MAX   /* 12, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoRxPduCntrT;
+
+/* Transmit frame counters on the supplemental channel
+ * NOTE:  the order of these ids MUST match that of
+ *        SuppTXData.Counters[] - see GetSuppTXCounters() */
+typedef enum
+{
+   SUPP_TDSO_ENx_TNx = 0,
+   SUPP_TDSO_ENx_TB,
+   SUPP_TDSO_EB_TB,
+   SUPP_TDSO_EB_TO,
+
+   SUPP_TDSO_TX_MAX  /* 5, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoSuppTxCntrT;
+
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+/* signaling type */
+typedef enum
+{
+   SIGTYPE_NONE = 0,
+   SIGTYPE_BLNKnBURST
+} TdsoSigTypeT;
+
+
+/*
+ * Definitions used in processing the Service Option Control Message
+ */
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8    CtlRecType;
+   PACKED_PREFIX union   /* the meaning of the 2nd byte is dependent on CtlRecType */
+   {
+      kal_uint8 CtrlCode;
+      kal_uint8 VectorId;
+   } PACKED_POSTFIX Directive;
+   kal_uint8    Misc; /* ChannelDirection:2, CopyCounters:1, ClearCounters:1,
+                     DataSource:1, FrameSource:2, FrameActivity:1      */
+   kal_uint8    TestOptions;
+   kal_uint8    Data[1]; /* NumCirBufFrames, On2OffProb, Off2OnProb, TxOnPer, TxOffPer, DataPat */
+} PACKED_POSTFIX  LmdTdsoControlDataT;
+
+/* channel direction field */
+typedef enum
+{
+   CHANDIR_BOTH = 0,
+   CHANDIR_FORWARD,
+   CHANDIR_REVERSE
+} TdsoChannelDirectionT;
+
+/* control record type field */
+typedef enum
+{
+   DIRECTIVE_CONTROLS_FOR_ALL_CHANNELS = 0,
+   DIRECTIVE_CONTROLS_FOR_FCH,
+   DIRECTIVE_CONTROLS_FOR_DCCH,
+   DIRECTIVE_CONTROLS_FOR_SCH0,
+   DIRECTIVE_CONTROLS_FOR_SCH1,
+
+   DIRECTIVE_CNTR_RETRIEVAL_FOR_FCH,
+   DIRECTIVE_CNTR_RETRIEVAL_FOR_DCCH,
+   DIRECTIVE_CNTR_RETRIEVAL_FOR_SCH0,
+   DIRECTIVE_CNTR_RETRIEVAL_FOR_SCH1
+} TdsoControlRecTypeT;
+
+/* vector id field */
+typedef enum
+{
+   VECTORID_FER = 0,             /* 0 */
+   VECTORID_PER,                 /* 1 */
+   VECTORID_REC = VECTORID_PER,  /* 1 */
+   VECTORID_TX                   /* 2 */
+} TdsoVectorIdT;
+
+/* counter response definitions */
+typedef  struct
+{
+   kal_uint8    CtlRecType;
+   kal_uint8    VectorId;
+   kal_uint8    Counters[MAX_COUNTER_RESPONSE_SIZE];
+} TdsoCountersResponseT;
+
+/*
+ * Definitions used in generating spy data
+ */
+/* FER structure */
+typedef struct
+{
+   kal_uint32      Good;
+   kal_uint32      Bad;
+   kal_uint32      Total;
+   kal_uint16      FER;
+} TdsoRxFerT;
+
+/* Fch/Dcch Transmit spy structure */
+typedef struct
+{
+   kal_uint16      MuxOption;
+   kal_uint32      Counters[FUND_TDSO_TX_MAX];
+} TdsoFundTxSpyT;
+
+/* Fch/Dcch Receive spy structure */
+typedef struct
+{
+   kal_uint16      MuxOption;
+   kal_uint32      Counters[FUND_TDSO_RX_MAX];
+} TdsoFundRxSpyT;
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+
+/* Sch Transmit spy structure */
+typedef struct
+{
+   kal_uint16      MuxOption;
+   kal_uint16      Rate;  /* N times base rate */
+   kal_uint32      Counters[SUPP_TDSO_TX_MAX];
+} TdsoSuppTxSpyT;
+
+/* Sch Pdu Receive spy structure */
+typedef struct
+{
+   kal_uint16      MuxOption;
+   kal_uint32      Counters[PDU_TDSO_RX_MAX];
+} TdsoSuppPduRxSpyT;
+
+/* Sch Receive spy structure */
+typedef struct
+{
+   kal_uint16      MuxOption;
+   kal_uint16      Rate;  /* N times base rate */
+   kal_uint32      Counters[SUPP_TDSO_RX_MAX];
+} TdsoSuppRxSpyT;
+
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+/* Fch/Dcch/Sch Receive FER spy structure */
+typedef struct
+{
+   kal_uint16      MuxOption;
+   TdsoRxFerT  FullRate;
+} TdsoRxFerSpyT;
+
+/* TDSO Functional Trace Types */
+typedef enum
+{
+   LMD_TDSO_FUNC_RESYNC_CHANNEL              = 0,
+   LMD_TDSO_FUNC_COMPARE_NUMPDUS_DIFFER      = 1,
+   LMD_TDSO_FUNC_COMPARE_NUMBITS_DIFFER      = 2,
+   LMD_TDSO_FUNC_COMPARE_DATA_DIFFER         = 3,
+   LMD_TDSO_FUNC_COMPARE_IDENTICAL           = 4,
+   LMD_TDSO_FUNC_NOT_COMPARED                = 5,
+   LMD_TDSO_FUNC_SSO_CONNECT                 = 6,
+   LMD_TDSO_FUNC_SSO_PROCESSING              = 7,
+   LMD_TDSO_FUNC_SSO_DISCONNECT              = 8,
+   LMD_TDSO_FUNC_CONTROL_MSG                 = 9,
+   LMD_TDSO_FUNC_CNTRRET_DIR                 = 10,
+   LMD_TDSO_FUNC_CONTROL_DIR                 = 11,
+   LMD_TDSO_PROC_RESET_CHANNEL               = 12,
+   LMD_TDSO_PROC_SETUP_CHANNEL               = 13,
+   LMD_TDSO_FUNC_DEBUG_RX_PACKET             = 14
+} TdsoFunctionalTraceTypeT;
+
+/* TDSO Processing Trace Types */
+typedef enum
+{
+   LMD_TDSO_PROC_BUILD_CIRBUF    = 0,
+   LMD_TDSO_PROC_GEN_INFO_BITS   = 1,
+   LMD_TDSO_PROC_GEN_BLNK_BITS   = 2,
+   LMD_TDSO_PROC_ADVANCE_OFFSET  = 3,
+   LMD_TDSO_PROC_SET_CIRBUF_SIZE = 4
+} TdsoProcessingTraceTypeT;
+
+/*----------------------------------------------------------------------------
+ Global Variables
+----------------------------------------------------------------------------*/
+extern kal_uint32        TdsoRNG[];              /* Current Random Number      */
+extern kal_uint16        TdsoBn[];               /* Circular Buffer Size       */
+extern kal_uint8 * const TdsoCirBufP[];          /* Circular Buffer Pointers   */
+
+/*----------------------------------------------------------------------------
+ External Function Prototypes
+----------------------------------------------------------------------------*/
+extern void    TdsoBuildCirBuf ( TdsoDirectionT Direction );
+
+
+/*****************************************************************************
+* $Log: lmdtdso.h $
+* Revision 1.2  2004/03/25 11:55:23  fpeng
+* Updated from 6.0 CP 2.5.0
+* Revision 1.1  2003/05/12 15:31:54  fpeng
+* Initial revision
+* Revision 1.4  2002/07/15 18:36:31  vxnguyen
+* Added global Tdso data and funtion declarations.
+* Revision 1.3  2002/05/30 11:11:36  mshaver
+* Added VIA Technologies copyright notice.
+* Revision 1.2  2002/04/10 10:44:27  vxnguyen
+* Added compilor option SYS_OPTION_SCH_RAM_INUSE.
+* Revision 1.1  2002/02/07 16:56:39  vxnguyen
+* Initial revision
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlp_data.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_data.h
new file mode 100644
index 0000000..99b7d07
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_data.h
@@ -0,0 +1,359 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       rlp_data.h
+ * Project:         IS-707 Mobile Terminal
+ * Original Author: BJC
+ * Creation Date:   Nov. 19/97
+ *
+ * Description:  IS-707 Mobile Terminal Engine API Data Definitions
+ *
+ * Restrictions: 
+ *
+ * Dependencies: 
+ *
+ ****************************************************************************
+ ****************************************************************************
+ *
+ * RCS Log Information
+ *
+ *
+ * $Log: rlp_data.h $
+ *
+ * 06 05 2019 angie.wu
+ * [MOLY00411583] [Global Variable][C2K PDCA][VMOLY]XL2 counters remove&modify
+ * 	
+ * 	xl2 counter review merge
+ *
+ * 06 28 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - folder fcp,lmd,rlp
+ *
+ * 06 15 2017 angie.wu
+ * [MOLY00226758] [C2K][LMD]remove unused code&code optimized
+ * 	
+ * 	&&decrease L2 code size
+ * Revision 1.3  2005/12/05 17:02:17  hhong
+ * Changed CDMASysTxNaks[ ] to type of kal_int32.
+ * Revision 1.2  2005/01/14 16:18:08  mshaver
+ * Fix CR 5701.
+ * Added definiton of RlpMissingFrameCountT.
+ * Revision 1.1  2004/01/22 10:52:19  fpeng
+ * Initial revision
+ * Revision 1.7  2003/05/02 14:31:15  sulinlow
+ * To add RLP BLOB params received from PS
+ * Revision 1.6  2002/06/18 12:16:24  wfu
+ * . Merged with Revision 1.5.1.2
+ *   for CR 507: RLPRx/Tx  Frame spies
+ * Revision 1.5.1.2  2002/06/17 17:29:25  wfu
+ * . Removed the RLP Rx/Tx Frame spies related
+ *   data structures to rlpwapi.h
+ * Revision 1.5.1.1  2002/06/06 13:53:43  wfu
+ * Duplicate revision
+ * Revision 1.5  2002/06/06 13:53:43  chinh
+ * Changed and Added Copyright
+ * Revision 1.4  2002/02/25 13:46:37  chinh
+ * Defined RLP statistic structures
+ * Revision 1.3  2001/11/14 14:30:42  hhong
+ * Changed to support F-SCH.
+ * Revision 1.2  2001/06/21 10:10:31  yfang
+ * supported RLP3
+ * Revision 1.1  2001/04/26 11:43:15  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 14:37:14  hhong
+ * Moving up to Ver 1.3 by checking out 1.1 and locking 1.2. A
+ * duplicate version of 1.1.
+ * Revision 1.1  1999/11/30 23:18:25Z  cdma
+ * Initial revision
+ * Revision 1.4  1999/07/01 17:22:45  hhong
+ * Incorporate new data engine.
+ * Revision 1.11  1999/03/01 23:26:18  dehman
+ * Updated copyright notices.
+ *
+ * Revision 1.10  1999/02/08 18:18:35  dehman
+ * Changes for dual protocol compliance.
+ *
+ * Revision 1.9  1998/07/14 19:24:26  bcassidy
+ * 1. Add statistics structure definition.
+ *
+ * Revision 1.8  1998/06/19 19:59:50  bcassidy
+ * 1. Remove unused error code: notConnected.
+ *
+ * Revision 1.7  1998/03/04 22:32:33  bcassidy
+ * 1. Add RetQueueFull error code.
+ *
+ * Revision 1.6  1998/02/26  17:54:21  bcassidy
+ * 1. Add more error codes.
+ *
+ * Revision 1.5  1998/02/05  21:36:19  dehman
+ * 1. Added value to header guard def for ITE.
+ * 2. Tagged enums for ITE consumption.
+ *
+ * Revision 1.4  1998/01/31  22:44:07  bcassidy
+ * 1. Add "NakQ Full" error.
+ *
+ * Revision 1.3  1998/01/22  23:45:11  bcassidy
+ * 1. Change RlpFrameType to RlpFrameRate.  Change enum
+ *    prefixes to match.
+ *
+ * Revision 1.2  1998/01/15  16:42:46  bcassidy
+ * 1. Add new component.
+ * 2. Remove RlpServiceConfig definition.
+ * 3. Add new error types.
+ * 4. Change Mux Option definitions.
+ *
+ * Revision 1.1  1998/01/09  22:54:24  bcassidy
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _RLP_DATA_H
+#define _RLP_DATA_H  1
+
+#include "pswcustom.h"
+#include "rlp_prot.h"
+
+enum RlpProtocolVersion_enum
+{
+  RLP_PV_Rlp,
+  RLP_PV_Rlp2,
+  RLP_PV_Rlp3,
+  NUM_RLP_PVs
+};
+typedef kal_uint8 RlpProtocolVersion;
+
+enum RlpChannel_enum
+{
+  RLP_CHAN_Primary,
+  RLP_CHAN_Secondary,
+  NUM_RLP_Chans=1
+};
+typedef kal_uint8 RlpChannel;
+
+enum RlpComponent_enum
+{
+  RLP_COMP_Primary,
+  RLP_COMP_Secondary,
+  RLP_COMP_MuxManager,
+  RLP_COMP_IFC,
+  NUM_RLP_COMPs
+};
+typedef kal_uint32 RlpComponent;
+
+enum RlpMode_enum
+{
+  RLP_MODE_NonTransparent,
+  RLP_MODE_Transparent,
+  NUM_RLP_MODEs
+};
+typedef kal_uint8 RlpMode;
+
+enum RlpRateSet_enum
+{
+  RLP_RATESET_1,
+  RLP_RATESET_2,
+  NUM_RLP_RATESETs
+};
+typedef kal_uint8 RlpRateSet;
+
+enum RlpRateControl_enum
+{
+  RLP_RC_1,
+  RLP_RC_3_4,
+  RLP_RC_1_2,
+  RLP_RC_1_4,
+  RLP_RC_0,
+  NUM_RLP_RCs
+};
+typedef kal_uint8 RlpRateControl;
+
+enum RlpTrafficChanType_enum
+{
+  RLP_TCT_Fund,
+  RLP_TCT_Dcch,
+  RLP_TCT_Supp,
+  NUM_RLP_TCTs,
+  RLP_TCT_Bad = 255
+};
+typedef kal_uint8 RlpTrafficChanType;
+
+enum RlpSsrId_enum
+{
+  RLP_SSRID_PRI = 0,
+  RLP_SSRID_SEC = 1,
+  NUM_RLP_SSRIDs= 2,
+  RLP_SSRID_NUL = 255
+};
+typedef kal_uint8 RlpSsrId;
+
+enum RlpFrameRate_enum
+{
+  RLP_FR_Blank,
+  RLP_FR_1_16,
+  RLP_FR_1_8,
+  RLP_FR_3_16,
+  RLP_FR_1_4,
+  RLP_FR_3_8,
+  RLP_FR_7_16,
+  RLP_FR_1_2,
+  RLP_FR_3_4,
+  RLP_FR_7_8,
+  RLP_FR_Full,
+  RLP_FR_1x,
+  RLP_FR_2x,
+  NUM_RLP_TxFRs,
+  RLP_FR_Bad = 255
+};
+typedef kal_uint8 RlpFrameRate;
+
+enum Rlp3SchRate_enum
+{
+  RLP3_PRI_1_1x,
+  RLP3_PRI_1_2x,
+  RLP3_PRI_2_1x,
+  RLP3_PRI_2_2x,
+  RLP3_SEC_1_1x,
+  RLP3_SEC_1_2x,
+  RLP3_SEC_2_1x,
+  RLP3_SEC_2_2x
+};
+typedef kal_uint8 Rlp3SchRate;
+
+typedef struct 
+{ 
+  kal_bool             revSCHsupported;		/* Whether RSCH is supported by BS or not */
+
+  /* The following are negotiated rlp blob params by the PS */
+  kal_uint8            rlpBlobType;
+  kal_uint8            rlpVersion;
+  kal_uint8            rtt;
+  kal_bool             initVar;
+  kal_uint32           bsExtSeqM;
+  kal_uint32           msExtSeqM;
+  kal_uint8            maxMsNakRoundsFwd;
+  kal_uint8            maxMsNakRoundsRev;
+  kal_uint8            nakRoundsFwd;
+  kal_uint8            nakRoundsRev;
+  kal_uint8            nakPerRoundFwd[ RLP3_MAX_MS_NAK_ROUNDS_FWD ];
+  kal_uint8            nakPerRoundRev[ RLP3_MAX_MS_NAK_ROUNDS_REV ];
+} RlpServConf; 
+
+#define RLP_MAX_DATA_LEN 66 /* (538-10)/8 = 66; Rate 2, even mux-option */
+typedef struct
+{
+  kal_uint32 txData[RLP_MAX_DATA_LEN];
+  kal_uint32 rxData[RLP_MAX_DATA_LEN];
+  kal_uint32 txRetran;
+  kal_uint32 rxRetran;
+  kal_uint32 rxLost;
+} RlpStats;
+
+typedef struct
+{
+   kal_uint32      TotalMissingFwdFrame;
+   kal_uint32      TotalRcvdGoodFwdFrame;
+   kal_uint32      TotalMissingRevFrame;
+   kal_uint32      TotalSendRevFrame;
+   kal_uint32      MaxBlockMissingFrame;
+   kal_uint32      Total8PDUFrame;
+   kal_uint32      Total4PDUFrame;
+   kal_uint32      Total2PDUFrame;
+   kal_uint32      Total1PDUFrame;  
+   kal_uint32      TotalResets;
+}  RlpMissingFrameCountT;
+
+#ifdef RLP_STATISTIC
+typedef struct
+{
+  kal_uint32 SeqNum;
+  kal_uint32 NumNaks;
+} RlpTxNaks;
+
+typedef struct
+{
+  kal_uint32 CdmaSysServiceId;                        /* Service ID */
+  kal_uint32 CdmaSysResetTime;                       /* The system time when RLP stat resets */
+  kal_uint32 CdmaSysNaksReceived;                     /* Received NAK count */
+  kal_int32 CdmaSysReXmitsNotFound;                  /* Invalid NAK count for type 01, 10, 11 plus accumulated
+                                                    distance between invalid 00 NAK seq and v_s */
+  kal_uint32 CdmaSysLargestContigErasure;             /* Maximum count of contiguous erasures received */
+  kal_uint32 CdmaSysResets;                           /* Reset RLP count */
+  kal_uint32 CdmaSysAborts;                           /* Abort frame count */
+  kal_uint32 CdmaSysLastRtt;                          /* Last RTT in counts of 20 msec slot */
+  kal_uint32 CdmaSysRlpBlobUsed;                      /* 3 when BLOB includes RTT or 1 when not
+                                                    (not used currently) */
+  kal_uint32 CdmaSysRxRexmitFrCnt;                    /* Rx Rexmit data frame count */
+  kal_uint32 CdmaSysRxIdleFrCnt;                      /* Rx Idle frame count */
+  kal_uint32 CdmaSysRxFillFrCnt;                      /* Rx Fill frame count */
+  kal_uint32 CdmaSysRxBlankFrCnt;                     /* Rx Blank frame count */
+  kal_uint32 CdmaSysRxNullFrCnt;                      /* Rx Null frame (not used currently) */
+  kal_uint32 CdmaSysRxNewDataFrCnt;                   /* Rx new data frame count */
+  kal_uint32 CdmaSysRx20msFrCnt;                      /* Rx data frame count */
+  kal_uint32 CdmaSysRxTotalBytes;                     /* Total bytes received for passing to upper layer */
+  kal_uint32 CdmaSysRxRlpErasures;                    /* Rx RLP erasures count */
+  kal_uint32 CdmaSysRxMuxErasures;                    /* Rx MUX erasures count */
+  kal_uint32 CdmaSysTxRexmitFrCnt;                    /* Tx Rexmit data frame count */
+  kal_uint32 CdmaSysTxIdleFrCnt;                      /* Tx Idle frame count */
+  kal_uint32 CdmaSysTxNewDataFrCnt;                   /* Tx new data frame count */
+  kal_uint32 CdmaSysTx20msFrCnt;                      /* Tx data frame count */
+  kal_uint32 CdmaSysTxTotalBytes;                     /* Total bytes requested from upper layer sent */
+  kal_uint32 CdmaSysTxNaksCnt;                        /* Count for the last Tx round set by BLOB */
+  kal_uint32 CdmaSysTxNaks[7];                        /* Counts for 0 - 7 NAK Tx remaining for a particular
+                                                    round when Rx the missing frame */  
+} EcdmaSysRlpMeasurement;
+
+typedef struct
+{
+  kal_uint32 timestamp;                              /* Not used currently */
+  EcdmaSysRlpMeasurement rlpMeas;
+} RlpStatsEvent;
+
+extern RlpStatsEvent rlpStat;
+
+#endif /* RLP_STATISTIC */
+
+#endif /* _RLP_DATA_H */
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlp_msg_struct.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_msg_struct.h
new file mode 100644
index 0000000..11e52d3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_msg_struct.h
@@ -0,0 +1,211 @@
+/*****************************************************************************
+*  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 _RLP_MSG_STRUCT_H
+#define _RLP_MSG_STRUCT_H
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * rlp_msg_struct.h
+ *
+ * Project:
+ * --------
+ *   C2K
+ *
+ * Description:
+ * ------------
+ * This module defines the RLP ILM messgae IDs 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+----------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "rlpwapi.h"
+
+/* RLP Messages */
+/*MSG_ID_RLP_PSW_BLOB_CFG_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpBlobMsgT msg;
+} rlp_psw_blob_cfg_msg_struct;
+
+/*MSG_ID_RLP_PSW_INIT_CFG_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpInitCfgMsgT msg;
+} rlp_psw_init_cfg_msg_struct;
+
+/*MSG_ID_RLP_OPEN_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpOpenMsgT msg;
+} rlp_open_msg_struct;
+
+/*MSG_ID_RLP_CLOSE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpCloseMsgT msg;
+} rlp_close_msg_struct;
+
+/*MSG_ID_RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpFwdFundicatedDataIndMsgT msg;
+} rlp_lmd_fwd_fundicated_data_ind_msg_struct;
+
+/*MSG_ID_UT_RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpFwdFundicatedDataIndMsgT msg;
+    kal_uint8                   pri_data [MAX_FUNDICATED_FRAME_SIZE];
+} ut_rlp_lmd_fwd_fundicated_data_ind_msg_struct;
+
+/*MSG_ID_RLP_LMD_FWD_SCH_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpFwdSchDataIndMsgT msg;
+} rlp_lmd_fwd_sch_data_ind_msg_struct;
+
+#define MAX_RLP_FRAME_SIZE 68  /* 538-bit */
+
+/*MSG_ID_UT_RLP_LMD_FWD_SCH_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpFwdSchDataIndMsgT msg;
+    kal_uint8  rlp_data[MAX_PDU_NUM][MAX_RLP_FRAME_SIZE]; /* in-band RLP Frame data */
+} ut_rlp_lmd_fwd_sch_data_ind_msg_struct;
+
+/*MSG_ID_RLP_LMD_REV_DATA_AVAIL_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpRevDataAvailIndMsgT msg;
+} rlp_lmd_rev_data_avail_ind_msg_struct;
+
+/*MSG_ID_RLP_INACT_TMO_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpInActTimeOutMsgT msg;
+} rlp_inact_tmo_req_msg_struct;
+
+/*MSG_ID_RLP_QUERY_STAT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpQueryStatMsgT msg;
+} rlp_query_stat_msg_struct;
+
+/*MSG_ID_RLP_REINSTATE_RATE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_reinstate_rate_msg_struct;
+
+/*MSG_ID_RLP_RATE_CONTROL_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RlpRateControlMsgT msg;
+} rlp_rate_control_msg_struct;
+
+/*MSG_ID_RLP_RESET_STAT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_reset_stat_msg_struct;
+
+/*MSG_ID_RLP_RESET_FRAME_COUNT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_reset_frame_count_msg_struct;
+
+/*MSG_ID_RLP_PEEK_FRAME_STAT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_peek_frame_stat_msg_struct;
+
+/*MSG_ID_RLP_DISABLE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_disable_msg_struct;
+
+/*MSG_ID_RLP_REV_DATA_REQ_SIGNAL*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_rev_data_req_signal_struct;
+
+/*MSG_ID_RLP_REV_DATA_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ValRevTxReqMsgT msg;
+}rlp_rev_data_req_msg_struct;
+
+
+/*MSG_ID_RLP_REV_DATA_REQ2_SIGNAL*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rlp_rev_data_req2_signal_struct;
+
+/*MSG_ID_UT_RLP_SET_MAX_ELEMENT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 maxElement;
+}ut_rlp_set_max_element_msg_struct;
+
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlp_prot.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_prot.h
new file mode 100644
index 0000000..5d84a65
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_prot.h
@@ -0,0 +1,426 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       rlp_prot.h
+ * Project:         IS-707 Mobile Terminal
+ * Original Author: BJC
+ * Creation Date:   Jan. 13, 1998
+ *
+ * Description:  RLP Protocol Frame Data Defintions
+ *
+ * Restrictions: 
+ *
+ * Dependencies: 
+ *
+ ****************************************************************************
+ ****************************************************************************
+ 
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: rlp_prot.h $
+ *
+ * 06 28 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - folder fcp,lmd,rlp
+ * Revision 1.2  2005/10/05 11:16:21  hhong
+ * Changed to shorten the idle timer to 5 frames from 8 frames.
+ * Revision 1.1  2004/01/22 10:52:23  fpeng
+ * Initial revision
+ * Revision 1.7  2003/05/02 14:26:58  sulinlow
+ * To incorporate RLP1 bug fixes due to RLP3 changes
+ * Revision 1.6  2003/04/24 14:14:23  hhong
+ * Changed SEGF_MAX_DATA_BYTE from 15 to 16.
+ * Revision 1.5  2002/06/06 13:54:27  chinh
+ * Changed and Added Copyright
+ * Revision 1.4  2002/03/19 17:36:11  hhong
+ * Added compiler option SYS_OPTION_SCH_RAM_INUSE to reduce RLP_MAX_FRAME_BYTES for saving RAM usage.
+ * Revision 1.3  2001/11/14 14:30:45  hhong
+ * Changed to support F-SCH.
+ * Revision 1.2  2001/06/21 10:11:41  yfang
+ * supported RLP3
+ * Revision 1.1  2001/04/26 11:43:17  fpeng
+ * Initial revision
+ * Revision 1.3  2000/08/28 14:37:23  hhong
+ * Moving up to Ver 1.3 by checking out 1.1 and locking 1.2. A
+ * duplicate version of 1.1.
+ * Revision 1.1  1999/11/30 23:18:41Z  cdma
+ * Initial revision
+ * Revision 1.5  1999/07/01 17:23:17  hhong
+ * Incorporate new data engine.
+ * Revision 1.9  1999/06/09 18:17:32  gfrye
+ * Added defines for Secondary Type A frames.
+ * See problem logs 30 and 31.
+ *
+ * Revision 1.8  1999/03/01 23:26:18  dehman
+ * Updated copyright notices.
+ *
+ * Revision 1.7  1999/02/23 23:16:16  dehman
+ * Major revisions for IS-707-A.8 compliance.
+ *
+ * Revision 1.6  1998/12/09 21:40:18  dehman
+ * 1. Changes to support IS-707-A.2 compliance.
+ * 2. Added Inactivity Monitor feature to support packet mode operation.
+ *
+ * Revision 1.5  1998/05/15 21:28:31  bcassidy
+ * 1. Fix EXT_V_S_MAX definition.
+ *
+ * Revision 1.4  1998/03/12  18:24:11  bcassidy
+ * 1. Fix FULL_PRIMARY_1_BITS definition.
+ * 2. Use FULL_PRIMARY_2_BITS definition in MAX_RLP_FRAME_BYTES as
+ *    this is the longest frame type.
+ *
+ * Revision 1.3  1998/02/12  17:54:01  bcassidy
+ * 1. Add definitions to support idle frame validation and encryption.
+ *
+ * Revision 1.2  1998/02/07  20:31:42  bcassidy
+ * 1. Fix CTLF_BYTES definitions.
+ * 2. Mods to remove Borland compiler warnings.
+ *
+ * Revision 1.1  1998/01/31  22:48:18  bcassidy
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _RLP_PROT_H
+#define _RLP_PROT_H
+
+
+/* Maximum number of user data bytes in a frame */
+#define MAX_DATA_LEN 68
+
+/* External Sequence Numbers - Useful Defines */
+#define EXT_V_S_MASK      0xFFFFFF00L
+#define RLP2_EXT_V_S_MASK 0xFFFFF000L
+
+#define EXT_V_S_POS       8
+#define RLP2_EXT_V_S_POS  12
+
+#define EXT_V_S_MAX       (1L<<22)
+#define RLP2_EXT_V_S_MAX  (1L<<18)
+
+#define EXT_V_R_MASK      0xFFFFFF00L
+#define RLP2_EXT_V_R_MASK 0xFFFFF000L
+
+/* Erasure Counts */
+#define MAX_ERASURE_COUNT      127
+#define RLP2_MAX_ERASURE_COUNT 255
+
+/* Frame lengths (in bits) */
+#define FULL_PRIMARY_1_BITS      171
+#define FULL_PRIMARY_2_BITS      266
+#define FULL_SECONDARY_1_BITS    168
+#define FULL_SECONDARY_2_BITS    262
+#define FULL_PRIMARY_1_X2_BITS   346
+#define FULL_PRIMARY_2_X2_BITS   538
+#define FULL_SECONDARY_1_X2_BITS 346
+#define FULL_SECONDARY_2_X2_BITS 538
+
+
+/* Data field maximum lengths for Mux Option 1 */
+#define DBYTES_1_2_PRIMARY_1       8
+#define DBYTES_FULL_PRIMARY_1     19
+
+#define DBYTES_1_2_SECONDARY_1     9
+#define DBYTES_3_4_SECONDARY_1    14
+#define DBYTES_7_8_SECONDARY_1    17
+#define DBYTES_FULL_SECONDARY_1   19
+
+/* Data field maximum lengths for Mux Option 2 */
+#define DBYTES_1_4_PRIMARY_2       4
+#define DBYTES_1_2_PRIMARY_2      13
+#define DBYTES_FULL_PRIMARY_2     31
+
+#define DBYTES_1_8_SECONDARY_2     2
+#define DBYTES_3_16_SECONDARY_2    4
+#define DBYTES_1_4_SECONDARY_2     6
+#define DBYTES_3_8_SECONDARY_2    10
+#define DBYTES_7_16_SECONDARY_2   13
+#define DBYTES_1_2_SECONDARY_2    15
+#define DBYTES_3_4_SECONDARY_2    24    
+#define DBYTES_7_8_SECONDARY_2    28
+#define DBYTES_FULL_SECONDARY_2   30
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+#define RLP_MAX_FRAME_BYTES ((FULL_PRIMARY_2_X2_BITS + 7) / 8)
+#else
+#define RLP_MAX_FRAME_BYTES ((FULL_PRIMARY_2_BITS + 7) / 8)
+#endif
+
+
+/* Frame field byte indexes */
+#define FI_SEQ                     0
+#define FI_CTL                     1
+#define FI_LEN                     1
+#define FI_FULL_RATE_FORMAT_B_DATA 1
+#define FI_FULL_RATE_FORMAT_C_DATA 1
+#define FI_FCS8                    1
+#define FI_DATA                    2
+#define FI_FIRST                   2
+#define FI_20_BIT_TYPE             2
+#define FI_LAST                    3
+#define FI_EM                      4
+#define FI_EXT_SEQ_M               4
+#define FI_PRIMARY_1_TYPE          (((FULL_PRIMARY_1_BITS + 7)/8) - 1)
+#define FI_PRIMARY_2_TYPE          (((FULL_PRIMARY_2_BITS + 7)/8) - 1)
+#define FI_FCS16_NO_ENC            4
+#define FI_FCS16_ENC               7
+
+/* RLP2 Specific Frame Field Byte Indexes */
+#define FI_RLP2_EM                 2
+
+#define FI_SECONDARY_1_TYPE        (((FULL_SECONDARY_1_BITS + 7)/8) - 1)
+#define FI_SECONDARY_2_TYPE        (((FULL_SECONDARY_2_BITS + 7)/8) - 1)
+
+/* RLP3 Specific Frame Field Byte Indexes */
+#define FI_RLP3_FORMAT_TYPE        0
+#define FI_RLP3_IDLE_SEQ_HI        1
+#define FI_RLP3_FILL_SEQ_HI        1
+
+#define FI_RLP3_INIT_VAR           1
+#define FI_RLP3_SEGMENT_SQI        1
+#define FI_RLP3_SEGMENT_LST        1
+#define FI_RLP3_SEGMENT_RTX        1
+
+
+/* Full Rate Primary frame field definitions */
+#define FULL_RATE_1_TYPE_MASK   (0x07 << 5)
+#define FULL_RATE_1_TYPE_A      (0x01 << 5)
+#define FULL_RATE_1_TYPE_B      (0x02 << 5)
+
+/* Full Rate Secondary (RLP2) frame field definitions */
+#define RLP2_SEC_A2_TYPE_MASK   (0x03 << 2)
+#define RLP2_SEC_A2_TYPE        (0x01 << 2)
+#define RLP2_SEC_B2_TYPE        (0x02 << 2)
+
+/* Full Rate Secondary (RLP2) frame field definitions */
+#define RLP2_SEC_A1_TYPE_MASK   0x07
+#define RLP2_SEC_A1_TYPE        0x01
+#define RLP2_SEC_B1_TYPE        0x02
+
+#define FORMAT_B_1_DATA_BYTES   20
+
+#define FULL_RATE_2_TYPE_MASK   (0x03 << 6)
+#define FULL_RATE_2_TYPE_A      (0x01 << 6)
+#define FULL_RATE_2_TYPE_B      (0x02 << 6)
+#define FORMAT_B_2_DATA_BYTES   32
+
+/* RLP2 Specific Full Rate Frame Definitions */
+#define RLP2_PRIM_FULL_RATE_1_TYPE_MASK      (0x06 << 5)
+#define RLP2_PRIM_FULL_RATE_1_TYPE_B         (0x02 << 5)
+#define RLP2_PRIM_FULL_RATE_1_REXMIT_MASK    (0x01 << 5)
+
+#define RLP2_PRIM_FULL_RATE_2_TYPE_MASK      (0x02 << 6)
+#define RLP2_PRIM_FULL_RATE_2_TYPE_B         (0x02 << 6)
+#define RLP2_PRIM_FULL_RATE_2_REXMIT_MASK    (0x01 << 6)
+
+#define RLP2_SEC_FULL_RATE_1_TYPE_MASK       (0xFE)
+#define RLP2_SEC_FULL_RATE_1_TYPE_B          (0x02)
+#define RLP2_SEC_FULL_RATE_1_REXMIT_MASK     (0x01)
+
+#define RLP2_SEC_FULL_RATE_2_TYPE_MASK       (0x3E << 2)
+#define RLP2_SEC_FULL_RATE_2_TYPE_B          (0x02 << 2)
+#define RLP2_SEC_FULL_RATE_2_REXMIT_MASK     (0x01 << 2)
+
+#define RLP2_SEC_FORMAT_B_1_DATA_BYTES       19
+#define RLP2_SEC_FORMAT_B_2_DATA_BYTES       31
+
+/* RLP3 format C and D frame field definitions */
+#define RLP3_FORMAT_C_TYPE_MASK              (0x80 >> 6)
+#define RLP3_FORMAT_C_REXMIT_MASK            (0x40 >> 6)
+
+#define RLP3_FORMAT_C_1x_1_DATA_BYTES        20
+#define RLP3_FORMAT_C_1x_2_DATA_BYTES        32
+#define RLP3_FORMAT_C_2x_1_DATA_BYTES        42
+#define RLP3_FORMAT_C_2x_2_DATA_BYTES        66
+
+/* CTL field definitions */
+#define CTL_TYPE_MASK           (0x03 << 6)
+#define CTL_CONTROL             (0x03 << 6)
+#define CTL_SEGMENT             (0x02 << 6)
+
+/* RLP3 CTL field definitions */
+#define CTL_RLP3_TYPE_MASK        0xF0
+#define CTL_RLP3_CONTROL_SYNC     0xD8
+#define CTL_RLP3_CONTROL_SYNC_ACK 0xF8
+#define CTL_RLP3_CONTROL_ACK      0xE8
+#define CTL_RLP3_CONTROL_NAK      0xC0
+#define CTL_RLP3_SEGMENT          0x80
+#define CTL_RLP3_IDLE             0xA0
+#define CTL_RLP3_FILL             0x90
+
+/* Control frame definitions */
+#define CTLF_TYPE_MASK          (0x03 << 4)
+#define CTLF_NAK                (0x00 << 4)
+#define CTLF_SYNC               (0x01 << 4)
+#define CTLF_ACK                (0x02 << 4)
+#define CTLF_SYNC_ACK           (0x03 << 4)
+
+#define CTLF_ENC_MASK           0x03
+#define CTLF_ENC_OFF            0x00
+#define CTLF_ENC_ENHANCED       0x01
+#define CTLF_ENC_BOTH           0x02
+#define CTLF_ENC_BASIC          0x03
+
+#define CTLF_EM_MASK            (0x03 << 6)
+#define CTLF_EM_INACTIVE        (0x00 << 6)
+#define CTLF_EM_ACTIVE          (0x01 << 6)
+
+#define CTLF_EXT_SEQ_M_BYTES    3
+#define CTLF_EXT_SEQ_M_MASK     0x3FFFFFL
+
+#define CTLF_BYTES_NO_ENC       6
+#define CTLF_BYTES_ENC          9
+
+/* RLP2 Specific Control frame definitions */
+#define CTLF_RLP2_TYPE_MASK     (0x0F << 2)
+#define CTLF_RLP2_NAK           (0x00 << 2)
+#define CTLF_RLP2_SYNC          (0x06 << 2)
+#define CTLF_RLP2_ACK           (0x0A << 2)
+#define CTLF_RLP2_SYNC_ACK      (0x0E << 2)
+#define CTLF_RLP2_FILTER        (0xF7)
+
+#define CTLF_RLP2_BYTES_NO_ENC  4
+#define CTLF_RLP2_BYTES_ENC     7
+
+#define CTLF_RLP2_NAK00_TYPE    0x00
+#define CTLF_RLP2_NAK01_TYPE    0x01
+#define CTLF_RLP2_LSEQHI_MASK   0x0F00
+#define CTLF_RLP2_NAK00_BYTES   8
+
+/* RLP3 Specific Control frame definitions */
+#define CTLF_RLP3_NAK_TYPE_00   0x00
+#define CTLF_RLP3_NAK_TYPE_01   0x01
+#define CTLF_RLP3_NAK_TYPE_10   0x02
+#define CTLF_RLP3_NAK_TYPE_11   0x03
+#define CTLF_RLP3_NUM_NAK_TYPES 4
+
+#define CTLF_RLP3_INIT_VAR      0x02
+
+#define CTLF_RLP3_SEQHI_MASK    0x0F00
+
+#define CTLF_RLP3_BYTES_NO_ENC  4
+#define CTLF_RLP3_BYTES_ENC     7
+
+
+/* RLP2 Field Bit Indexes */
+#define BI_RLP2_EXT_SEQ_M       18
+#define CTLF_EXT_SEQ_M_BITS     18
+
+#define BI_RLP2_NAK_TYPE        14
+#define BI_RLP2_NAK_LSEQHI      16
+#define BI_RLP2_NAK00_FIRST     20
+#define BI_RLP2_NAK00_LAST      32
+#define BI_RLP2_NAK00_FCS       44
+#define BI_RLP2_NAK01_MAP_COUNT 20
+#define BI_RLP2_NAK01_MAP_SEQ0  22
+#define BI_RLP2_NAK01_MAP0      34
+
+/* RLP3 Field Bit Indexes */
+#define BI_RLP3_EXT_SEQ_M       15
+#define BI_RLP3_NAK_TYPE        14
+#define BI_RLP3_SEGMENT_LEN     15
+
+#define BI_RLP3_FMT_TYPE        0
+
+
+/* Segment frame defintions */
+#define SEGF_TYPE_MASK          (0x03 << 4)
+#define SEGF_FIRST              (0x00 << 4)
+#define SEGF_SECOND             (0x01 << 4)
+#define SEGF_LAST               (0x02 << 4)
+#define SEGF_ISF                (0x03 << 4)
+
+#define SEGF_LEN_MASK           		0x0F
+#define SEGF_RLP3_FFA_MAX_DATA_BYTES  	16
+#define SEGF_MAX_DATA_BYTES       		15
+#define SEGF_OVERHEAD_BYTES        		2
+
+/* RLP3 segment frame definition */
+#define SEGF_RLP3_TYPE_MASK     0x80
+#define SEGF_RLP3_SQI           (0x01 << 3)
+#define SEGF_RLP3_LST           (0x01 << 2)
+#define SEGF_RLP3_RTX           (0x01 << 1)
+#define SEGF_RLP3_OVHD_BYTES       4  
+#define SEGF_RLP3_OVHD_SEQHI_BYTES 5  
+
+
+/* Unsegmented data frame definitions */
+#define DATAF_LEN_MASK          0x7F
+#define DATAF_RLP2_LEN_MASK     0x3F
+#define DATAF_RLP2_REXMIT_MASK  0x40
+#define BI_RLP2_REXMIT          9
+
+/* 20-bit frame definitions */
+#define F20BIT_TYPE_MASK        (0x0F << 4)
+#define F20BIT_IDLE             (0x00 << 4)
+#define F20BIT_ISF              (0x0F << 4)
+
+#define IDLEF_BYTES             2
+#define IDLEF_RLP3_BYTES        2
+#define FILLF_RLP3_BYTES        2
+
+
+#define IDLE_FRAME_RETRAN_COUNT 1 
+
+#define CONSECUTIVE_OOR_COUNT   3
+
+#define RLP2_MAX_NAK_RECORDS    4
+#define RLP3_MAX_NAK_RECORDS    4
+
+#define RLP_ENCRYPT_HOOK_PREFIX (0x00 << 30)
+#define RLP_DECRYPT_HOOK_PREFIX (0x01 << 30)
+
+/* RLP3 NAK Round Count */
+#define RLP3_MAX_MS_NAK_ROUNDS_FWD   7
+#define RLP3_MAX_MS_NAK_ROUNDS_REV   7	
+
+
+#endif /* _RLP_PROT_H */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlpwapi.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlpwapi.h
new file mode 100644
index 0000000..935e513
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlpwapi.h
@@ -0,0 +1,494 @@
+/*****************************************************************************
+*  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:       RLP_API.h
+ *
+ * Creation Date:   Jan. 6, 2004
+ *
+ * Description    : It contains RLP API and the related data structure
+ *
+ *******************************************************************************
+ ******************************************************************************/
+
+#ifndef __RLP_API_H__
+#define __RLP_API_H__
+
+/*******************************************************************************
+    Include Header Files
+    (No absolute paths - paths handled by make file)
+*******************************************************************************/
+#include "sysdefs.h"
+#include "cpbuf.h"
+#include "rlp_msgid.h"
+
+#include "module_msg_range.h"
+/*******************************************************************************
+    Macros
+*******************************************************************************/
+#define RLP_MAX_SPY_LEN             64   /* Max size for Monspy output  */
+#define RLP_IOP_MAX_REV_SIZE        120  /* Max size per IOP->RLP data xfer at REV link */
+                                        
+#define RLP_MAILBOX_CMD             EXE_MAILBOX_1_ID
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*******************************************************************************
+    User-Defined Types (Typedefs)
+*******************************************************************************/
+
+typedef enum
+{
+  RLP_PRIMARY_CHANNEL = 0,     /* Do not change  */
+  RLP_SECONDARY_CHANNEL,
+  NUM_TRAFFIC_CHAN
+} RlpChannelSelE;
+
+typedef enum
+{
+  RLP_NON_TRANSPARENT = 0,    /* Do not change */
+  RLP_TRANSPARENT
+} RlpModeE;
+
+typedef enum
+{
+  RLP_RATE_SET1 = 0,           
+  RLP_RATE_SET2,
+  NUM_RATE_SET
+} RlpRateSetE;
+
+typedef enum
+{
+  RLP_TYPE_1 = 0,   /* Do not change the starting value  */           
+  RLP_TYPE_2,
+  RLP_TYPE_3,
+  NUM_RLP_TYPE
+} RlpTypeE;
+
+typedef enum
+{
+  RLP_FOR_HLP,
+  RLP_FOR_IOP,
+  RLP_AS_IS
+} RlpClientT;
+
+/*******************************************************************************
+     Message Definitions 
+*******************************************************************************/
+/* RLP_PSW_INIT_CFG_MSG */
+typedef  struct 
+{
+  kal_uint8            srId;             /* SR_ID                          */
+  RlpChannelSelE   channel;          /* Primary or Secondary Channel.  */
+  RlpRateSetE      fwdRateSet;       /* Rate set for forward link.     */
+  RlpRateSetE      revRateSet;       /* Rate set for reverse link.     */
+  RlpRateSetE      fwdSchRateSet;    /* Rate set for SCH forward link. */
+  RlpRateSetE      revSchRateSet;    /* Rate set for SCH reverse link. */
+  kal_uint16           fwdSchMuxOpt;     /* Mux option for fwd SCH         */
+  kal_uint16           revSchMuxOpt;     /* Mux option for rev SCH         */
+  RlpTypeE         rlpType;          /* RLP_TYPE_1, 2 and 3            */
+  kal_bool             paramValid;       /* KAL_TRUE: valid in next two params */
+  kal_uint32           rand;             /* To generate LTable.            */
+  kal_uint8            SSDB[8];          /* To generate Data Key.          */
+} RlpInitCfgMsgT;
+
+typedef struct
+{
+   kal_uint8     RateCtrlParam;          /* Rate control parameter.        */
+} RlpRateControlMsgT;
+
+/* RLP_PSW_BLOB_CFG_MSG */
+#define RLP3_MAX_ROUNDS_FWD  7
+#define RLP3_MAX_ROUNDS_REV  7
+
+typedef  struct 
+{ 
+  kal_bool    revSchSupported;   /* Whether RSCH is supported by BS or not */
+  kal_uint16  fwdSchMuxOpt;      /* Mux option for fwd SCH                 */
+  kal_uint16  revSchMuxOpt;      /* Mux option for rev SCH                 */
+  kal_uint16  fwdPdchMuxOpt;     /* Mux option for fwd PDCH                */
+  
+  kal_uint8   rlpBlobType;
+  kal_uint8   rlpVersion;
+
+  kal_uint8   rtt;
+  kal_uint8   ddw;
+  kal_uint8   rexmit_timer;
+  kal_bool    initVar;
+
+  kal_uint32  bsExtSeqM;
+  kal_uint32  msExtSeqM;
+  
+  kal_uint8   maxMsNakRoundsFwd;
+  kal_uint8   maxMsNakRoundsRev;
+  kal_uint8   nakRoundsFwd;
+  kal_uint8   nakRoundsRev;
+
+  kal_uint8   nakPerRoundFwd[RLP3_MAX_ROUNDS_FWD];
+  kal_uint8   nakPerRoundRev[RLP3_MAX_ROUNDS_REV];
+} RlpBlobMsgT; 
+
+typedef struct
+{
+  kal_uint8            SrId;            /* SR_ID                          */
+  RlpChannelSelE   ChannelSel;      /* Primary or Secondary Channel.  */
+  RlpModeE         ModeType;        /* Non/transparent mode.          */
+  RlpClientT       Client;
+  kal_uint16           InActTimeOut;    /* 0 = disable, non_zero = number
+                                       of 20 msec frames.             */
+  ExeRspMsgT       fwdDataDest;     /* Destination for forward data.  */
+  kal_bool             reOpen;          /* indicate it's a reopen triggered by RLP open failed. */
+} RlpOpenMsgT;
+
+
+/* RLP_AIW_CLOSE_CFG_MSG */
+/* RLP_HLW_CLOSE_CFG_MSG */
+typedef struct 
+{
+  kal_uint8            SrId;            /* SR_ID                          */
+  RlpChannelSelE   ChannelSel;      /* Primary or Secondary Channel.  */
+  kal_bool             FlushPending;    /* KAL_TRUE, to flush any pending RLP */
+                                    /* data frame.                    */
+                                    /* KAL_FALSE, RLP to transmit any     */
+                                    /* pending data before close.     */               
+} RlpCloseMsgT;
+
+
+/* RLP_AIW_INACT_TIMEOUT_CFG_MSG */
+/* RLP_HLW_INACT_TIMEOUT_CFG_MSG */
+typedef struct 
+{
+  kal_uint8            srId;            
+  RlpChannelSelE   channel;         /* Primary or Secondary Channel.  */
+  kal_uint16           timeOutPeriod;   /* unit of second.                */ 
+} RlpInActTimeOutMsgT; 
+
+typedef enum
+{                              
+  SYS_RLP_RATE_BLANK =  0,          /* blank rate                     */
+  SYS_RLP_RATE_1_16,                /* 1/16  rate                     */
+  SYS_RLP_RATE_1_8,                 /* 1/8   rate                     */
+  SYS_RLP_RATE_3_16,                /* 3/16  rate                     */
+  SYS_RLP_RATE_1_4,                 /* 1/4 rate                       */
+  SYS_RLP_RATE_3_8,                 /* rate 3/8                       */
+  SYS_RLP_RATE_7_16,                /* rate 7/16                      */
+  SYS_RLP_RATE_1_2,                 /* rate 1/2                       */
+  SYS_RLP_RATE_3_4,                 /* rate 3/4                       */
+  SYS_RLP_RATE_7_8,                 /* rate 7/8                       */
+  SYS_RLP_RATE_1,                   /* full rate                      */
+  SYS_RLP_RATE_1x,                  /* 1x rate for SCH                */
+  SYS_RLP_RATE_2x,                  /* 2x rate for SCH                */
+  SYS_RLP_RATE_TOTAL,               /* number of rates                */
+  SYS_RLP_RATE_NON_CRITICAL,        /* NON_CRITICAL                   */
+  SYS_RLP_RATE_BAD = 255            /* erasure frame                  */
+} SysRlpFrameRateE;
+
+typedef enum
+{                              
+  B_NEW            = 0x40,
+  B_REXMIT         = 0x60,
+  Blank            = 0x10,
+  A_UnSeg          = 0x00,
+  A_Seg            = 0x80,
+  Fill_Frame       = 0x90,
+  Idle_Frame       = 0xa0,
+  SYNC_Frame       = 0xd0,
+  SYNC_ACK_Frame   = 0xf0,
+  ACK_Frame        = 0xe0,
+  NAK_Frame        = 0xc0
+} SysRlpFchFrameTypeE;
+typedef struct
+{
+   kal_bool RateAllowed[SYS_RLP_RATE_TOTAL]; /* Table entries to be read  */
+                                         /* in the order of entries   */
+                                         /* "SysRlpFrameRateE". KAL_TRUE  */
+                                         /* if rate is allowed;       */
+                                         /* KAL_FALSE, otherwise.         */           
+} RlpFrameRateTabT;
+
+/*
+ * RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG
+ * This message is sent from LMD to indicate a new data frame received
+ * on the forward FCH or DCCH
+ */
+typedef struct
+{
+  kal_uint8             priSrId;        /* SR_ID for the primary channel     */    
+  SysRlpFrameRateE  priRate;        /* frame rate received for primary   */ 
+  CpBufferT        *priDataPtr;     /* data received for primary, null   */
+                                    /* if PrimaryRate is blank or bad    */
+  kal_uint8             secSrId;        /* SR_ID for the secondary channel   */
+  SysRlpFrameRateE  secRate;        /* frame rate received for secondary */
+  CpBufferT        *secDataPtr;     /* data received for secondary, null */
+                                    /* if SecondaryRate is blank or bad  */
+} RlpFwdFundicatedDataIndMsgT;
+
+typedef enum
+{
+  FORMAT_D = 0,
+  FORMAT_AB,
+  FORMAT_C_NEW,
+  FORMAT_C_REXMIT,
+  FORMAT_A,              
+  FORMAT_B
+} RlpFrmFormatE;
+
+typedef struct
+{
+  kal_uint8          srId;
+  RlpFrmFormatE  frameFormat;  
+  kal_uint8          offset;
+  kal_uint8          reserved;          /* Word alignment */
+  kal_uint16         frameLen;
+  CpBufferT     *dataCpPtr;
+} RlpFrameInfoT;
+
+/* RLP_LMD_FWD_SCH_DATA_IND_MSG */
+#define NUM_FSCH_FRAMES    16
+typedef struct
+{
+  kal_uint8          numRlpFrames;      /* The number of RLP frames  */
+  RlpFrameInfoT  rlpFrame[NUM_FSCH_FRAMES];    
+}RlpFwdSchDataIndMsgT;
+
+/* RLP_LMD_FWD_PDCH_DATA_IND_MSG */
+#define NUM_FPDCH_FRAMES      20  
+typedef struct
+{
+   kal_uint16        numRlpFrames; 
+   RlpFrameInfoT rlpFrame[NUM_FPDCH_FRAMES];
+}RlpFwdPdchDataIndMsgT;
+
+/* RLP_LMD_REV_DTCH_DATA_AVAIL_IND_MSG */
+typedef struct 
+{ 
+  ExeRspMsgT          rspMsg;       /* required response message            */ 
+  kal_uint8               priSrId;      /* SR_ID for the primary channel        */ 
+  SysRlpFrameRateE    priRate;      /* The highest frame rate for primary   */ 
+
+  kal_uint8               secSrId;      /* SR_ID for the secondary channel      */ 
+  SysRlpFrameRateE    secRate;      /* The highest frame rate for secondary */
+
+  ExeRspMsgT          schRspMsg;    /* The Rev Sch's required Rsp msg       */
+  kal_uint8               numSchPdu;    /* Number of PDU's allowed              */ 
+  SysRlpFrameRateE    schRate;      /* The rate allowed for each MuxPDU     */
+  SysMultiplexOptionT schMuxOpt;    /* Current R-SCH assignment Mux Option  */
+}RlpRevDataAvailIndMsgT; 
+
+/*  RLP_RLP_MORE_FWD_DATA_AVAIL_IND_MSG */
+typedef struct
+{
+  kal_uint8               srId;      
+}RlpFwdMoreDataAvailIndMsgT;
+
+/* RLP_ETS_RESET_STAT_CFG_MSG  */
+/* Message body is not needed */
+
+/* RLP_ETS_PEEK_RXQ_STAT_CFG_MSG  */
+/* RLP_ETS_PEEK_FRAME_STAT_CFG_MSG  */
+typedef struct 
+{
+  ExeRspMsgT          rspInfo;    
+} RlpPeekStatMsgT;
+
+/* RLP_ETS_NUM_FRAME_PER_UPPER_LAYER_IND_CFG_MSG  */
+typedef struct 
+{
+  kal_uint16              numRlpFrames;    
+} RlpNumFramesPerIndT;
+
+enum EcdmaSysRlpFramePhyChan_enum
+{
+  CDMA_SYS_FCH,
+  CDMA_SYS_DCCH,
+  CDMA_SYS_SCH0,
+  CDMA_SYS_SCH1
+};
+
+enum EcdmaSysRlpFrameMuxPdu_enum
+{
+  MUX_PDU1 = 1,
+  MUX_PDU2,
+  MUX_PDU3
+}; 
+
+enum EcdmaSysRlpFramePhyChanRate_enum
+{
+  CDMA_SYS_PHY_CHAN_RATE_9600,
+  CDMA_SYS_PHY_CHAN_RATE_14400,
+  CDMA_SYS_PHY_CHAN_RATE_19200,
+  CDMA_SYS_PHY_CHAN_RATE_28800,
+  CDMA_SYS_PHY_CHAN_RATE_38400,
+  CDMA_SYS_PHY_CHAN_RATE_57600,
+  CDMA_SYS_PHY_CHAN_RATE_76800,
+  CDMA_SYS_PHY_CHAN_RATE_115200,
+  CDMA_SYS_PHY_CHAN_RATE_153600,
+  CDMA_SYS_PHY_CHAN_RATE_1200,
+  CDMA_SYS_PHY_CHAN_RATE_1800,
+  CDMA_SYS_PHY_CHAN_RATE_2400,
+  CDMA_SYS_PHY_CHAN_RATE_3600,
+  CDMA_SYS_PHY_CHAN_RATE_4800,
+  CDMA_SYS_PHY_CHAN_RATE_7200,
+  CDMA_SYS_PHY_CHAN_RATE_BLANK
+ };
+
+#define RLP_SPY_MAX_FRAME_PAYLOAD_LEN   44     /* bytes */
+
+typedef struct
+{
+  enum EcdmaSysRlpFramePhyChan_enum     CdmaSysRlpFramePhyChan;
+  enum EcdmaSysRlpFrameMuxPdu_enum      CdmaSysRlpFrameMuxPdu;
+  enum EcdmaSysRlpFramePhyChanRate_enum CdmaSysRlpFramePhyChanRate;
+  kal_uint8                                 CdmaSysRlpFrameTimeDelta;
+  kal_int16                                 CdmaSysRlpFrameLen;
+  kal_uint8                                 CdmaSysRlpFramePayload[RLP_SPY_MAX_FRAME_PAYLOAD_LEN];
+
+} EcdmaSysRlpFrameData;
+
+typedef struct
+{
+  kal_int32                CdmaSysRlpServiceId;
+  EcdmaSysRlpFrameData CdmaSysRlpFrames;
+ 
+} EcdmaSysRlpData;
+
+typedef struct
+{
+  kal_uint32               timestamp;
+  EcdmaSysRlpData      FrameData;
+} RlpFrameEvent;
+
+typedef struct
+{
+   kal_bool                bStatusReport;
+} RlpActivityStatusQueryMsgT;
+
+typedef enum EcdmaSysRlpFramePhyChanRate_enum RlpRxFrameRateT;
+typedef enum EcdmaSysRlpFrameMuxPdu_enum      RlpFrameMuxPduTypeT;
+typedef enum EcdmaSysRlpFramePhyChan_enum     RlpFramePhyChanT;
+
+
+typedef struct 
+{
+  ExeRspMsgT RspMsg;
+} RlpQueryStatMsgT;
+
+typedef enum
+{
+  RLP_SCH_RATE_1X = 0,
+  RLP_SCH_RATE_2X = 1,
+  RLP_SCH_RATE_4X = 2,
+  RLP_SCH_RATE_8X = 3,
+  RLP_SCH_RATE_16X = 4  
+}RlpSchRateT;
+
+typedef enum
+{
+  RLP_SCH_SINGLE_SIZE = 0,
+  RLP_SCH_DOUBLE_SIZE = 1
+}RlpSchDataBlockSizeT;
+
+typedef struct
+{
+   kal_uint32 CdmaSysServiceId;                        /* Service ID */
+   kal_uint32 CdmaSysResetTime;                       /* The system time when RLP stat resets */
+   kal_uint32 CdmaSysNaksReceived;                     /* Received NAK count */
+   kal_int32 CdmaSysReXmitsNotFound;                  /* Invalid NAK count for type 01, 10, 11 plus accumulated
+                                                     distance between invalid 00 NAK seq and v_s */
+   kal_uint32 CdmaSysLargestContigErasure;             /* Maximum count of contiguous erasures received */
+   kal_uint32 CdmaSysResets;                           /* Reset RLP count */
+   kal_uint32 CdmaSysAborts;                           /* Abort frame count */
+   kal_uint32 CdmaSysLastRtt;                          /* Last RTT in counts of 20 msec slot */
+   kal_uint32 CdmaSysRlpBlobUsed;                      /* 3 when BLOB includes RTT or 1 when not
+                                                     (not used currently) */
+   kal_uint32 CdmaSysRxRexmitFrCnt;                    /* Rx Rexmit data frame count */
+   kal_uint32 CdmaSysRxIdleFrCnt;                      /* Rx Idle frame count */
+   kal_uint32 CdmaSysRxFillFrCnt;                      /* Rx Fill frame count */
+   kal_uint32 CdmaSysRxBlankFrCnt;                     /* Rx Blank frame count */
+   kal_uint32 CdmaSysRxNullFrCnt;                      /* Rx Null frame (not used currently) */
+   kal_uint32 CdmaSysRxNewDataFrCnt;                   /* Rx new data frame count */
+   kal_uint32 CdmaSysRx20msFrCnt;                      /* Rx data frame count */
+   kal_uint32 CdmaSysRxTotalBytes;                     /* Total bytes received for passing to upper layer */
+   kal_uint32 CdmaSysRxRlpErasures;                    /* Rx RLP erasures count */
+   kal_uint32 CdmaSysRxMuxErasures;                    /* Rx MUX erasures count */
+   kal_uint32 CdmaSysTxRexmitFrCnt;                    /* Tx Rexmit data frame count */
+   kal_uint32 CdmaSysTxIdleFrCnt;                      /* Tx Idle frame count */
+   kal_uint32 CdmaSysTxNewDataFrCnt;                   /* Tx new data frame count */
+   kal_uint32 CdmaSysTx20msFrCnt;                      /* Tx data frame count */
+   kal_uint32 CdmaSysTxTotalBytes;                     /* Total bytes requested from upper layer sent */
+   kal_uint32 CdmaSysTxNaksCnt;                        /* Count for the last Tx round set by BLOB */
+   kal_uint32 CdmaSysTxNaks[7];                        /* Counts for 0 - 7 NAK Tx remaining for a particular
+                                                     round when Rx the missing frame */ 
+   kal_bool  IsForSchAssigned;                        /*  If forward supplement channel is assigned */
+   RlpSchRateT ForSchRate;                        /* Current forward Supplement channel rate */
+   RlpSchDataBlockSizeT ForSchDataBlockSize;      /* Current forward SCH data block size */
+   kal_uint8 NumForSchUsed;                           /* Number of forward SCH are being used */
+   kal_bool IsRevSchAssigned;                         /*  If reverse supplement channel is assigned */
+   RlpSchDataBlockSizeT RevSchDataBlockSize;      /* Current reverse SCH data block size */
+   RlpSchRateT RevSchRate;                        /* Current reverse Supplement channel rate */ 
+   kal_uint8 NumRevSchUsed;                           /* Number of reverse SCH are being used */
+} RlpQueryStatIndMsgT;
+/*****************************************************************************
+* $Log: rlpwapi.h $
+* Revision 1.9  2005/05/04 12:46:51  dstecker
+* Renamed RLP_ETS_NUM_FRAME_PER_IOP_IND_CFG_MSG to RLP_ETS_NUM_FRAME_PER_UPPER_LAYER_IND_CFG_MSG
+* Revision 1.8  2005/01/19 14:40:26  blee
+* Added ETS function that peeks RLP RxQ variables
+* Revision 1.7  2004/12/10 14:01:37  blee
+* Changed RLP blob data structure
+* Revision 1.6  2004/10/22 15:10:43  blee
+* Adde frame format field for FCH to display into ETS
+* Revision 1.5  2004/08/06 16:41:32  blee
+* Added ETS message that comes from ETS through IOP.
+*
+* Created by Brenndon
+*****************************************************************************/
+
+#endif /* __RLP_API_H__ */
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/xl2_em.h b/mcu/interface/protocol/l2_c2k/1xrtt/xl2_em.h
new file mode 100644
index 0000000..a66f6dc
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/xl2_em.h
@@ -0,0 +1,122 @@
+/*****************************************************************************
+*  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) 2015
+*
+*  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:     xl2_em.h
+ *
+ * Purpose:    xl2 engineer mode definitions and prototypes.
+ *
+ ****************************************************************************/
+
+#ifndef _XL2_EM_H_
+#define _XL2_EM_H_
+
+#ifdef __MODEM_EM_MODE__
+
+#include "em_struct.h"
+#include "em_msgid.h"
+#include "md_sap.h"
+//#include "lmdapi.h"
+//#include "srbp_access.h"
+#include "sysfrc.h"
+#include "em_public_struct_xl2.h"
+
+#ifndef MTK_PLT_ON_PC
+#define __XL2_EM_MODE__  1
+#endif
+
+typedef enum
+{
+  Fwd_Chnl = 0,
+  Rev_Chnl = 1
+}channel_enum;
+
+typedef enum
+{
+    Fill_frame = 0,
+    Nak_frame = 1,
+    Reset_frame = 2,
+    Rlp_Close = 3,
+    Data_frame = 4
+}frame_type_enum;
+
+typedef enum
+{
+  PHY_CHAN_RATE_9600,
+  PHY_CHAN_RATE_14400,
+  CHAN_RATE_19200,
+  CHAN_RATE_28800,
+  CHAN_RATE_38400,
+  CHAN_RATE_57600,
+  CHAN_RATE_76800,
+  CHAN_RATE_115200,
+  CHAN_RATE_153600,
+  CHAN_RATE_1200,
+  CHAN_RATE_1800,
+  CHAN_RATE_2400,
+  CHAN_RATE_3600,
+  CHAN_RATE_4800,
+  CHAN_RATE_7200,
+  CHAN_RATE_BLANK
+}RlpFramePhyChanRate_enum;
+
+
+void xl2EmUpdateReqMsg(local_para_struct *local_para_ptr);
+
+void xl2SendRevStateInfo(void);
+
+void xl2UpdateAchProbeInfo(kal_uint8 maxProbeSeq, kal_uint8 probeNum, 
+                                 kal_uint8 seqNum, kal_int16 powerCorrection);
+
+void xl2VoiceRateInfoInit(void);
+void xl2SendVoiceRateInfo(void);
+void xl2UpdateVoiceRateInfo(em_lmd_voice_rate_enum voice_rate , channel_enum channel);
+
+
+void xl2UpdateRlpInfo(frame_type_enum *FrmType ,em_rlp_general_info_struct *rlpGenrlInfo,
+                          em_rlp_fwd_nak_list_struct *FwdnakList);
+
+void xl2PsRateInfoInit(void);
+void xl2SendPsRateInfo(void);
+void xl2UpdatePsRateInfo(RlpFramePhyChanRate_enum RlpRate,
+                                kal_uint16 RlpFrameLength , channel_enum channel);
+
+void xl2UpdateSchAssignedRate(kal_uint8 AssignedRate, channel_enum channel);
+
+#endif/* __MODEM_EM_MODE__ */
+
+#endif/* _XL2_EM_H_ */
+
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
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/ParRlp.h b/mcu/interface/protocol/l2_c2k/evdo/ParRlp.h
new file mode 100644
index 0000000..dcdc463
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/ParRlp.h
@@ -0,0 +1,257 @@
+/*****************************************************************************
+*  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  _PAR_RLP_H_
+#define  _PAR_RLP_H_
+
+/*****************************************************************************
+*
+* FILE NAME   :   ParRlp.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the Reverse RLP protocol
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "par.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define RLP_RETXQ_PRIORITY     60
+#define RLP_TXQ_PRIORITY       70
+
+
+#define PAR_RLP_ABORT_TIMER_INTERVAL  500          /*500 ms for abort timer. */
+#define PAR_RLP_FLUSH_TIMER_INTERVAL  300
+
+
+
+/*----------------------------------------------------------------------------
+structure definitions
+----------------------------------------------------------------------------*/
+typedef enum
+{
+    RESV_CLOSE_ST,
+    RESV_OPEN_ST,
+    RESV_WFR_OPEN_ST,
+    RESV_WFR_CLOSE_ST,
+    RESV_MAX_ST
+}ParResrevationStateT;
+
+typedef enum
+{
+    RESV_OP_NULL,
+    RESV_OP_ONREQ,
+    RESV_OP_OFFREQ
+} ParReservationOperationTypeT;
+
+
+typedef   struct
+{
+#if defined (RCP_RI_HRT_DEV)
+    kal_uint32      TimerCb;
+#else
+    kal_timerid     TimerCb;
+#endif
+    kal_bool            Active;
+} ParRlpFlushTimerT;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+    kal_uint32 seq;
+    kal_uint8   RLPHdrLen;
+    kal_uint16 nAvailableBytes;
+} ParRlpNakCheckRecT;
+
+typedef struct
+{
+    kal_uint8 nAppType;
+    kal_uint8 nRLPFlow;
+} ParRlpMaxVsUpdateT;
+
+typedef struct
+{
+    kal_uint32 seq;
+    kal_uint32 range;
+    kal_bool bDeleteWhenSameSeq;
+} ParRlpTxQDeleteCheckT;
+#endif
+typedef struct
+{
+    kal_int32 EVDORevARevMFRLPStatsFlowId;
+    kal_uint32 EVDORevARevMFRLPStatsResetTime;
+    kal_int32 EVDORevARevMFRLPStatsRLPStatsNaksReceived;
+    kal_int32 EVDORevARevMFRLPStatsReXmitsNotFound;
+    kal_int64 EVDORevARevMFRLPStatsANNakBytesRequested;
+    kal_int64 EVDORevARevMFRLPStatsTxReXmitsBytes;
+    kal_int64 EVDORevARevMFRLPStatsTxNewDataBytes;
+    kal_int64 EVDORevARevMFRLPStatsTxTotalBytes;
+    kal_int32 EVDORevARevMFRLPStatsResetCount;
+    kal_int32 EVDORevARevMFRLPStatsATResetRequestCount;
+    kal_int32 EVDORevARevMFRLPStatsANResetAckCount;
+    kal_int32 EVDORevARevMFRLPStatsANResetRequestCount;
+} EVDORevARevMFRLPStatsMeasT;
+
+typedef struct
+{
+    EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} EVDORevARevMFRLPStatsEventT;
+
+typedef struct
+{
+    kal_uint32 SysTime;
+    EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} ParRlpStatPeekRspMsgT;
+
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+void ParRlpInit(void);
+void ParRlpCommit(AppSubTypeT  appType);
+void ParHlpRevDataMsgHandler(ParHlpDataTxMsgT *pMsg);
+void ParRlpAccessFlushTmExpireHandler(kal_uint32 TimerId);
+void ParRlpServiceFlushTmExpireHandler(kal_uint32 TimerId);
+void ParRlpResetTxIndicationAckProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+void ParRlpResetRxIndicationProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+void ParMfpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+void ParDpaRlpNakProc (DsaFwdMsgT *pMsgData, ParRlpInstanceT *pRlpInst);
+void ParRlpResetProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst);
+void ParRlpResetAckProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst);
+void ParRlpInitialize(ParRlpInstanceT* pInst);
+void ParRlpStateSet(ParRlpInstanceT *pRlpInst, ParRlpStateT rlpState);
+ParRlpStateT ParRlpStateGet(ParRlpInstanceT *pRlpInst);
+void ParReservationAcceptMsgProc(kal_uint8* pData);
+void ParReservationRejectMsgProc(kal_uint8* pData);
+void ParRevReservationOnMsgProc(kal_uint8* pData);
+void ParRevReservationOffMsgProc(kal_uint8* pData);
+void ParFwdReservationOnMsgProc(kal_uint8* pData);
+void ParFwdReservationOffMsgProc(kal_uint8* pData);
+void ParRlpReservTmExpireMsgProc(void);
+void ParPafRlpResetReqMsgHandler(ParPafRlpResetReqMsgT *pMsg);
+void ParHlpRevDataSig(void);
+void ParHlpRevData2Sig(void);
+kal_bool ParRlpInsertRec2RetxQ(RetxInfoT* pInfo, ParRlpInstanceT *pRlpInst);
+kal_bool Compare2Seq(kal_uint32 Seq1, kal_uint32 Seq2, kal_uint32 SeqRange);
+kal_bool ParRlpTxQManage(ParRlpInstanceT* pInst);
+kal_bool ParDpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_bool ParDpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_uint16 ParDpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 ParDpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 ParMfpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_bool ParMfpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_bool ParMfpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_uint16 ParMfpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint32 ParDpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParDpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParMfpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParMfpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+void ParRlpAccessFlushTimerCallBack(void);
+void ParRlpServiceFlushTimerCallBack(kal_uint32 TimerId);
+#if defined (MTK_PLT_ON_PC)
+void ParRlpStatsResetMsgProc(void);
+void ParRlpStatsPeekMsgProc(void *MsgDataP);
+#endif
+void ParRlpConnOpenMsgProc(void);
+void ParRlpConnCloseMsgProc(void);
+void ParGAUPSetRlpFlowInfo(ParRlpInstanceT* pInst, FlowIdentificationAttribT* pRlpInfo, kal_uint8 FlowNum );
+void ParRlpDsarTxStatusMsgProc(kal_uint8 nAppType);
+void ParRlpCleanUpQueue(void);
+#ifdef CBP7_EHRPD
+void ParEmpaAccessPktSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaAccessPktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaAccessPktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaAccessPktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum);
+kal_uint16 ParEmpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 ParEmpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_bool ParEmpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_bool ParEmpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_uint32 ParEmpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParEmpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+
+kal_uint16 ParRlpSendDataFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParRlpSendDataFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetOctetSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpPacketPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetOctetSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpPacketPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+
+void ParEmpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+kal_bool ParEmpaRlpPacketPacketFlushCheckHdl(void *pList,void *pRecNew, void *pRecOld);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/ParRlpList.h b/mcu/interface/protocol/l2_c2k/evdo/ParRlpList.h
new file mode 100644
index 0000000..b6face1
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/ParRlpList.h
@@ -0,0 +1,282 @@
+/*****************************************************************************
+*  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  _REV_RLP_LIST_H_
+#define  _REV_RLP_LIST_H_
+
+/*****************************************************************************
+*
+* FILE NAME   :   RlpRList.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the Reverse RLP buffer
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "cpbuf.h"
+#include "hlpdef.h"
+
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define MAX_PHYMISSED_RECORD_NUM     15
+#define MAX_REV_DATAITEM_NUM         450
+#define MAX_NAK_RECORD_NUM           300/* 50*6 Suppose 6 RLP flow will activated at most and each RLP flow 50 Nak Record */
+#define MAX_SUBFRAME_PACKET_NUM      10
+#define RLPTXQ_LOW_WATERMARK_PERCENT    (0.05)
+#define RLPTXQ_HI_WATERMARK_PERCENT    (0.10)
+#ifdef CBP7_EHRPD
+#define NUM_RLP_TXQ_REC      200
+#endif
+#define PAR_RLP_INC_TXQ(pInst, num)           do{ pInst->TxList.totalBytesInTxQ+=num; }while(0)
+#define PAR_RLP_DEC_TXQ(pInst, num)          do{ pInst->TxList.totalBytesInTxQ -=num;}while(0)
+#define PAR_RLP_INC_RTXQ(pInst, num)         do{ pInst->RetxList.totalBytesInRetxQ+=num;}while(0)
+#define PAR_RLP_DEC_RTXQ(pInst, num)        do{ pInst->RetxList.totalBytesInRetxQ-=num; }while(0)
+
+/*----------------------------------------------------------------------------
+structure definitions
+----------------------------------------------------------------------------*/
+
+typedef  struct revDataItem
+{
+    CpBufferT           *dataP;
+    kal_uint16          nPktLen;
+#ifdef CBP7_EHRPD
+    kal_uint16          nRLPPktInSent;
+#endif
+    kal_uint32          TimeStamp;
+    struct revDataItem  *pNext;
+    kal_uint16          IpId;
+    kal_uint16          tcpTag;
+    kal_uint32          tcpPort;
+    kal_uint32          srcIpAddr;
+    kal_uint32          dstIpAddr;
+} RevDataItemT;
+
+typedef  struct
+{
+    RevDataItemT   *Head;
+    RevDataItemT   *Tail;
+    kal_uint16          count; /*number of records*/
+    kal_uint16  hiWaterMark;            /* if FreeCount goes above this, flow ctrl will be off (if on previously) */
+    kal_uint16  lowWaterMark;           /* if FreeCount falls below this, app asserts flow ctrl */
+    kal_bool       flowControlOn;           /* whether flow control with higher layer on/off */
+
+} ParRlpTxQT;
+
+typedef  struct
+{
+    RevDataItemT   *startPtr; /*Head*/
+    kal_uint32         startSeq;
+    RevDataItemT   *readPtr;
+    kal_uint16         readOffset;
+    RevDataItemT   *storedReadPtr;
+    kal_uint16         storedReadOffset;
+    kal_uint32         storedseq;
+    RevDataItemT   *writePtr;
+    kal_uint32    totalBytesInTxQ;
+    kal_uint8    RevMacId;  /*Identifier of a RTCMAC packet*/
+} ParRlpTxListT;
+
+typedef  struct
+{
+    kal_uint32         seq;
+    kal_uint16         len;
+#ifdef CBP7_EHRPD
+    kal_bool            bNaked;
+#endif
+}RetxInfoT;
+
+typedef  struct RetxRec
+{
+    RetxInfoT       RetxInfo;
+    kal_uint32          TimeStamp;
+    struct RetxRec  *pNext;
+} RetxRecordT;
+
+typedef  struct
+{
+    RetxRecordT   *Head;
+    RetxRecordT   *Tail;
+    kal_uint16          count; /*number of records*/
+} ParRlpRetxQT;
+
+typedef  struct
+{
+    RetxRecordT *readPtr;
+    kal_uint16      readOffset;
+    RetxRecordT *storedReadPtr;
+    kal_uint16      storedReadOffset;
+    RetxRecordT *writePtr;
+    kal_uint32   totalBytesInRetxQ;
+    kal_uint8    RevMacId;/*Identifier of a RTCMAC packet*/
+} ParRlpRetxListT;
+
+typedef  struct
+{
+    kal_uint8       FlowId;
+    kal_uint8       revMacId;
+    RetxInfoT   RetxInfo;
+    kal_uint8       AppType;
+} PhyMissRetxItemT;
+
+typedef  struct PhyMissRec
+{
+    PhyMissRetxItemT RetxItem[MAX_SUBFRAME_PACKET_NUM];
+    struct PhyMissRec *pNext;
+} PhyMissBufT;
+
+typedef  struct
+{
+    PhyMissBufT   *startPtr;
+    PhyMissBufT   *writePtr;
+    PhyMissBufT   *endPtr;
+    kal_uint8         nIndex;
+} ParRlpPhyMissListT;
+
+
+#ifdef CBP7_EHRPD
+
+struct _PAR_LIST_NODE;
+struct _PAR_LIST_STR;
+
+typedef struct _PAR_LIST_NODE
+{
+    struct _PAR_LIST_NODE* next;
+    struct _PAR_LIST_NODE* prev;
+    void* data;
+}  PAR_LIST_NODE;
+
+typedef struct _PAR_LIST_STR
+{
+    PAR_LIST_NODE* outHead;
+    PAR_LIST_NODE* inTail;
+    PAR_LIST_NODE* pNode; /* used to scan the list */
+    struct _PAR_LIST_STR* free;
+    kal_uint16 numRecords;
+} PAR_LIST_STR;
+
+typedef struct
+{
+    CpBufferT *DataP;
+    kal_uint32  seq;
+    kal_uint16  Len;
+    kal_uint16 offset;
+    kal_bool FirstDataUnit;
+    kal_bool LastDataUnit;
+    kal_uint32   TimeStamp;
+    RevDataItemT *pDataItem;
+} ParRlpTxReseq;
+
+typedef struct
+{
+    PAR_LIST_NODE TxQNodeList[NUM_RLP_TXQ_REC];
+    PAR_LIST_STR TxQFreeNodes;
+    PAR_LIST_STR TxQIdleList;
+
+    ParRlpTxReseq    TxQPool[NUM_RLP_TXQ_REC];
+} ParRlpBufPoolT;
+
+typedef kal_bool  (*pPARMATCH_FUNC)(void* list, void* testRec, void* listRec);
+#define PAR_NULL_NODE (PAR_LIST_NODE*)(0)
+#define PAR_NULL_LIST (PAR_LIST_STR*)(0)
+
+/* define values for where to start when getting from queue */
+#define FROM_HEAD    KAL_TRUE
+#define FROM_TAIL    KAL_FALSE
+
+/* define values for where to start when putting to queue */
+#define TO_HEAD        KAL_TRUE
+#define TO_TAIL     KAL_FALSE
+#endif
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+kal_uint16  ParRlpTxQGetIdleNum(void);
+kal_uint16  ParRlpTxQGetNum(void);
+void ParRlpTxQInit(void);
+RevDataItemT*  ParRlpTxQGet(void);
+void   ParRlpTxQFree(RevDataItemT* pRec);
+void ParRlpPhyMissRetxQInit(ParRlpPhyMissListT* pList);
+void ParRlpServiceRetxQInit(ParRlpRetxListT* pList, kal_uint8 index);
+void ParRlpAccessRetxQInit(ParRlpRetxListT* pList);
+void ParRlpTxListInit(ParRlpTxListT* pList);
+void ParRlpRetxListInit(ParRlpRetxListT* pList);
+void ParRlpRetxQInit(void);
+RetxRecordT*  ParRlpRetxQGet(void);
+void   ParRlpRetxQFree(RetxRecordT* pRec);
+void ParRlpPhyMissRetxQReset(kal_uint8 RlpFlowId, ParRlpPhyMissListT* pList, kal_uint8 AppType);
+void RlpPhyMissRetxQDelRec(PhyMissRetxItemT* pRec, PhyMissBufT* pEntry, ParRlpPhyMissListT* pList);
+kal_bool ParRlpTxListDelHdr(ParRlpTxListT* pList);
+kal_bool ParRlpRetxQDelete(RetxRecordT* pRec, ParRlpRetxListT* pList);
+kal_bool ParRlpPhyMissRetxQDelete(PhyMissBufT* pRec, ParRlpPhyMissListT* pList);
+kal_bool ParRlpTxQFlowControlOn(void);
+void ParRlpTxQFlowControlReset(void);
+#ifdef CBP7_EHRPD
+kal_uint16 ParNumElements(PAR_LIST_STR* list);
+void ParCreateFreeList(PAR_LIST_STR* flist, PAR_LIST_NODE* nodeRecs, kal_uint16 nRecs);
+void ParCreateEmptyList(PAR_LIST_STR* list, PAR_LIST_STR* flist);
+void ParCreateFullList(PAR_LIST_STR* list, PAR_LIST_STR* flist, void* recs, kal_uint16 nRecs, kal_uint16 recSize);
+kal_bool ParPutRecord(PAR_LIST_STR* list, kal_bool toHead, void* rec);
+kal_bool ParGetRecord(PAR_LIST_STR* list, kal_bool fromHead, void** rec, kal_bool removeFromList);
+kal_bool ParGetFirstMatch(PAR_LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+                      pPARMATCH_FUNC matcher, kal_bool removeFromList);
+kal_bool ParGetNextMatch(PAR_LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+                     pPARMATCH_FUNC matcher, kal_bool removeFromList);
+void ParFlushList(PAR_LIST_STR* list);
+void ParMoveList(PAR_LIST_STR* fromList, PAR_LIST_STR* toList);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_Qos.h b/mcu/interface/protocol/l2_c2k/evdo/do_Qos.h
new file mode 100644
index 0000000..a6dd244
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_Qos.h
@@ -0,0 +1,312 @@
+/*****************************************************************************
+*  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  _DO_QOS_H_
+#define  _DO_QOS_H_
+/*****************************************************************************
+* 
+* FILE NAME   :   do_qos.h
+*
+* DESCRIPTION :   This file contains public QOS definitions
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "slc_nvram.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define MAX_SUPPORTED_IPFLOW             2
+#define MAX_SUPPORTED_QOS_BLOB_NUM 16
+#define MAX_SUPPORTED_RESERVATION_NUM      15
+#define MAX_CLIENT_NUM         6
+#define MAX_TFT_NUM              12
+#define DEFAULT_PPP_LABEL        0xff
+#define DEFAULT_PPPFREE_LABEL    0xfe
+
+typedef enum
+{
+   SPARE_TFT,
+   CREATE_NEW_TFT,
+   DELETE_TFT,
+   ADD_PKTFILTER_TO_TFT,
+   REPLACE_PKTFILTER,
+   DELETE_PKTFILTER,
+   QOS_CHECK,
+   INITIAL_FLOW_REQ = 0x80,/*HSGW to UE*/
+   QOS_CHECK_CONFIRM,
+   HSGW_DEL_PKTFILTER,
+   HSGW_REPLACE_PKTFILTER,
+   UE_DEL_IDENTIFIED_PKTFILTER
+   
+}TftOperationCodeT;
+
+typedef enum
+{
+  FLOW_BI,
+  FLOW_REV,
+  FLOW_FWD
+}RlpFlowDirection;
+
+typedef enum
+{
+  FLOW_PPPBESTEFORT,
+  FLOW_PPPFREE,/*PPP Free Operation*/
+  FLOW_SIP,
+  FLOW_RTP_AUDIO_RS1, /*profileID=0x100*/
+  FLOW_RTP_VIDEO_32K, /*profileID=0x301*/
+  FLOW_RTP_AUDIO_RS2, /*profileID=0x101*/
+  FLOW_RTP_VIDEO_48K, /*profileID=0x303*/
+  FLOW_RTP_VIDEO_64K, /*profileID=0x305*/
+  INVALID_FLOWTYPE  
+}QoSFlowTypeT;
+
+typedef enum
+{
+  ProtoNull,
+  ProtoHDLC,
+  ProtoIPv4,
+  ProtoIPv6,
+  ProtoROHC,
+  ProtoIPv4andIPv6
+}FlowProtoTypeT;
+
+typedef enum
+{
+  QOS_OP_SUCCESS,
+  QOS_OP_REJECT,
+  QOS_OP_TIMEOUT,
+  QOS_OP_FAIL
+}QoSOpResultT;
+
+
+typedef  PACKED_PREFIX 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_uint8  Verbose;
+   kal_uint8  RlpNum;
+   kal_uint8  MacFlowId;*/
+   QoSFlowTypeT          FlowType;
+} PACKED_POSTFIX QosSubBlobT;
+
+typedef  PACKED_PREFIX struct
+{
+   kal_bool    bCurSupported;
+   kal_uint16  FlowProfileID;
+/*   kal_uint8   Verbose;
+   kal_uint8   TrafficClass;
+   kal_uint16  PeakRate;
+   kal_uint16  BucketSize;
+   kal_uint16  TokenRate;
+   kal_uint8   MaxLatency;
+   kal_uint8   MaxIPPacketLossRate;
+   kal_uint8   PacketSize;
+   kal_uint8   DelayVarSensitive;*/
+} PACKED_POSTFIX QosAttributeT;
+
+typedef  PACKED_PREFIX struct
+{
+  kal_uint8 Num;
+  QosAttributeT  QosAttribute[MAX_SUPPORTED_QOS_BLOB_NUM];
+} PACKED_POSTFIX QosAttrProfileT;
+
+typedef  PACKED_PREFIX struct
+{
+  kal_bool    bIpV4;
+  kal_uint8   PrecedenceIndex;/*evaluation precedence index*/
+  /*kal_uint32  SrcAddress[4]; 
+  kal_uint32  SrcAddrMask[4];
+  kal_uint16  DstPortRange[2];
+  kal_uint16  SrcPortRange[2];*/
+  kal_uint16  SrcPortNum;/*For Forward flow, it's DstPortNum*/
+  kal_uint8   ProNumOrNHdr;
+  kal_uint32  Spi;/*ipsec security parameter index*/
+  kal_uint8   TrafficClass; /*for ipv4, it's tos*/
+  kal_uint8   TrafficMask;
+  kal_uint32  FlowLabel;/*valid for IPv6 only*/
+} PACKED_POSTFIX QoMPktFilterContentT;
+
+typedef  PACKED_PREFIX struct
+{
+  kal_bool                  bUsed;
+  QosSubBlobT           QosBlob;
+/*  ProtoTypeT     ProtoType;
+  kal_uint16         PortNum;
+  PayLoadTypeT   PayloadType;
+  FlowProtoTypeT L2P;*//*higher Layer Protocol,0 NULL,1 Octet-based HDLC-like framing
+                       2 Internet Protocol version4, 3 IP version 6, 4 RoHC, 5 IPv4 and IPv6*/
+  QoMPktFilterContentT  PktFilter;
+} PACKED_POSTFIX QosSubScriberProfileT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint8   num;
+  QosSubScriberProfileT   SubScribProfile[MAX_SUPPORTED_RESERVATION_NUM];
+} PACKED_POSTFIX QosSubScriberTabelT;
+
+
+typedef PACKED_PREFIX struct
+{
+   QosAttrProfileT             ATProfile;
+   QosSubScriberTabelT    RevSubTable;
+   QosSubScriberTabelT    FwdSubTable;
+} PACKED_POSTFIX QoSProfileT;
+
+
+typedef struct
+{
+  kal_uint8 ReservationLabel[MAX_RESERVATION_LABEL];
+  kal_uint8 DosAllowed[MAX_RESERVATION_LABEL];
+  kal_uint8 ReservationCount;
+ /* FlowProtoTypeT  FlowProtocol;
+  kal_uint8 ResvState[MAX_RESERVATION_LABEL];
+  kal_uint8 RlpState;
+  kal_uint8 HighLayerProtocol;*/
+}RlpFlowInfoT;
+
+typedef  struct
+{
+  kal_uint8   ResvLabel;
+  QoMPktFilterContentT  Content;
+}QoMPktFilterT;
+
+typedef  struct
+{
+  kal_uint8          Direction;
+  kal_uint8          PktFilterNum;
+  QoMPktFilterT  FilterList[MAX_CLIENT_NUM];
+}QoMTFTInfoT;
+
+typedef struct
+{
+   QoSFlowTypeT         FlowType;
+   kal_uint8                  Priority;
+   kal_uint8                  ProfileNum;
+   kal_uint16                ProfileID[4];  
+   QoMPktFilterContentT  PktFilter;
+}HlpQoSFlowInfoT;
+
+typedef struct
+{
+  QoSOpResultT  result;
+}HlpQOMOpFlowRspMsgT;
+
+typedef struct
+{
+  kal_uint8 Label;
+  kal_uint8 Direction;
+}HlpQOMOpFlowRelIndMsgT;
+
+typedef struct
+{
+  kal_uint8 Num;
+  kal_uint8 Label[MAX_CLIENT_NUM];
+}HlpQOMFlowIndMsgT;
+
+
+typedef void (*MsgDepatchT)(kal_uint8* pData, kal_uint16 size, kal_uint8 PdnId);
+/****************************************************************************/
+void   QOMQosTableInit(void);
+kal_bool   QOMRlpUpdateFwdQosTable(kal_uint8 ResvLabel, kal_uint16 len, kal_uint8* pProfile);
+kal_bool   QOMRlpUpdateRevQosTable(kal_uint8 ResvLabel, kal_uint16 len, kal_uint8* pProfile);
+
+void   QOMRlpUpdateQoSProfile(SupportedQosProfileT* pProfile);
+kal_uint8 QoMGetRevRlpNumByLabel(kal_uint8 ResvLabel);
+kal_uint8 QoMGetFwdRlpNumByLabel(kal_uint8 ResvLabel);
+kal_uint8 QoMGetFwdLabelByRlpFlow(kal_uint8 nRlpFlow);
+kal_uint8 QoMGetRevLabelPriority(kal_uint8 ResvLabel);
+void  QOMRlpReservationOnRsp(QoSOpResultT Result);
+void  QOMRlpQoSNegoFail(void);
+void  QOMRlpFwdQosRelease(kal_uint8 Label);
+void  QOMRlpRevQosRelease(kal_uint8 Label);
+void QOMSetRevLabelRlpNum(kal_uint8 Label, kal_uint8 RlpNum);
+void QOMSetFwdLabelRlpNum(kal_uint8 Label, kal_uint8 RlpNum);
+
+kal_bool QOMSetQoSAttributeSet(kal_uint8 Direction,QosAttrProfileT* pProfile);
+kal_bool QOMSetQoSProfile(QosAttrProfileT* pProfile);
+kal_bool QOMSetSubscribQoSProfile(kal_uint8 Direction,QosSubScriberProfileT* pSubProfile);
+kal_bool QOMGetNegQoSProfile(kal_uint8 Label, kal_uint8 Direction, QosSubBlobT* pProfile);
+kal_bool HlpQOMFlowRequest(kal_uint8 FlowType, kal_uint8 Direction,kal_uint8* pLabel);
+#if 0
+/* under construction !*/
+#endif
+kal_bool HlpQOMReleaseQoS(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num, kal_uint8 TftOpCode);
+void HlpQOMFlowDeactivate(kal_uint8 num,kal_uint8 *pLabel, kal_uint8 *pDirection);
+kal_bool QOMSetQoSTFT(QoMTFTInfoT* pTft);
+
+void  QOMWriteDataToFile(void);
+void QOMGetSubQosProfile(QoSProfileT* pQoSData);
+
+void QOMEncReservationQoSRequestAttr(kal_uint16* bitPos,kal_uint8* pData);
+void QOMClearSubscribQoSProfile(void);
+MsgDepatchT QOMDepatchRecvdPkt(kal_uint16 DstPort);
+kal_bool QOMCheckFwdTft(kal_uint16 DstPortNum);
+void QOMCloseUdpConnection(void);
+void QOMActivate(kal_bool flag);
+QoMPktFilterContentT*  QOMGetTftByLabel(kal_uint8 Label);
+
+#ifdef CBP7_EHRPD
+void  HlpQOMSetRevFlowPath(kal_uint8 RlpFlowNum, kal_uint8 PathType);
+kal_uint8 HlpQOMGetRevFlowPath(kal_uint8 RlpFlowNum);
+void  HlpQOMSetFwdFlowPath(kal_uint8 RlpFlowNum, kal_uint8 PathType);
+kal_uint8 HlpQOMGetFwdFlowPath(kal_uint8 RlpFlowNum);
+void HlpQoMInitSubQoSTableWithPdnTable(void);
+
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_acmapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_acmapi.h
new file mode 100644
index 0000000..c764977
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_acmapi.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : do_acmapi.h
+*
+* DESCRIPTION : API definition for ACMAC.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_ACMAPI_H_
+#define _DO_ACMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_dsaapi.h"
+#include "rtm.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/* AcmTestModes */
+typedef enum 
+{
+   ACM_TEST_REAL = 0,
+   ACM_TEST_DEACTIVATE,
+   ACM_TEST_TXHW,
+   ACM_TEST_TXHW_REPEAT
+} AcmTestModeT;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+/* Tracking variables for RTM use */
+extern kal_int16 AcmRxPwr;      /* The RxPwr after each access probe */
+extern kal_int16 AcmPilotPwr;   /* The final "clipped" pilot pwr after each access probe */
+extern kal_int16 AcmKsAdjust;  /* The Ks after each access probe */
+extern AcmTestModeT AcmTestMode; 
+extern RpcTestModeT AcmRpcTestMode;
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void AcmCreateInConfigInstance(kal_bool resetToDefault);
+extern void AcmCommitHandler(void);
+#endif
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void AcmInit(void);
+void AcmHandleDsafFwdMsg(DsaFwdMsgT *pMsg);
+void AcmHandleATIListMsg(AcmAmpATIListMsgT* MsgDataPtr);
+void AcmHandleActivateMsg(AcmRupActivateMsgT* MsgP);
+void AcmHandleDeactivateMsg(void);
+void AcmHandleDsaAddByteMsg(void);
+void AcmHandleRmcRfReadyMsg(void);
+kal_bool AcmHandleRmcRfReleaseMsg(void); 
+void AcmHandleOmpParamUpdMsg(AcmOmpUpdatedMsgT *pMsg);
+void AcmHandleRupAccessHOIndMsg(void);
+void AcmHandleScpReconfiguredMsg(void);
+void AcmHandleScpCommittedMsg(void);
+void AcmHandleEltAcmSupervisionExpiredCmdMsg(void);
+void AcmHandleSignals(kal_uint32 TaskSignals);
+void AcmHandleAckMsg(void);
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+extern void AcmHandleAckMsgNST(kal_uint32 dummy);  /* NST: used in NST */
+#endif
+void AcmHandleProtStopAccessMsg(kal_uint8 action);
+void AcmHandleTestCfgMsg(AcmTestCfgMsgT *pMsg);
+#if defined(MTK_CBP) && (!defined(MTK_PLT_ON_PC))
+kal_bool AcmCtrlStateCheck(void);
+#endif
+#ifdef MTK_CBP
+kal_bool AcmIsDeactivated(void);
+#endif
+void AcmHandleTrafficPwrRefParamMsg (RcpRtcPwrRefParamMsgT *pMsgPtr);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_dsaapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_dsaapi.h
new file mode 100644
index 0000000..7f429f3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_dsaapi.h
@@ -0,0 +1,193 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_dsaapi.h
+*
+* DESCRIPTION : API definition for Default Signalling component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_DSAAPI_H_
+#define _DO_DSAAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "cpbuf.h"
+#include "do_fcpapi.h"
+#include "do_clcapi.h"
+#include "do_rcpapi.h"
+#include "do_slcapi.h"
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_REV_MSG   3
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+typedef enum
+{
+    none,
+    ended,
+    success
+} ConfirmRequiredE;
+
+typedef enum
+{
+    sendSuccess,
+    sendFail
+} ConfirmResponseE;
+
+typedef enum
+{
+    DSA_RESET_MSG,
+    DSA_RESET_ACK_MSG,
+    DSA_CONFIG_REQ_MSG           = 0x50,
+    DSA_CONFIG_RSP_MSG           = 0x51,
+    DSA_SLP_D_HDR_ONLY,
+    MSG_ALL
+}DsafMsgTypeT;
+
+typedef enum
+{
+	/* please don't modify these two enum vaule for sync with ELT tool */
+	CP_FCP_OTA_MSG = 9,
+	CP_FCP_SLPD_ACK = 10,
+	CP_RCP_SLPD_ACK = 11,
+	CP_RCP_OTA_MSG = 12
+}DsaOtaMsgT;
+
+typedef enum
+{
+    bestEffort,
+    reliable,
+    bestEfforInAccessReliableInTraffic
+} DsarTransModeT;
+
+typedef enum
+{
+    DO_CC,  /* for UTS (MON_CP_FCP_SNP_RAW_DATA_SPY_ID), this is msg in CC for UATI or RATI*/
+    DO_FTC,
+    DO_AC,
+    DO_RTC,
+    DO_EAC, /* NoUsed*/
+    DO_BCMC,
+    DO_BC_ADR /* msg in CC for broadcast (BATI), for UTS (MON_CP_FCP_SNP_RAW_DATA_SPY_ID) only */
+}DoChanTypeT;
+
+typedef struct
+{
+    kal_uint8 transId;
+    kal_uint16 protocolType;
+    kal_bool InConfigurationProtocol;
+    ConfirmResponseE status;
+} DsarTxStatusMsgT;
+
+typedef struct DsaFwdMsg
+{
+    kal_uint16      len;            // Length of the SLP-F packet
+    kal_uint16      offset;         // offset within 640 bytes buffer
+    kal_uint16      protocolType;
+    kal_bool        InConfigurationProtocol;
+    CpBufferT * bufPtr;         // Points to the SLP-F fragments
+    DoChanTypeT FwdPhyChanType;
+    kal_uint16      sysTimeInSlots;
+    void (*OTAMsgHandlerT)( struct DsaFwdMsg* );
+}DsaFwdMsgT;
+
+typedef struct
+{
+    CpBufferT           *ptrBuffer;
+#ifdef MTK_PLT_ON_PC_UT
+    kal_uint8               bufData[20];
+#endif
+    kal_uint8               allowedChan;
+    kal_uint8               reliable;
+    ConfirmRequiredE    confirmReq;
+    kal_bool                InConfigurationProtocol;
+    kal_uint16              protocolType;
+    kal_uint8               transId;
+    kal_uint8               priority;
+} DsaRevMsgT;
+
+typedef struct
+{
+    kal_uint8  msgNum;
+    DsaRevMsgT msg[MAX_REV_MSG];
+} DsaRevMultiMsgT;
+
+typedef struct
+{
+    kal_uint8   Msg;
+} DsarTimeExpMsgT;
+
+typedef struct
+{
+    kal_uint8   revMacId;
+    kal_uint8   subStreamNum;
+} DsarTransmitRespMsgT;
+
+typedef struct
+{
+    module_type moduleId;
+    sap_type    sapId;
+} DsaModuleT;
+
+kal_bool DsarAcquireTxAvailStatus (void);
+kal_bool DsarIsTxAvailFailStatus (void);
+kal_bool DsarIsWfrTxAvailStatus (void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_wzhou_href22315\1 2013-11-27 05:31:00 GMT wzhou
+** HREF#22315: change DSAR callback to message-control mechanism.**/
+/**Log information: \main\Trophy\1 2013-11-27 05:40:02 GMT jzwang
+** href#22315**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_fcp_msg_struct.h b/mcu/interface/protocol/l2_c2k/evdo/do_fcp_msg_struct.h
new file mode 100644
index 0000000..560467d
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_fcp_msg_struct.h
@@ -0,0 +1,491 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+* 
+* FILE NAME   :fcp_msg_struct.h 
+*
+* DESCRIPTION :This module defines the Layer 2 ILM messgae IDs for the 1xRTT Protocol Stack.
+*
+*
+* HISTORY     :
+*     1.File Create by atlas.xu, 2016,1,27
+*
+*****************************************************************************/
+
+#ifndef _FCP_MSG_STRUCT_H
+#define _FCP_MSG_STRUCT_H
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "kal_public_defs.h"
+#include "do_rcpapi.h"
+#include "do_rtmapi.h"
+#include "do_fcpapi.h"
+#include "ftapf.h"
+
+#include "fcpdefs.h"
+
+
+/* EvDO FCP Message */
+
+/* FCP_BRP_FWD_PKT_MSG */
+typedef struct
+{
+    kal_uint32 CrcResult;
+    kal_uint32 PreambleMacId;
+    kal_uint32 SupMacId;
+    kal_uint32 EpSize;
+    kal_uint32 SlotCount;
+    kal_uint32 DrcIndex;
+    kal_uint32 TimeStamp;
+    CpBufferT* RxDmaBufPtr;
+} fcp_brp_fwd_pkt_msg;
+
+/* MSG_ID_ELT_CCM_SUPERVISION_EXPIRED_CMD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    EltCcmSupervisionExpiredCmdMsgT msg;
+} elt_ccm_supervision_expired_cmd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    fcp_brp_fwd_pkt_msg msg;
+} fcp_brp_fwd_pkt_msg_struct;
+
+
+/* CCM_SCM_SESSION_OPENED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_scm_session_opened_msg_struct;
+
+/* CCM_SCM_SESSION_CLOSED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_scm_session_closed_msg_struct;
+
+/* CCM_CSP_ACTIVATE_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_csp_activate_cmd_struct;
+
+/* CCM_IDP_ACTIVATE_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_idp_activate_cmd_struct;
+
+/* CCM_INSP_ACTIVATE_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_insp_activate_cmd_struct;
+
+/* CCM_IDP_DEACTIVATE_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_idp_deactivate_cmd_struct;
+
+/* CCM_INSP_DEACTIVATE_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_insp_deactivate_cmd_struct;
+
+/* CCM_ALMP_DEACTIVATE_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_almp_deactivate_cmd_struct;
+
+/* CCM_SCM_KEEPALIVE_CFG_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    CcmSmpKeepAliveCfgT msg;
+} ccm_scm_keepalive_cfg_msg_struct;
+
+/* CCM_SCM_KEEPALIVE_RESET_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_scm_keepalive_reset_msg_struct;
+
+
+/* FCP_RCP_STREAM_CONFIG_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FcpRcpStreamConfigMsgT msg;
+} fcp_rcp_stream_config_msg_struct;
+
+/* DSAF_RTM_LINK_ACQ_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsaf_rtm_link_acq_msg_struct;
+
+/* DSA_CCM_INTERRUPTED_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsa_ccm_interrupted_ind_msg_struct;
+
+/* PAF_RUP_NETWORK_LOST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} paf_rup_network_losg_msg_struct;
+
+/* DSAF_RUP_CONNECTION_INIT_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsaf_rup_connection_init_msg_struct;
+
+/* FTM_RUP_TCA_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FTCMACParmsGT ftcMacParams;
+} ftm_rup_tca_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtmFtapDrcAckConfigT ftcMacParams;
+} ftm_ftap_drc_ack_config_msg_struct;
+
+/* FTAP_FTAPR_INIT_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtaprFtapfInitMsgT msg;
+} ftap_ftapr_init_msg_struct;
+
+/* FTAP_ALMP_ST_UPDATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtapAlmpStateupdateMsgT msg;
+} ftap_almp_st_update_msg_struct;
+
+/* FTAP_RUP_IDLEHO_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_rup_idleho_msg_struct;
+
+/* FTAP_RUP_SERVING_SECTOR_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_ccm_first_sync_cc_msg_struct;
+
+/* FTAP_RUP_SERVING_SECTOR_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_rup_serving_sector_msg_struct;
+
+/* FTAP_RUP_TRAFFICCHANASSIGN_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtapRupTrafficChanAssignMsgT msg;
+} ftap_rup_trafficchanassign_msg_struct;
+
+
+/* FTAP_ALMP_CONN_CLOSED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_almp_conn_closed_msg_struct;
+
+/* FTAP_ALMP_CONN_FAILED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_almp_conn_failed_msg_struct;
+
+/* FTAP_ALMP_CONN_RELEASED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_almp_conn_released_msg_struct;
+
+/* FTAP_ALMP_CONN_OPENED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftap_lmp_conn_opened_msg_struct;
+
+/* DRC_CSM_CELL_SWITCH_REQED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} drc_csm_cell_switch_reqed_msg_struct;
+
+/* DRC_CSM_CELL_SWITCH_OCCUR_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} drc_csm_cell_switch_occur_msg_struct;
+
+/* CCM_CLC_SUP_TIMER_RST_CMD */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ccm_clc_sup_timer_rst_cmd_struct;
+
+/* UT_FCP_DSAF_FWD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+    kal_uint8 data[CPBUF_SIZE_FWD];  /* data for the cpbuffer */
+} ut_fcp_dsaf_fwd_msg_struct;
+
+/* FTM_RUP_ACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftm_rup_activate_msg_struct;
+
+/* FTM_RUP_DEACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftm_rup_deactivate_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafDpaRlpStatPeekMsgT msg;
+} paf_dparlp_stat_peek_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafMfpaRlpStatPeekMsgT msg;
+} paf_mfparlp_stat_peek_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParPafRspStatusMsgT msg;
+} paf_paf_rsp_status_msg_struct;
+
+#ifdef PKT_TEST
+/*PAF_OTTS_FWD_DATA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafOttsFwdDataIndMsgT msg;
+} paf_otts_fwd_data_ind_msg_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    HlpRlpRouteChangedMsgT msg;
+} hlp_fcp_rlproute_changed_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafTimerExpiredMsgT msg;
+} paf_timer_expired_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FcpTestFixDrcValMsgT msg;
+} fcp_est_fix_drcval_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtReconfigCnfMsgT msg;
+} scp_prot_reconfig_cnf_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafHlpFlowCtrlMsgT msg;
+} paf_hlp_flow_ctrl_msg_struct;
+
+/* PAF_RCP_SESSION_CONFIG_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafRcpSessionConfigMsgT msg;
+} paf_rcp_session_config_msg_struct;
+
+
+/* DSAF_SLP_BUF_FREE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32* ptrPktList;
+    kal_bool bCpbufFree;
+} dsaf_slp_buf_free_msg_struct;
+
+
+/* PAF_IDP_CONN_OPENED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} paf_idp_conn_opened_msg_struct;
+
+/* PAF_CSP_CONN_CLOSED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} paf_csp_conn_closed_msg_struct;
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FcpHlpRevDataReqMsgT msg;
+} ut_fcp_hlp_rev_data_req_msg_struct;
+
+/* UT_CCM_AMP_ATILIST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    UtCcmAmpATIListMsgT msg;
+} ut_ccm_amp_atilist_msg_struct;
+
+/* UT_FCP_CCM_COMMIT_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    UtFcpCcmCommitMsgT msg;
+} ut_fcp_ccm_commit_msg_struct;
+
+/* FCP_TEST_RTM_DATA_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PafTestRtmDataIndMsgT msg;
+} fcp_test_rtm_data_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    UtFtmGetAttribRspMsgT msg;
+} ut_fcp_ftm_get_attrib_rsp_msg_struct;
+
+/* UT_FCP_FWD_DATA_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FcpFwdPktMsgT msg;
+    kal_uint8 RxDmaBufPtr[4][CPBUF_SIZE_FWD];   /* data for four cpbuffers */
+} ut_fcp_fwd_data_ind_msg_struct;
+
+#endif
+
+/*FCP_RMC_4_SLOT_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ut_fcp_rmc_4_slot_ind_msg_struct;
+
+/*MSG_ID_FCP_START_PCPF_OPERATIONS*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_start_pcpf_operations_msg_struct;
+
+/*MSG_ID_FCP_START_STREAM_LAYER_OPERATIONS*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_start_stream_layer_operations_msg_struct;
+
+/* MSG_ID_FCP_ETS_FTAP_STATS_CLR_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtapEtsStatClrGetReqMsgT msg;
+} fcp_ets_ftap_stats_clr_req_msg_struct;
+
+/* MSG_ID_FCP_ETS_FTAP_STATS_GET_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtapEtsStatClrGetReqMsgT msg;
+} fcp_ets_ftap_stats_get_req_msg_struct;
+
+/* MSG_ID_FCP_TST_CCM_INITIALIZE*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_tst_ccm_initialize_msg_struct;
+
+/* MSG_ID_FCP_TST_CCM_ACTIVATE*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_tst_ccm_activate_msg_struct;
+
+/* MSG_ID_FCP_TST_CCM_DEACTIVATE*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_tst_ccm_deactivate_msg_struct;
+
+/* MSG_ID_FCP_TST_MAC_PKT_LIST_INTEGRITY*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_tst_mac_pkt_list_integrity_msg_struct;
+    
+/* MSG_ID_FCP_TST_CONN_LAYER_PKT_LIST_INTEGRITY*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} fcp_tst_conn_layer_pkt_list_integrity_msg_struct;
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_fcpapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_fcpapi.h
new file mode 100644
index 0000000..aab07c8
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_fcpapi.h
@@ -0,0 +1,445 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+
+/*****************************************************************************
+*
+* FILE NAME   : do_fcpapi.h
+*
+* DESCRIPTION : API definition for FCP (Forward Channnel Processing) Task.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_FCPAPI_H_
+#define _DO_FCPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_rupapi.h"
+#include "cpbuf.h"
+#include "do_slcapi.h"
+#include "do_hwdrxpdefs.h"
+#include "hlpapi.h"
+#ifdef MTK_PLT_ON_PC_UT
+#include "do_rcpapi.h"
+#endif
+#include "kal_public_defs.h"
+#include "slc_nvram.h"
+#include "do_fcp_msgid.h"
+
+
+#ifdef EXE_UTE_TST_TASK	 /* test task is ON...*/
+  #ifndef DRC_TEST
+   #define DRC_TEST
+ #endif
+#endif
+
+
+#ifdef SYS_OPTION_DRC_ASIC_TEST /* For ASIC TEST...*/
+ #ifndef DRC_TEST
+   #define DRC_TEST             1
+ #endif
+#endif
+
+#ifdef SYS_OPTION_DRC_HW_TEST
+ #ifndef DRC_TEST
+   #define DRC_TEST
+ #endif
+#endif
+
+/*
+#if  (USE_TST_TASK==KAL_TRUE)
+ #ifndef DRC_TEST
+   #define DRC_TEST
+ #endif
+#endif
+*/
+/* Just turn on the DRC_TEST now...*/
+/*   #define  DRC_TEST                  */
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_TRANS_ATI_NUMBER        10
+#define MAX_NUM_AppStream           4
+
+/*----------------------------------------------------------------------------
+ Mailbox IDs
+----------------------------------------------------------------------------*/
+#define FCP_TASK_MAILBOX        EXE_MAILBOX_1_ID
+#define FCP_DATA_MAILBOX        EXE_MAILBOX_2_ID
+
+#define FCP_TASK_MAILBOX_EVENT  EXE_MESSAGE_MBOX_1   /* EXE_MAILBOX_1 */
+#define FCP_DATA_MAILBOX_EVENT  EXE_MESSAGE_MBOX_2   /* EXE_MAILBOX_2 */
+
+/*----------------------------------------------------------------------------
+ * Q-value definitions
+----------------------------------------------------------------------------*/
+/* Amplitude Log2 value * 6.0206 = 20log10(dBm) value */
+#define ALOG2_TO_DBM_CONVERSION_FACTOR_Q10      0x1815
+
+/* X(dBm) = 20 log X = (20 log2 X) / (log2 10),
+ * therefore log2 X = 1 / (20 log 2) * X(dBm)
+ * 1 / (20 log 2) = 0.16609640474436811... */
+#define DBM_TO_ALOG2_CONVERSION_FACTOR_Q16      0x2A85
+
+#define DrcRegisterTypeT       kal_uint16
+
+/*----------------------------------------------------------------------------
+     Command Message IDs, for FCP task, for FCP_CMD_MAILBOX, EXE_MAILBOX_1_ID
+     The message IDs for components shall also be put in here.
+	 Satya: Add all the PKT_SIM related messages into the area that is defined
+	 between #ifdef/#endif..Contact me, if you need any clarifications!.
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+     define signals used by FCP task
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+typedef enum {
+  CCM_INCONFIG,
+  CCM_INUSE,
+  CCM_MAX_INSTANCE
+} CcmInstanceT;
+
+typedef enum 
+{
+  CCM_SUPERVISION_EXPIRED_TEST_IDLE,
+  CCM_SUPERVISION_EXPIRED_TEST_ACCESS,
+  CCM_SUPERVISION_EXPIRED_TEST_FINISH
+} CcmSupervisionExpiredTestStateT;
+
+extern  CcmSupervisionExpiredTestStateT   CcmSupervisionExpiredState;
+#define CCM_SUPERVISION_FAIL_TEST        (CcmSupervisionExpiredState != CCM_SUPERVISION_EXPIRED_TEST_FINISH)
+#define CCM_SUPERVISION_FAIL_TEST_IDLE   (CcmSupervisionExpiredState == CCM_SUPERVISION_EXPIRED_TEST_IDLE)
+#define CCM_SUPERVISION_FAIL_TEST_ACCESS (CcmSupervisionExpiredState == CCM_SUPERVISION_EXPIRED_TEST_ACCESS)
+
+typedef PACKED_PREFIX struct {
+  kal_uint32  TKeepAliveTransTime;
+} PACKED_POSTFIX CcmSmpKeepAliveCfgT;
+
+typedef PACKED_PREFIX struct{
+  kal_uint8 ATIType;
+  kal_uint32 ATI;
+  kal_uint32 SystemTime;
+  kal_bool Use;
+} PACKED_POSTFIX ATITypeT;
+
+typedef PACKED_PREFIX struct
+{
+  ATITypeT *RcvATIList;
+} PACKED_POSTFIX CcmAmpATIListMsgT;
+
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint8      MsgSeq;
+  kal_uint8      ChanInc;
+  ChanRecGT  Chan;
+  kal_uint8      DRCLength;                                /*in unit of slot*/
+  kal_int8       DRCChannelGainBase;                       /*in unit of 0.5db, valid range (-9dB,+6dB) */
+  kal_int8       ACKChannelGain;                           /* 0.5db, valid range (-3dB,+6dB) */
+  kal_uint8      NumPilots;
+  kal_uint8      SofterHandoff[SYS_MAX_ACTIVE_LIST_PILOTS];/*1 bit*/
+  kal_uint8      MACIndex[SYS_MAX_ACTIVE_LIST_PILOTS];     /* 7 bits, computed MACIndex by LSB&MSB fields*/
+  kal_uint8      DRCCover[SYS_MAX_ACTIVE_LIST_PILOTS];     /* 3 bits*/
+  kal_uint8      RAChannelGainInc;                         /*1 bits*/
+  kal_uint8      RAChannelGain[SYS_MAX_ACTIVE_LIST_PILOTS];/* 2 bits*/
+  kal_uint8      DSCChanInc;
+  kal_int8       DSCChannelGainBase;                       /*0.5dB*/
+  kal_uint8      DSC[SYS_MAX_ACTIVE_LIST_PILOTS];          /* 3 bits each pilot of SofterHandOff=0 */
+} PACKED_POSTFIX FTCMACParmsGT;
+
+typedef struct {
+  kal_uint32   TimerId;
+}PafTimerExpiredMsgT;
+
+
+typedef enum {
+	ACCESSSTREAM=1,
+	SERVICESTREAM
+}StreamType;
+
+
+typedef struct {
+  kal_bool bXOnOff;
+  StreamType StreamID;
+} PafHlpFlowCtrlMsgT;
+
+typedef struct {
+  StreamConfigAttribT StreamConfigData;
+} FcpRcpStreamConfigMsgT;
+
+typedef enum
+{
+  PAF_Default = 0x0,
+  PAF_MultiFlow
+}
+PafSubTypeT;
+
+
+
+
+#if defined (MTK_PLT_ON_PC)
+  typedef struct {
+    DatapktlistGT pktList;
+  } PafTestRtmDataIndMsgT;
+#endif
+
+#ifdef PKT_TEST
+  typedef PACKED_PREFIX struct {
+    kal_uint8 nAppType;
+    kal_uint16 PktLen;
+    CpBufferT* CpBufPtr;
+    kal_uint16 PktStartOffset;
+  } PACKED_POSTFIX  PafOttsFwdDataIndMsgT;
+#endif
+typedef PACKED_PREFIX struct
+{
+  kal_uint8 TCAMsgSeq;
+} PACKED_POSTFIX FtapRupTrafficChanAssignMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint8 AlmpST;
+} PACKED_POSTFIX FtapAlmpStateupdateMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint8 Protocol;
+  kal_uint16 SubApp;
+} PACKED_POSTFIX FtaprFtapfInitMsgT;
+
+/*  Packet performance measurement */
+typedef PACKED_PREFIX struct
+{
+  kal_uint32    TotalFwdPhySlot;      /* Count how many slots have been used.*/
+  kal_uint32    TotalBits;            /* in unit of 128 bit*/
+  kal_uint32    BadPackets;           /* missing packet on AT side*/
+  kal_uint32    TotalTxPacket;        /* Number of packet sent by AN*/
+  kal_uint16    TotalCCPacket;
+  kal_uint16    FwdPER;               /* BadPackets/TotalTxPacket*/
+  kal_uint16    AN_ThrPut;           /* TotalBits/TotalFwdPhySlot*/
+  kal_uint16    AT_ThrPut;           /* TotalBits/time*/
+} PACKED_POSTFIX FcpPacketPerfStatT;
+
+extern FcpPacketPerfStatT FcpPacketPerfStat;
+extern FcpPacketPerfStatT FtapPacketPerfStat;
+
+/* Periodic packet performance statistics for debug */
+typedef PACKED_PREFIX struct
+{
+    kal_uint32    PeriodStartSystimeFrame;
+    kal_uint32    PeriodEndSystimeFrame;
+    kal_uint32    CCValidPackets;            /* Number of valid packets received on Control Channel */
+    kal_uint32    CCBadPackets;              /* Number of CRC error packets on Control Channel*/
+    kal_uint32    CCTotalPackets;            /* Total number of packets on Control Channel*/
+    kal_uint32    FTCValidPackets;           /* Number of valid packets received on Forward Traffic Channel */
+    kal_uint32    FTCBadPackets;             /* Number of CRC error packets on Forward Traffic Channel */
+    kal_uint32    FTCTotalPackets;           /* Total number of packets on Forward Traffic Channel */
+    kal_uint32    TotalPackets;              /* Total number of packets on AT side */
+} PACKED_POSTFIX FcpPeriodicPacketPerfStatT;
+
+/* MSG_ID_ELT_CCM_SUPERVISION_EXPIRED_RSP_MSG */
+typedef PACKED_PREFIX struct 
+{
+  kal_uint32 Reserved;
+} PACKED_POSTFIX  EltCcmSupervisionExpiredRspMsgT;
+
+/* MSG_ID_ELT_CCM_SUPERVISION_EXPIRED_CMD_MSG */
+typedef PACKED_PREFIX struct 
+{
+  CcmSupervisionExpiredTestStateT CcmSupervisionExpiredTestState;
+} PACKED_POSTFIX  EltCcmSupervisionExpiredCmdMsgT;
+
+extern FcpPeriodicPacketPerfStatT FcpPeriodicPacketPerfStat;
+
+extern kal_uint32 FcpPerfStartTimeInSlot;
+extern void FcpPerfDataReset(kal_uint32 CurTimeInSlot);
+
+extern kal_uint32  TotalSingUserPacketBytes;
+extern kal_uint32  TotalMultUserPacketBytes;
+
+
+
+typedef struct {
+  DatapktlistGT pktList;
+} FtapTestRtmDataIndMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  ExeRspMsgT      RspInfo;
+} PACKED_POSTFIX  PafMfpaRlpStatPeekMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  ExeRspMsgT      RspInfo;
+} PACKED_POSTFIX  PafDpaRlpStatPeekMsgT;
+
+typedef struct
+{
+  kal_timerid     ccmTimerId;
+} CcmSupTimerT;
+
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct {
+    ATITypeT RcvATIList[MAX_TRANS_ATI_NUMBER];
+} UtCcmAmpATIListMsgT;
+
+typedef struct {
+    kal_uint8    CCShortPacketsMACIndex;
+    RcpModeT UtRcpMode;
+} UtFcpCcmCommitMsgT;
+
+typedef struct {
+    CpBufferT   *bufPtr;
+    kal_uint16      offset;
+    kal_uint16      dataLen;
+} FcpHlpRevDataReqMsgT;
+
+typedef struct {
+    kal_uint8                   reqSeq;
+    kal_uint8                   ucRsv;
+    kal_uint16                  rspAttribDataLen;
+    kal_uint8                   AttribId;
+    kal_uint8                   aucRsv[3];
+} UtFcpFtmSetAttribMsgT;
+
+typedef struct {
+    kal_uint8       AttribId;
+    kal_uint8       ucRsv[3];
+} UtFtmGetAttribMsgT;
+
+typedef struct {
+    kal_uint8       AttribId;    
+    kal_uint8       usRsv;
+    kal_uint16      usLen;
+    kal_uint8       *pucData;
+} UtFtmGetAttribRspMsgT;
+
+typedef struct FcpFwdPktMsg
+{
+  kal_uint32    RxDmaStatus;
+  kal_uint8     bMacValid[4];
+  kal_uint8     MacId[4];
+  kal_uint16    MacPacketTimestamp[4];
+  kal_uint16    Drc_C2i[4];
+  kal_uint32    RxDmaPakcetRec[4];
+  CpBufferT     *RxDmaBufPtr[4];
+  kal_uint8     PrevFmpMacId[4];
+  kal_uint8     CurrFmpMacId[4];
+  kal_bool      FmpMacIdChange[4];
+  kal_uint16    PacketC2I;
+}FcpFwdPktMsgT;/*This message use only on UT, otherwise in 6293, most FCP UT testcase must be changed.*/
+
+
+#endif /* MTK_PLT_ON_PC_UT */
+
+/*----------------------------------------------------------------------------
+ Global Variables
+----------------------------------------------------------------------------*/
+typedef enum
+{
+  FAST_2_ch = 0,
+  FAST_1_ch,
+  SLOW_ch,
+  Stationary_ch,
+  AWGN_ch,
+  NO_Decision_ch,
+  Non_Force_chTyp  /* For test mode*/
+
+}DRCChanTypeT;
+
+typedef enum {
+   NO_DECISION,
+   RLP_ACK,
+   RLP_NAK
+} RlpAckNakStatusT;
+
+typedef enum {
+   CCM_SCP_CONFIG_REQ_MSG           = 0x50,
+   CCM_SCP_CONFIG_RSP_MSG           = 0x51
+} CcmOTAMsgIdT;
+
+extern RlpAckNakStatusT RlpAckNakStatus;
+extern DRCChanTypeT DRCChannelType;
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void  DRCFixedTxRateDisable(void);
+extern void  DRCParameterReinstate(void);
+
+extern void  FtmFwdTrafficValidFailure(void);
+
+extern kal_bool GetFtapLoopBackMode(void);
+extern kal_uint8 GetFixDrcMode(void);
+
+
+extern kal_uint16 CCCycleStartTime;
+extern kal_bool  FirstCCMPktFound;
+extern void  FcpGetFwdDataStats(kal_uint32* pRxTotalBytes, kal_uint32* pRxNewDataPkts, kal_uint32* pCurFrameCnt);
+extern void  FcpHwTestHwTrigger(kal_uint32 dummy);
+extern void  DrcFastChSingleAntImprv(kal_bool enable);
+extern kal_uint16 FcpGetFtmSubtype (void);
+extern void FcpInit(void);
+
+extern void fcp_process_ilm(ilm_struct *current_ilm);
+extern void FcpSendEltMsg(msg_type msg_id, local_para_struct *log_msg_ptr);
+extern kal_bool  PafCheckNoData(void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_yanliu_href21996\1 2013-03-12 07:53:32 GMT yanliu
+** HREF#21996: fix for DO MPS 3.3.1 Dynamic Range - Test 2 and Test3 Fail**/
+/**Log information: \main\Trophy\1 2013-03-12 08:05:42 GMT yanliu
+** HREF#21996 merged, fix DO dynamic range failure**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_ftmapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_ftmapi.h
new file mode 100644
index 0000000..b28db84
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_ftmapi.h
@@ -0,0 +1,98 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : do_ftmapi.h
+*
+* DESCRIPTION : API definition for FTM (Forward Traffic Channel MAC).
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_FTMAPI_H_
+#define _DO_FTMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_fcpapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+typedef enum {
+    FTM_INACTIVE_STATE,
+    FTM_ACTIVE_STATE,
+    FTM_PENDING_STATE,
+    FTM_STATE_END
+}FtmStateT;
+
+/******************************************************************************
+    Prototypes
+******************************************************************************/
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void  FtmEnhanceCreateInConfigInstance(kal_bool resetToDefault);
+extern void  FtmEnhanceCommitHandler(void);
+extern void  FtmDefaultCreateInConfigInstance(kal_bool resetToDefault);
+extern void  FtmDefaultCommitHandler(void);
+#endif
+
+#ifdef MTK_PLT_ON_PC_UT
+extern void FtmSetAttrib(UtFcpFtmSetAttribMsgT *pFtmSetAttrib);
+extern void FtmGetAttrib(kal_uint16 attr_id);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_hwdrxpdefs.h b/mcu/interface/protocol/l2_c2k/evdo/do_hwdrxpdefs.h
new file mode 100644
index 0000000..2bc10d3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_hwdrxpdefs.h
@@ -0,0 +1,172 @@
+/*****************************************************************************
+*  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 _DO_HWDRXPDEFS_H_
+#define _DO_HWDRXPDEFS_H_
+/*****************************************************************************
+* 
+* FILE NAME   : do_hwdrxpdefs.h
+*
+* DESCRIPTION : DO RxPath register defines
+*               It include preamble detector, Harq, Turbo decoder, Rx Controller.
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+#define HWD_CP_TD_MODE_SHIFT                0
+#define HWD_CP_TD_DEC_TYPE_SHIFT            1
+#define HWD_CP_TD_LC_SCALE_SHIFT            2
+#define HWD_CP_TD_ITER_OTHERS_SHIFT         5
+#define HWD_CP_TD_ITER_5120_SHIFT           9
+
+#define HWD_CP_TD_MODE_DO                   (0x00000000 << HWD_CP_TD_MODE_SHIFT)
+#define HWD_CP_TD_MODE_1X_SCH               (0x00000001 << HWD_CP_TD_MODE_SHIFT)
+
+#define HWD_CP_TD_DEC_TYPE_MAX_LOG_MAP      (0x00000000 << HWD_CP_TD_DEC_TYPE_SHIFT)
+#define HWD_CP_TD_DEC_TYPE_MAX_STAR         (0x00000001 << HWD_CP_TD_DEC_TYPE_SHIFT)
+
+
+/* HWD_DMA_MDM_RX_CTL */
+#define DMA_MDM_RX_RST_N_SHIFT          24     /* [24]   */
+#define DMA_MDM_RX_RST_N                (0x00000001 << DMA_MDM_RX_RST_N_SHIFT)        
+#define DMA_MDM_RX_RST                  (0x00000000 << DMA_MDM_RX_RST_N_SHIFT) 
+
+#define DMA_MDM_RX_ENABLE_SHIFT         16     /* [16]   */
+#define DMA_MDM_RX_ENABLE               (0x00000001 << DMA_MDM_RX_ENABLE_SHIFT)        
+#define DMA_MDM_RX_DISABLE              (0x00000000 << DMA_MDM_RX_ENABLE_SHIFT)
+
+#define DMA_MDM_RX_CHANNEL_SHIFT        8     /* [10:8]   */
+#define DMA_MDM_RX_CHANNEL_MASK         (0x00000007 << DMA_MDM_RX_CHANNEL_SHIFT)        
+#define DMA_MDM_RX_CHANNEL_0            (0x00000000 << DMA_MDM_RX_CHANNEL_SHIFT)        
+#define DMA_MDM_RX_CHANNEL_1            (0x00000001 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_2            (0x00000002 << DMA_MDM_RX_CHANNEL_SHIFT)        
+#define DMA_MDM_RX_CHANNEL_3            (0x00000003 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_4            (0x00000004 << DMA_MDM_RX_CHANNEL_SHIFT)        
+#define DMA_MDM_RX_CHANNEL_5            (0x00000005 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_6            (0x00000006 << DMA_MDM_RX_CHANNEL_SHIFT)        
+#define DMA_MDM_RX_CHANNEL_7            (0x00000007 << DMA_MDM_RX_CHANNEL_SHIFT)
+
+
+#define DMA_MDM_RX_CHANNEL				DMA_MDM_RX_CHANNEL_6
+
+#define DMA_MDM_RX_SW_SOF_SHIFT         4     /* [4]   */
+#define DMA_MDM_RX_SW_SOF               (0x00000001 << DMA_MDM_RX_SW_SOF_SHIFT)
+
+#define DMA_MDM_RX_DEST_TYPE_SHIFT      3     /* [3]   */
+#define DMA_MDM_RX_DEST_INC             (0x00000001 << DMA_MDM_RX_DEST_TYPE_SHIFT)        
+#define DMA_MDM_RX_DEST_FIX             (0x00000000 << DMA_MDM_RX_DEST_TYPE_SHIFT)
+
+#define DMA_MDM_RX_TD_DEBUG_SHIFT      2     /* [2]   */
+#define DMA_MDM_RX_TD_DEBUG_EN             (0x00000001 << DMA_MDM_RX_TD_DEBUG_SHIFT)        
+#define DMA_MDM_RX_TD_DEBUG_NO             (0x00000000 << DMA_MDM_RX_TD_DEBUG_SHIFT)         
+  
+#define DMA_MDM_RX_INT_INTERVAL_SHIFT       0     /* [1:0]   */
+#define DMA_MDM_RX_INT_1_SLOT               (0x00000000 << DMA_MDM_RX_INT_INTERVAL_SHIFT) 
+#define DMA_MDM_RX_INT_2_SLOT               (0x00000001 << DMA_MDM_RX_INT_INTERVAL_SHIFT)        
+#define DMA_MDM_RX_INT_4_SLOT               (0x00000002 << DMA_MDM_RX_INT_INTERVAL_SHIFT)        
+#define DMA_MDM_RX_INT_8_SLOT               (0x00000003 << DMA_MDM_RX_INT_INTERVAL_SHIFT)       
+
+#define DMA_MDM_RX_ERROR_CLR_SHIFT 25
+#define DMA_MDM_RX_ERROR_CLR_MASK (0x00000001 << DMA_MDM_RX_ERROR_CLR_SHIFT)
+
+/* Bit defines for PacketRecord/HWD_DMA_MDM_RX_PRMx*/              
+/* #define PACKET_REC_VALID_SHIFT		        31  Bit[31]		*/
+#define PACKET_REC_GOOD_SHIFT		        30 /* Bit[30]*/
+#define PACKET_REC_BCMCS_SHIFT		        29 /* Bit[29]*/
+#define PACKET_REC_MAC_IDX_SHIFT	        22 /* Bits[28:22]*/
+#define PACKET_REC_DRC_SHIFT		        18 /* Bit[21:18]*/
+#define PACKET_REC_EP_SIZE_SHIFT	        15 /* Bit[17:15]*/
+#define PACKET_REC_RATE_DET_SHIFT	        14 /* Bit[14]*/ 
+#define PACKET_REC_SLOT_COUNT_SHIFT	        10 /* Bit[13:10]*/
+#define PACKET_REC_TIME_STAMP_SHIFT	        4 /* Bit[9:4]*/
+#define PACKET_REC_CRC_SHIFT		        3 /* Bit[3]*/
+#define PACKET_REC_FIXED_NAK_FIX_SHIFT		2 /* Bit[2]*/  /* no defined by HW, SW defined value*/
+#define PACKET_REC_START_OF_PKT_SHIFT		1 /* Bit[1]*/
+#define PACKET_REC_COMPLETE_SHIFT	        0 /* Bit[0]*/
+
+/* the commented define causes compiler warnings, replaced with a direct bitfield define 
+#define PACKET_REC_VALID_MASK		        (0x00000001 << PACKET_REC_VALID_SHIFT		 )
+*/
+#define PACKET_REC_VALID_MASK				0x80000000
+#define PACKET_REC_GOOD_MASK		        (0x00000001 << PACKET_REC_GOOD_SHIFT		 )
+#define PACKET_REC_BCMCS_MASK		        (0x00000001 << PACKET_REC_BCMCS_SHIFT		 )
+#define PACKET_REC_MAC_IDX_MASK	            (0x0000007F << PACKET_REC_MAC_IDX_SHIFT	     )
+#define PACKET_REC_DRC_MASK		            (0x0000000F << PACKET_REC_DRC_SHIFT		     )
+#define PACKET_REC_EP_SIZE_MASK	            (0x00000007 << PACKET_REC_EP_SIZE_SHIFT	     )
+#define PACKET_REC_RATE_DET_MASK	        (0x00000001 << PACKET_REC_RATE_DET_SHIFT	 )
+#define PACKET_REC_SLOT_COUNT_MASK	        (0x0000000F << PACKET_REC_SLOT_COUNT_SHIFT	 )
+#define PACKET_REC_TIME_STAMP_MASK	        (0x0000003F << PACKET_REC_TIME_STAMP_SHIFT	 )
+#define PACKET_REC_CRC_MASK		            (0x00000001 << PACKET_REC_CRC_SHIFT		     )
+#define PACKET_REC_FIXED_NAK_FIX_MASK       (0x00000001 << PACKET_REC_FIXED_NAK_FIX_SHIFT )  /* no defined by HW, SW defined value*/
+#define PACKET_REC_START_OF_PKT_MASK		(0x00000001 << PACKET_REC_START_OF_PKT_SHIFT  )
+#define PACKET_REC_COMPLETE_MASK	        (0x00000001 << PACKET_REC_COMPLETE_SHIFT	 )
+
+/* HWD_DMA_MDM_RX_STAT */
+#define DMA_RX_ERROR_SHIFT 24
+#define DMA_RX_ERROR_MASK (0xf << DMA_RX_ERROR_SHIFT)
+
+     
+/*************************
+* DMA's view of memory address*
+**************************/
+/* Note HWD_DMA_IRAMx_BASE and HWD_CP_IRAMx_BASE share the same memory*/
+
+/* DO turbo decoder buffer access */
+#define HWD_DO_TD_OUTPUT         0x0B480000  /*DMA TD IF  */
+
+/*************************
+* Defines                *
+**************************/
+
+#define DO_FWD_MAX_PKT_SIZE         640
+#define RX_MDM_INT_INTERVAL_CFG     DMA_MDM_RX_INT_4_SLOT
+#define RX_MDM_INT_INTERVAL         (0x01 << RX_MDM_INT_INTERVAL_CFG) /* in slots*/
+#define RX_MDM_SPY_INTERVAL         4 /* count by INT interval*/
+    
+/*****************************************************************************
+* $Log:  $
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_ims.h b/mcu/interface/protocol/l2_c2k/evdo/do_ims.h
new file mode 100644
index 0000000..9784512
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_ims.h
@@ -0,0 +1,521 @@
+/*****************************************************************************
+*  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) 2009-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name:       do_ims.h
+ * Module:         inc
+ * Description:      definitions of  IMS
+ *
+ * Restrictions:
+ *
+ * Dependencies:
+ *
+ *************************************************************************
+ *************************************************************************
+
+ ************************************************************************/
+#ifndef _DO_IMS_H
+#define _DO_IMS_H
+
+#include "do_Qos.h"
+#include "hlpapi.h"
+#include "iratapi.h"
+
+#ifndef MAX_APN_NUM
+#define MAX_APN_NUM         20
+#endif
+
+#ifndef MAX_APN_NI_LEN
+#define MAX_APN_NI_LEN      100
+#endif
+
+#ifndef MTK_DEV_C2K_IRAT
+#ifndef MAX_PDN_NUM
+#define MAX_PDN_NUM        5
+#endif
+#ifndef MAX_APN_LEN
+#define MAX_APN_LEN        100
+#endif
+#endif /* MTK_DEV_C2K_IRAT */
+#define MAX_ADDR_STR_LEN   72
+#define MAX_SUPPORTED_ADDR_NUM   4
+extern   kal_uint8  HlpMainPdnID;
+
+typedef enum
+{
+  IMS_IDLE,
+  IMS_WFR_PPP_CONN,
+  IMS_WFR_PDN_CONN,
+  IMS_WFR_IPADDR_CONFIG,
+  IMS_WFR_QOS_NEGO,
+  IMS_PPP_CONNECTED,
+  IMS_WFR_PDN_REL,
+  IMS_WFR_SIP_REGISTRATION,
+  IMS_WFR_QOS_REL,
+  IMS_WFR_CALL_SETUP,
+  IMS_CALL_CONNECTED,
+  IMS_WFR_CALL_RELEASE,
+  IMS_WFR_SIP_DEREGISTRATION,
+  IMS_WFR_SESSION_MODIFY,
+  IMS_PDN_CONNECTED
+}IMSStateEnumT;
+
+typedef enum
+{
+  NullReq,
+  DialUpReq,
+  SIPRegReq,
+  AppConnReq,
+  NetwkConnReq,
+  NetwkInitQoSReq,
+  NetwkRelReq,
+  AppRelReq,
+  /*DailUpRelInd,*/
+  PdnRelInd,
+  SessionSetupInd,
+  SessionRelInd,
+  SIPDeregInd,
+  QoSRelInd
+}IMSEventTypeT;
+
+typedef enum
+{
+  OPT_SUCC,
+  OPT_FAIL,
+  OPT_DUPLICATE,
+  OPT_PDN_RENEGO
+}AppOptStatusT;
+
+typedef enum
+{
+  UM_PPP_REL,
+  RM_PPP_REL,
+  SIP_DEREGISTER
+
+}AppReleaseIndT;
+
+typedef  enum
+{
+   APP_DIAL_UP,
+   APP_SIP,
+   APP_VOIP,
+   APP_LTE,
+   MAX_SUPPORTED_APPLICATION
+}AppTypeEnumT;
+
+typedef enum
+{
+   PDN_SUCCESS,
+   PDN_FAIL,
+   PDN_REJECT,
+   PDN_TIMEOUT
+}PdnResultEnumT;
+
+/*this flag is used to set to include additional param in PCO, 1-P-CSCF addr req, the other values are reserved*/
+typedef enum
+{
+  NULL_FLAG,
+  PCSCF_ADDR_REQ,
+}PDPTypeEnumT;
+
+
+typedef struct
+{
+  AppTypeEnumT     Application;
+  kal_uint8            FlowNum;
+  HlpQoSFlowInfoT  FlowInfo[MAX_SUPPORTED_IPFLOW];
+}IMSApplicationResourceT;
+
+typedef struct
+{
+   kal_uint8          PdnId;
+   IPAddrTypeT    AddrType;
+   kal_uint8          AppNum;
+   IMSApplicationResourceT  AppRes[MAX_SUPPORTED_APPLICATION];
+}IMSResourceInfoT;
+
+typedef struct
+{
+  kal_uint8   num;
+  IMSResourceInfoT  ResourceInfo[MAX_PDN_NUM];
+}IMSResourceInfoList;
+
+
+typedef struct
+{
+  IMSResourceInfoList  ResourceList;
+}ImsAppNetwkResourceMsgT;
+
+typedef struct
+{
+  kal_uint8    PdnId;
+  kal_uint8    PdnType;
+  kal_uint8    AttachType;
+  kal_uint32   PDN_Address[5]; /*the last byte is IPv4 Addr*/
+  kal_uint32   IP4DefRouterAddr;
+  PDPTypeEnumT   PDPFlag;
+  kal_uint8    APNLen;
+  kal_uint8    APN[MAX_APN_LEN];
+}ImsAppNetwkConnReqMsgT;
+
+typedef struct
+{
+  AppTypeEnumT   AppType;
+  kal_uint8          DialAddr[MAX_ADDR_STR_LEN];
+  kal_uint8          FlowNum;
+  kal_uint16        PortNum[MAX_SUPPORTED_IPFLOW];
+}ImsAppConnReqMsgT;
+
+typedef  struct
+{
+  kal_uint8         PdnId;
+  AppTypeEnumT  AppType;
+}ImsAppConnRelMsgT;
+
+typedef struct
+{
+  kal_uint8          SIPServerAddr[MAX_ADDR_STR_LEN];
+}ImsAppSIPRegistrationReqMsgT;
+
+typedef struct
+{
+  kal_uint8 Result;
+  kal_uint32  LocalIPAddr;
+  kal_uint32  RemoteIPAddr;
+}ImsCamPppIndT;
+
+typedef struct
+{
+  kal_uint8             PdnId;
+  PdnResultEnumT    Result;
+}ImsPppPdnConnRspMsgT;
+
+typedef struct
+{
+  kal_uint8  PdnId;
+  kal_uint8  RecInd;
+}ImsPppPdnRelIndMsgT;
+
+typedef struct
+{
+  kal_uint8   result;
+  kal_uint32 IP6GlobalAddress[4];
+  kal_uint32 IP6LocalAddress[4];
+  kal_uint32 IP6RouterAddress[4];
+  kal_uint8   PdnId;
+}IMSIpv6ConfgRspMsgT;
+
+typedef struct
+{
+  AppOptStatusT  Status;
+  AppTypeEnumT   AppType;
+  IPAddrTypeT    AddrType;
+  kal_uint32         LocalIPAddr[5];/*the last kal_uint32 is IPv4*/
+  kal_uint32         RemoteIPAddr;
+  DataConnErrCodeT           ErrCode;
+}AppImsSetupRspMsgT;
+
+typedef struct
+{
+  AppOptStatusT  Status;
+  AppTypeEnumT   AppType;
+}AppImsReleaseRspMsgT;
+
+typedef struct
+{
+  kal_uint8  AppType;
+  kal_uint8  Reason;
+}AppImsReleaseIndMsgT;
+
+typedef struct
+{
+  kal_uint8          PdnId;
+  kal_uint8          BearerId;/*use 0xf0|PdnId to indicate default bearer*/
+  AppOptStatusT  Status;
+  IPAddrTypeT    AddrType;
+  kal_uint32         LocalIPAddr[5];/*the last kal_uint32 is Ipv4 addr*/
+  kal_uint8          Pcscf6Num;
+  kal_uint32         PCSCF6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+  kal_uint8          DNS6Num;
+  kal_uint32         DNS6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+  kal_uint8          Pcscf4Num;
+  kal_uint32         PCSCF4Addr[MAX_SUPPORTED_ADDR_NUM];
+  kal_uint8          DNS4Num;
+  kal_uint32         DNS4Addr[MAX_SUPPORTED_ADDR_NUM];
+
+  kal_uint32         RouteAddr;
+  kal_uint8          IP6Interfaceid[8];
+  kal_uint8          SelBearerCtrlMode;
+  DataConnErrCodeT  ErrCode;
+  kal_uint8          ResContainerLen; /*length of Operation reserved PCO container FF00H, 0 means not available*/
+  kal_uint8          ResContainer[255]; /*content of operation reserved PCO container FF00H*/
+#ifdef SPRINT_EXTENSIONS
+  kal_uint32      DNSPriAddr;
+  kal_uint32      DNSSecAddr;
+#endif
+#ifdef MTK_CBP //MTK_DEV_C2K_IRAT
+  kal_uint16         IPv4MTU;
+#endif /* MTK_DEV_C2K_IRAT */
+}AppImsNetwkConnRspMsgT;
+
+typedef struct
+{
+  AppOptStatusT  Status;
+}AppImsNetwkRelRspMsgT;
+
+typedef struct
+{
+  kal_uint8          PdnId;
+  IPAddrTypeT    AddrType;
+  kal_uint8          APNLen;
+  kal_uint8          APN[MAX_APN_LEN];
+  kal_uint8          Num;
+  kal_uint16         ProfileID[MAX_SUPPORTED_IPFLOW];
+  QoMPktFilterContentT   Tft[MAX_SUPPORTED_IPFLOW];
+}AppImsBearerReqMsgT;
+
+typedef enum
+{
+  TYPE_LOCAL_ADDR,
+  TYPE_GLOBAL_ADDR
+}HlpImsIPv6AddrTypeT;
+
+typedef struct
+{
+  kal_uint8  PdnId;
+  kal_uint8  Type;
+  kal_uint8  Ipv6Addr[16];
+}HlpImsSetIPv6AddrMsgT;
+
+typedef enum
+{
+  PDN_AUTH_NULL,
+  PDN_AUTH_PAP,
+  PDN_AUTH_CHAP,
+}HlpImsPdnAuthTypeT;
+
+#ifdef MTK_CBP //MTK_DEV_C2K_IRAT
+typedef PACKED_PREFIX struct {
+  kal_uint8    PdnId;
+  kal_uint8    PdnType;
+  kal_uint8    AttachType;
+  kal_uint32   PDN_Address[5]; /*the last kal_uint32 is IPv4 Addr*/
+  kal_uint32   IP4DefRouterAddr;
+  PDPTypeEnumT   PDPFlag;
+  kal_uint8    APNLen;
+  kal_uint8    APN[MAX_APN_LEN];
+  kal_uint8    AuthType;
+  kal_uint8    UserId[HLP_MAX_USRID_LEN+1];
+  kal_uint8    pwdLen;
+  kal_uint8    PassWord[HLP_MAX_PSWD_LEN];
+  kal_uint8    ModuleName[HLP_MAX_USRID_LEN+1];
+} PACKED_POSTFIX HlpNetConnReqT;
+
+typedef  struct {
+  kal_bool  NeedResetConn; /* Flag to indicate if we have to locally reset the data connection without communicating with the network. */
+}  HlpCssNetRelT;
+
+typedef struct {
+  kal_uint32 Cause; /* Cause to trigger Network Release Request */
+} HlpValNetRelT, HlpValNetwkRelRspMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint8          PdnId;
+  IPAddrTypeT    AddrType;
+  kal_uint8          APNLen;
+  kal_uint8          APN[MAX_APN_LEN];
+  kal_uint8          Num;
+  kal_uint16         ProfileID[MAX_SUPPORTED_IPFLOW];
+  QoMPktFilterContentT   Tft[MAX_SUPPORTED_IPFLOW];
+} PACKED_POSTFIX HlpBearerSetupReqT;
+
+typedef struct
+{
+  kal_uint8   PdnId;
+  kal_uint8   Bearer_Id;
+}HlpBearerDisconnReqT;
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef struct
+{
+   kal_uint8  ApnIdx;
+   kal_uint8  ApnLength;
+   kal_uint8  Apn[MAX_APN_LEN];
+   kal_uint16 InactivityTime; /*unit: minute*/
+}EApnSyncT;
+
+typedef struct
+{
+  kal_bool  ClearAllApnInfo;
+  EApnSyncT EApnSynUserDef;
+}HlpEapnsyncDefineReqMsgT;
+
+typedef struct
+{
+   kal_uint8  Mcc1;
+   kal_uint8  Mcc2;
+   kal_uint8  Mcc3;
+   kal_uint8  Mnc1;
+   kal_uint8  Mnc2;
+   kal_uint8  Mnc3;
+}OpPcoPlmnIdT;
+
+typedef struct
+{
+   kal_bool      ReqV4MTU;
+   kal_uint32    OpPcoId;
+   OpPcoPlmnIdT  OpPcoPlmnId;
+}VzwPcoCfgT;
+
+#define HLP_VZW_PCO_MCCMNC_TO_SEND_LEN 3
+
+typedef  struct
+{
+    kal_bool       MtuReq;
+    kal_uint16     PcoCode;
+    kal_uint8      PcoMccMnc[HLP_VZW_PCO_MCCMNC_TO_SEND_LEN];
+} HlpVzwSpecPco;
+
+typedef enum
+{
+   InitialAttach  = 1,
+   HandOverAttach = 3
+}EHRPDPdnAttachTypeT;
+
+typedef struct
+{
+   IPAddrTypeT   	  AddrType;
+   kal_uint32         LocalIPAddr[5];/*the last uint32 is Ipv4 addr*/
+   kal_uint8          Pcscf6Num;
+   kal_uint32         PCSCF6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+   kal_uint8          DNS6Num;
+   kal_uint32         DNS6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+   kal_uint8          Pcscf4Num;
+   kal_uint32         PCSCF4Addr[MAX_SUPPORTED_ADDR_NUM];
+   kal_uint8          DNS4Num;
+   kal_uint32         DNS4Addr[MAX_SUPPORTED_ADDR_NUM];
+   kal_uint32         RouteAddr;
+   kal_uint8          SelBearerCtrlMode;
+   kal_uint8          ResContainerLen; /*length of Operation reserved PCO container FF00H, 0 means not available*/
+   kal_uint8          ResContainer[255]; /*content of operation reserved PCO container FF00H*/
+   kal_uint32         PriDNSAddr;
+   kal_uint32         SecDNSAddr;
+   kal_uint16         IPv4MTU;
+}NwAppliedParmEHRPDT;
+
+typedef struct
+{
+   kal_uint8              PdnId;
+   IPAddrTypeT            PdnType;
+   EHRPDPdnAttachTypeT    AttachType;
+   kal_uint32             PDN_Address[5]; /*the last uint32 is IPv4 Addr*/
+   kal_uint32             IP4DefRouterAddr;
+   PDPTypeEnumT           PDPFlag;
+   kal_uint8              APNLen;
+   kal_uint8              APN[MAX_APN_LEN];
+   HlpImsPdnAuthTypeT     AuthType;
+   kal_uint8              UserId[HLP_MAX_USRID_LEN+1];
+   kal_uint8              pwdLen;
+   kal_uint8              PassWord[HLP_MAX_PSWD_LEN];
+   VzwPcoCfgT             PCO4Vzw;
+   HlpPppRouteTypeE       RouteType;
+} HlpEhrpdBearerConnReqMsgT;
+
+typedef struct
+{
+   kal_uint8				PdnId;
+   DataConnErrCodeT         ErrCode;
+   NwAppliedParmEHRPDT  	Parm;
+} HlpEhrpdBearerConnCnfMsgT;
+
+typedef  enum {
+   NORMAL_RELEASE,
+   LOCAL_RESET,
+}DataDiscTypeT;
+
+typedef struct {
+   kal_uint8         PdnId;
+   DataDiscTypeT     DiscType;
+}HlpEhrpdBearerDisconReqMsgT;
+
+typedef struct
+{
+   kal_uint8         PdnId;
+   DataDiscTypeT     DiscType;
+}HlpEhrpdBearerDisconCnfMsgT;
+
+typedef struct
+{
+   kal_uint8          PdnId;
+   DataConnErrCodeT   ErrCode;
+   DataDiscCauseT     Cause;
+}HlpEhrpdBearerDisconIndMsgT;
+
+typedef struct
+{
+   kal_uint8                      PdnId;
+   NwAppliedParmEHRPDT            Parm;
+}HlpEhrpdBearerModifyIndMsgT;
+
+
+#ifdef CBP7_EHRPD
+kal_bool HlpImsGeteHRPDAttr(void);
+kal_uint8 HlpImsGetPdnIdByAppType(AppTypeEnumT AppType);
+void HlpImsClearAppInfo(void);
+#endif
+/***********************************************************************
+                                 Structures and Definitions
+***********************************************************************/
+
+
+
+#endif
+/**Log information: \main\CBP80\cbp80_yzhang_scbp10127\1 2012-08-03 06:45:35 GMT yzhang
+** Sprint EHRPD requirement:IPCP,AUTH,DNS Server Addr in PCO of VSNCP**/
+/**Log information: \main\Trophy\Trophy_xding_href22331\1 2013-12-10 07:17:40 GMT xding
+** HREF#22331, ºÏ²¢MMCÏà¹Ø¹¦Äܵ½Trophy baselineÉÏ**/
+/**Log information: \main\Trophy\1 2013-12-10 08:33:07 GMT jzwang
+** href#22331:Merge MMC latest implementation from Qilian branch.**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_msgdefs.h b/mcu/interface/protocol/l2_c2k/evdo/do_msgdefs.h
new file mode 100644
index 0000000..c6daebf
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_msgdefs.h
@@ -0,0 +1,148 @@
+/*****************************************************************************
+*  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 _DO_MSGDEFS_H_
+#define _DO_MSGDEFS_H_
+/*****************************************************************************
+ 
+  FILE NAME:  do_msgdefs.h
+ 
+  DESCRIPTION:
+  
+    This file contains message defines for DO system
+
+*****************************************************************************/
+
+/*-----------------------------------------------------------------------**
+** DO mailbox message ID range, 0x00002000~0x00003FFF                    **
+**Notes: DO mailbox message ID will be unique in the system, differnt to **
+**       1xRTT, which is unique in mailbox.                              **
+**       DO message ID can map to DO SPY ID for automatic mailbox log. **
+**-----------------------------------------------------------------------*/
+#define DO_MBOX_MSG_ID_BASE             0x00002000
+
+/*-----------------------------------------------------------------------**
+** DO mailbox message ID block defines                                   **
+**Notes: DO mailbox message ID will be unique in the system, differnt to **
+**       those in 1xRTT, which are unique in mailbox.                    **
+**       DO message IDs are partitioned into 64 blocks, each block has  **
+**       128 IDs. A mailbox can have multiple ID blocks if needed.       **
+**-----------------------------------------------------------------------*/
+
+/* Mailbox message block start address. 59 blocks used. Total allows 64 blocks */
+/* one command block, one data block and one OtaMsg block for each task */
+/* one command block for each component */ 
+
+#define HSC_MPA_MSGID_START                 0x00002000
+#define HSC_SPDO_MSGID_START                    0x00002040
+#define HSC_SP1X_MSGID_START                    0x00002080
+#define HSC_CMD_MSGID_START                 0x000020C0
+#define SLC_CMD_MSGID_START                 0x00002180
+#define SLC_CMD_MSGID_SMP_START                 0x00002200
+#define SLC_CMD_MSGID_SCP_START                 0x00002280
+#define SLC_CMD_MSGID_AMP_START                 0x00002300
+#define SLC_OTAMSG_MSGID_START                  0x00002380
+#define CLC_CMD_MSGID_START                 0x00002400
+#define CLC_CMD_MSGID_ALMP_START                0x00002480
+#define CLC_CMD_MSGID_INSP_START                0x00002500
+#define CLC_CMD_MSGID_IDP_START                 0x00002580
+#define CLC_CMD_MSGID_CSP_START                 0x00002600
+#define	CLC_CMD_MSGID_OMP_START	                0x00002680
+#define CLC_CMD_MSGID_IRATM_START               0x000026A0
+#define CLC_OTAMSG_MSGID_START                  0x00002700
+#define RMC_CMD_MSGID_START                     0x00002780
+#define RMC_CMD_MSGID_SCH_START                 0x00002800
+#define RMC_CMD_MSGID_FMP_START                 0x00002880
+#define RMC_CMD_MSGID_CSM_START                 0x00002900
+#define RMC_CMD_MSGID_RFC_START                 0x00002980
+#define RMC_CMD_MSGID_RUP_START                 0x00002A00
+#define CLC_CMD_MSGID_RUP_IRATM_START           0x00002A60
+#define RMC_OTAMSG_MSGID_START                  0x00002B00
+#define FCP_CMD_MSGID_START                     0x00002B80
+#define FCP_CMD_MSGID_FTM_START         0x00002C00
+#define FCP_CMD_MSGID_CCM_START         0x00002C80
+#define FCP_CMD_MSGID_PCPF_START        0x00002D00
+#define FCP_CMD_MSGID_DSPR_START        0x00002D80
+#define FCP_CMD_MSGID_VSPF_START        0x00002E00
+#define FCP_CMD_MSGID_AESF_START        0x00002E80
+#define FCP_CMD_MSGID_AUPF_START        0x00002F00
+#define FCP_CMD_MSGID_SECF_START        0x00002F80
+#define FCP_CMD_MSGID_DSAF_START        0x00003000
+#define FCP_CMD_MSGID_CSNR_START        0x00003080
+#define FCP_CMD_MSGID_DPAR_START        0x00003100
+#define FCP_CMD_MSGID_MFPAR_START       0x00003180
+#define FCP_CMD_MSGID_EMFAR_START       0x00003200
+#define FCP_CMD_MSGID_FTAP_START        0x00003280
+#define FCP_DATA_MSGID_START                    0x00003300
+#define FCP_OTAMSG_MSGID_START                  0x00003380
+#define RCP_CMD_MSGID_START                     0x00003400
+#define RCP_CMD_MSGID_ACM_START         0x00003480
+#define RCP_CMD_MSGID_RTM_START         0x00003500
+#define RCP_CMD_MSGID_PCPR_START        0x00003580
+#define RCP_CMD_MSGID_DSPR_START        0x00003600
+#define RCP_CMD_MSGID_VSPR_START        0x00003680
+#define RCP_CMD_MSGID_AESR_START        0x00003700
+#define RCP_CMD_MSGID_AUPR_START        0x00003780
+#define RCP_CMD_MSGID_SECR_START        0x00003800
+#define RCP_CMD_MSGID_DSAR_START        0x00003880
+#define RCP_CMD_MSGID_CSNR_START        0x00003900
+#define RCP_CMD_MSGID_DPAR_START        0x00003980
+#define RCP_CMD_MSGID_MFPAR_START       0x00003A00
+#define RCP_CMD_MSGID_EMFAR_START       0x00003A80
+#define RCP_CMD_MSGID_RTAP_START        0x00003B00
+#define RCP_CMD_MSGID_TXH_START                 0x00003B80
+#define RCP_DATA_MSGID_START                    0x00003C00
+#define RCP_OTAMSG_MSGID_START                  0x00003C80
+#define RCP_TEST_MSGID_START                    0x00003D00
+#define RCP_CMD_MSGID_SL_START                  0x00003D80
+#define     SEC_CMD_MSGID_START                 0x00003E00
+#define     SEC_CMD_MSGID_EAKA_START            0x00003E20
+#define TLS_CMD_MSGID_START                     0x00003F00
+#define	DO_MAILBOX_MSGID_END                    0x00003F00
+
+
+/*-----------------------------------------------------------------------**
+** END                                                                   **
+**-----------------------------------------------------------------------*/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_rcp_msg_struct.h b/mcu/interface/protocol/l2_c2k/evdo/do_rcp_msg_struct.h
new file mode 100644
index 0000000..62eb8a3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_rcp_msg_struct.h
@@ -0,0 +1,1154 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+*
+* FILE NAME   :do_rcp_msg_struct.h
+*
+* DESCRIPTION :
+*
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#ifndef _DO_RCP_MSG_STRUCT_H
+#define _DO_RCP_MSG_STRUCT_H
+#include "par.h"
+#include "rtap.h"
+#include "ftapf.h"
+#include "rtm.h"
+#include "rtmqos.h"
+#include "rcpcsm.h"
+#include "do_rcpapi.h"
+#include "do_slapi.h"
+#include "do_dsaapi.h"
+
+/* MACRO definitions */
+#define MAX_LLD_LOG_DATA_LEN    16
+#define MAX_LLD_LOG_NUM         10
+
+/* EvDO RCP Message */
+/* RCP_DATA_MAILBOX */
+
+/* UT_RCP_DSAF_FWD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+    kal_uint8 data[CPBUF_SIZE_FWD];  /* data for the cpbuffer */
+} ut_rcp_dsaf_fwd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16   data_size;
+    kal_uint16   lld_num;
+    struct
+    {
+        kal_uint16 data_len;
+        kal_uint8  data[MAX_LLD_LOG_DATA_LEN]; /* MAC data of each LLD for UT check */
+    }lld_data[MAX_LLD_LOG_NUM];
+} ut_rcp_dma_data_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmCfgDataT msg;
+} ut_rcp_rtm_commit_msg_struct;
+
+#ifdef MTK_PLT_ON_PC_UT
+/* UT_PAR_DSA_FWD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+    kal_uint8 data[CPBUF_SIZE_FWD];  /* data for the cpbuffer */
+} ut_par_dsa_fwd_msg_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 acm_subtype;
+    AcmAttributesT acmAttribute;
+} ut_rcp_acm_commit_msg_struct;
+
+/* UT_PAR_QOM_SEND_QOSREQUEST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 data[CPBUF_SIZE_REV];
+} ut_par_qom_send_qosrequest_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  revMacId;
+} rcp_tst_phy_traffic_acked_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8  revMacId;
+} rcp_tst_phy_traffic_missed_struct;
+
+/*MSG_ID_RCP_TST_PKT_SENT*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   macid;
+} rcp_tst_pkt_sent_msg_struct;
+
+/*MSG_ID_RCP_TST_PKT_NOT_SENT*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   macid;
+} rcp_tst_pkt_not_sent_msg_struct;
+
+/* MSG_ID_RCP_TST_CREATE_MAC_FLOW_LIST*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   macid;
+    kal_uint8   streamId;
+    kal_uint8   SSid;
+    kal_uint8   stype;
+} rcp_tst_create_mac_flow_list_msg_struct;
+
+/* RCP_TST_MAC_FLOW_LIST_INTEGRITY*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_tst_mac_flow_list_integrity_msg_struct;
+
+/* MSG_ID_RCP_TST_COMMIT_APP_FN_PTRS*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_tst_commit_app_fn_ptrs_msg_struct;
+
+/* MSG_ID_RCP_TST_ADD_MSG_TO_QUE*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   appsubtype;
+    kal_uint8   size;
+    kal_uint8   prio;
+} rcp_tst_add_msg_to_que_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_tst_print_app_ques_msg_struct;
+
+/* MSG_ID_RCP_TST_GRANT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   NumFlowsRcvingThisGrant;
+    kal_uint8   grantByteSize[4];
+} rcp_tst_grant_msg_struct;
+
+
+/* MSG_ID_RCP_TST_PRINT_ASSEMBLED_PKT_LIST*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_tst_print_assembled_pkt_list_struct;
+
+
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    StreamConfigAttribT msg;
+} ut_stream_commit_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 subtype;
+} ut_stream1_commit_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16 subtype;
+} ut_stream2_commit_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParServiceConfigDataT serviceConfigData;
+} ut_stream3_commit_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint16        signalId;
+    kal_uint32        action;
+    kal_uint16        slot;
+} ut_acm_log_out_signal_msg_struct;
+
+
+/* used to set mac bits */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmTestMbpMacBitsOutputMsgT mbpMacBitsOutput;
+} ut_mbp_mac_bits_output_msg_struct;
+
+/* used to set do systime */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SysTimeFullT sysTimeFull;
+} ut_set_stdo_msg_struct;
+
+/* DSAF_FWD_MSG, only for from SNP to RCP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+} dsaf_fwd_msg_struct;
+
+
+/* RCP_ADJ_UPDATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpAdjUpdateT msg;
+} rcp_adj_update_msg_struct;
+
+
+/* RCP_CMD_MAILBOX */
+/* RCP_RMC_RFREADY_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_rmc_rfready_msg_struct;
+
+/* RCP_RMC_RFRELEASE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_rmc_rfrelease_msg_struct;
+
+/* MSG_ID_RCP_CSM_SECTOR_INFO_UPDATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpUpdateSectorInfoMsg msg;
+} rcp_csm_sector_info_update_msg_struct;
+
+/* MSG_ID_RCP_CSM_SECTOR_C2I_UPDATE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpUpdateC2IMsg msg;
+} rcp_rmc_sector_c2i_update_msg_struct;
+
+/*RCP_CSM_ACTIVE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpCsmActiveMsgT msg;
+} rcp_csm_active_msg_struct;
+
+/*RCP_CSM_DEACTIVE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_deactive_msg_struct;
+
+/*RCP_CSM_SECTOR_INFO_REQ_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_sector_info_req_struct;
+
+/*RCP_CSM_DONE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_done_msg_struct;
+
+
+/*RCP_CSM_FORCE_DEDICATE_COVER_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_force_dedicate_cover_struct;
+
+/*RCP_CSM_HSC_PREEMPT_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpCsmHscStopTxMsgT msg;
+} rcp_csm_hsc_preempt_struct;
+
+/*RCP_CSM_HSC_RESUME_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_hsc_resume_struct;
+
+/*RCP_CSM_TX_FREEZE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_tx_freeze_struct;
+
+/*RCP_CSM_TX_UNFREEZE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_csm_tx_unfreeze_struct;
+
+/*RCP_CSM_TCA_IND_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpCsmTcaIndMsgT msg;
+} rcp_csm_tca_ind_msg_struct;
+
+/*MSG_ID_RCP_CSM_CELLSWRDY_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1CsmRdyMsgT msg;
+} rcp_csm_cellswrdy_msg_struct;
+
+
+/*MSG_ID_RCP_CSM_C2I_RD_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1CsmC2iRdMsgT msg;
+} rcp_csm_c2i_rd_msg_struct;
+
+
+/*RCP_SH_RFREADY_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_sh_rfready_msg_struct;
+
+/*RCP_SH_RFRELEASE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rcp_sh_rfrelease_msg_struct;
+
+
+/* RCP_AMP_ATILIST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmAmpATIListMsgT msg;
+} rcp_amp_atilist_msg_struct;
+
+/* RTM_TXOFF_INIT_BUFFER_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmTxOffInitBufferMsgT msg;  /* rtm.h */
+} rtm_txoff_init_buffer_msg_struct;
+
+/* MSG_ID_RTM_AMP_TXATI_UPDATE_MSG*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmAmpATIListMsgT msg;
+} rtm_amp_txati_update_msg_struct;
+
+
+/* ACM_RUP_ACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmRupActivateMsgT msg;
+} acm_rup_activate_msg_struct;
+
+/* ACM_RUP_DEACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} acm_rup_deactivate_msg_struct;
+
+/* ACM_DSA_ADD_BYTE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} acm_dsa_add_byte_msg_struct;
+
+/* ACM_OMP_SECTORPARMS_UPDATED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmOmpUpdatedMsgT msg;
+} acm_omp_sectorparms_updated_msg_struct;
+
+/* ACM_TIMER_EXPIRED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} acm_timer_expired_msg_struct;
+
+/* ACM_RUP_ACCESS_HO_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} acm_rup_access_ho_ind_msg_struct;
+
+/* ACM_PROT_STOP_ACCESS_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmProtStopAccessMsgT msg;
+} acm_prot_stop_access_msg_struct;
+
+/* ACM_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} acm_scp_reconfigured_msg_struct;
+
+/* ACM_SCP_COMMITTED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} acm_scp_committed_msg_struct;
+
+/* RTM_RUP_ACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtm_rup_activate_msg_struct;
+
+/* RTM_RUP_DEACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtm_rup_deactivate_msg_struct;
+
+/* RTM_RUP_TCHASSIGN_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmRupTchAssignMsgT msg;
+} rtm_rup_tchassign_msg_struct;
+
+/* RTM_OMP_SECTORPARMS_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmOmpSectorParmsMsgT msg;
+} rtm_omp_sectorparms_msg_struct;
+
+/* RTM_FTM_CFG_DATA_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmFtmCfgDataMsgT msg;
+} rtm_ftm_cfg_data_msg_struct;
+
+/* RTM_SMP_SESSION_OPEN_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmSmpSessionOpenMsgT msg;
+} rtm_smp_session_open_msg_struct;
+
+/* RTM_CSS_SEARCH_END_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmCssSearchEndMsgT msg;
+} rtm_css_search_end_msg_struct;
+
+
+/* RTM_RTAP_MODE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmRtapModeMsgT msg;
+} rtm_rtap_mode_msg_struct;
+
+/* RTM_TMR_EXPIRED_MSG */
+
+/* RMC_RCP_RTAP_MODE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool RtapModeEn;
+} rtm_rmc_rtap_cfg_msg_struct;
+
+/* RMC_FCP_FTAP_MODE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool FtapModeEn;
+} fcp_rmc_ftapr_cfg_msg_struct;
+
+
+/* RTM_TMR_EXPIRED_MSG */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmTmrExpiredMsgT msg;
+} rtm_tmr_expired_msg_struct;
+
+/* RTM_DRC_TX_CONTROL_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtmDrcTxControlMsgT msg;
+} rtm_drc_tx_control_msg_struct;
+
+/* RTM_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtm_scp_reconfigured_msg_struct;
+
+/* RTM_SCP_COMMITTED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtm_scp_committed_msg_struct;
+
+/* SPY_RTM3_T2P_STATE_MSG */
+typedef struct
+{
+	LOCAL_PARA_HDR
+	RtmQoSSpyDataT RtmQoSSpyData[RTM_QOS_SPY_SUBFR_NO];
+} spy_rtm3_t2p_state_msg_struct;
+
+/* UT_RTM_SWEEP_MODE_ACTIVATE_MSG */
+/* UT_DSAR_REV_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ut_rtm_sweep_mode_active_msg_struct;
+
+/* UT_RTM_SWEEP_MODE_DEACTIVATE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ut_rtm_sweep_mode_deactive_msg_struct;
+
+/* UT_DSAR_REV_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaRevMsgT msg;
+    /* kal_uint8 dataLen; */
+    kal_uint8 data[CPBUF_SIZE_SIG];  /* data for the cpbuffer */
+} ut_dsar_rev_msg_struct;
+
+/* DSAR_REV_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaRevMsgT msg;
+} dsar_rev_msg_struct;
+
+/* DSAR_REV_MULTI_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaRevMultiMsgT multiMsg;
+} dsar_rev_multi_msg_struct;
+
+/* DSAR_TX_STATUS_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarTxStatusMsgT msg;
+} dsar_tx_status_msg_struct;
+
+/* DSAR_DSAF_ACK_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarAckMsgInfoT msg;
+} dsar_dsaf_ack_msg_struct;
+
+/* DSAR_DSAF_ACK_REQ_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarAckReqMsgInfoT msg;
+} dsar_dsaf_ack_req_msg_struct;
+
+/* DSAR_DSAF_RESET_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarResetMsgT msg;
+} dsar_dsaf_reset_msg_struct;
+
+/* DSAR_RUP_CONNECTION_INIT_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_rup_connection_init_msg_struct;
+
+/* DSAR_RTM_LINK_ACQ_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_rtm_link_acq_msg_struct;
+
+/* DSAR_TIME_EXP_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarTimeExpMsgT msg;
+} dsar_time_exp_msg_struct;
+
+/* DSAR_SENT_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarTransmitRespMsgT msg;
+} dsar_sent_ind_msg_struct;
+
+/* DSAR_NOT_SENT_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarTransmitRespMsgT msg;
+} dsar_not_sent_ind_msg_struct;
+
+/* DSAR_ALMP_CONNECTION_CLOSED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_almp_connection_closed_msg_struct;
+
+/* DSAR_ALMP_DEL_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarDelMsgCmdMsgT msg;
+} dsar_almp_del_msg_struct;
+
+/* DSAR_RUP_DEL_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarDelMsgCmdMsgT msg;
+} dsar_rup_del_msg_struct;
+
+/* DSAR_ALMP_POWER_DOWN_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_almp_power_down_msg_struct;
+
+/* DSAR_AMP_RESET_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsarAmpResetMsgCmdMsgT msg;
+} dsar_amp_reset_msg_struct;
+
+/* DSAR_RUP_IDLE_HHO_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_rup_idle_hho_msg_struct;
+
+/* DSAR_CSS_CHAN_SCAN_START_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_css_chan_scan_start_msg_struct;
+
+/* DSAR_CSS_CHAN_SCAN_DONE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_css_chan_scan_done_msg_struct;
+
+/* DSAR_IDP_TX_AVAIL_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} dsar_idp_tx_avail_msg_struct;
+
+/* PAR_QOM_RESERVATION_REQ_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParRlpReservationOnOffMsgT msg;
+} par_qom_reservation_req_msg_struct;
+
+/* PAR_QOM_SEND_QOSREQUEST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParSnKKQosReqMsgT msg;
+} par_qom_send_qosrequest_msg_struct;
+
+/* PAR_LUP_UNSOLICITED_CFG_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    LUPUnsolicitedCfgMsgT msg;
+} par_lup_unsolicited_cfg_msg_struct;
+
+/* PAR_HLP_CLEANUP_QUEUE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} paf_hlp_stop_svcstrm_xoff_msg_struct;
+
+/* PAR_HLP_CLEANUP_QUEUE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} par_hlp_cleanup_queue_msg_struct;
+
+/* RTAP_ALMP_CONN_OPENED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtap_almp_conn_opened_msg_struct;
+
+/* RTAP_ALMP_CONN_RELEASED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtap_almp_conn_released_msg_struct;
+
+/* RTAP_ALMP_CONN_CLOSED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtap_almp_conn_closed_msg_struct;
+
+/* RTAP_ALMP_CONN_FAILED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rtap_almp_conn_failed_msg_struct;
+
+/*RTAP_TIMER_EXPIRED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtapTimerExpiredMsgT msg;
+} rtap_timer_expired_msg_struct;
+
+
+/* RTAP_BURSTTIMER_EXPIRED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RtapTimerExpiredMsgT msg;
+} rtap_bursttimer_expired_msg_struct;
+
+/* RTAP_DSA_FWD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+} rtap_dsa_fwd_msg_struct;
+
+/* STR_SCP_COMMITTED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str_scp_committed_msg_struct;
+
+/* STR1_SCP_COMMITTED_MSG */
+/* STR_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str1_scp_committed_msg_struct;
+
+/* STR2_SCP_COMMITTED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str2_scp_committed_msg_struct;
+
+/* STR3_SCP_COMMITTED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str3_scp_committed_msg_struct;
+
+/* STR_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str_scp_reconfigured_msg_struct;
+
+/* STR1_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str1_scp_reconfigured_msg_struct;
+
+/* STR2_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str2_scp_reconfigured_msg_struct;
+
+/* STR3_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} str3_scp_reconfigured_msg_struct;
+
+/* RCP_APP_TO_NEG_SET_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DoStreamConfigurationSetMsgT msg;
+} rcp_app_to_neg_set_msg_struct;
+
+/* AUTH_SHA_KEP_RPCAUTHKEY_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AuthKepRPCAuthKeyMsgT msg;
+} auth_sha_kep_rpcauthkey_msg_struct;
+
+
+/* AUTH_UPDATE_SECTORID_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AuthOmpSectorIDMsgT msg;
+} auth_update_sectorid_msg_struct;
+
+
+/* FTAPR_FTAPF_LOOPBACK_STATUS_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtaprLoopBackStatusMsgT msg;
+} ftapr_ftapf_loopback_status_msg_struct;
+
+/* FTAPR_FTAPF_TEST_PKT_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    FtaprFcpTestPktMsgT msg;
+} ftapr_ftapf_test_pkt_msg_struct;
+
+/* FTAPR_RTM_STATUS_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} ftapr_rtm_status_msg_struct;
+
+/* PAR_DSA_FWD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+} par_dsa_fwd_msg_struct;
+
+/* UT_PAR_HLP_DATA_TX_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParHlpDataTxMsgT msg;
+    kal_uint8 data[MAX_RLP_HLP_PKT_NUM][CPBUF_SIZE_REV];  /* data for cpbuffer */
+} ut_par_hlp_data_tx_msg_struct;
+
+
+/* PAR_PAF_FLOWCTL_STATUS_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParPafFlowCtlStatMsgT msg;
+} par_paf_flowctl_status_msg_struct;
+
+/* PAR_PAF_RLP_RESET_REQ_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParPafRlpResetReqMsgT msg;
+} par_paf_rlp_reset_req_msg_struct;
+
+
+/* PAR_PAF_RSP_STATUS_MSG */
+/* PAR_IDP_CONN_OPENED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParPafRspStatusMsgT msg;
+} par_paf_rsp_status_msg_struct;
+
+
+/* PAR_IDP_CONN_OPENED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} par_idp_conn_opened_msg_struct;
+
+/* PAR_CSP_CONN_CLOSE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} par_csp_conn_close_msg_struct;
+
+/* PAR_HLP_DOS_TX_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParHlpDOSTxMsgT msg;
+} par_hlp_dos_tx_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParTExpireMsgT msg;
+} par_access_timer_expire_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParTExpireMsgT msg;
+} par_service_timer_expire_msg_struct;
+
+
+/* PAR_RESERVATION_TRANSITION_TIMER_EXPIRE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ParTExpireMsgT msg;
+} par_reservation_transition_timer_expire_msg_struct;
+
+/* PAR_GAUP_TM_EXPIRE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} par_gaup_tm_expire_msg_struct;
+
+
+
+/* AUTH_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} auth_scp_reconfigured_msg_struct;
+
+/* AUTH_SCP_COMMITED_MSG */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} auth_scp_commited_msg_struct;
+
+/* SEC_SCP_COMMITTED_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} sec_scp_commited_msg_struct;
+
+
+
+/* 93 adaptive interface */
+typedef struct
+{
+    kal_uint8       length;
+    kal_uint8       data[MAX_LLD_LOG_DATA_LEN]; /* MAC data of each LLD for UT check */
+} data_node_struct;
+
+/* 93 adaptive interface */
+typedef struct
+{
+    kal_uint16          data_size;
+    kal_uint16          node_num;
+    data_node_struct    data_node[MAX_LLD_LOG_NUM];/* Each node for head or pkt content */
+} ut_rev_data_req_info_struct;
+
+/* Access */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1AccessPreambleT msg;
+} ut_acm_preamble_start_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1AccessCapsuleT msg;
+} ut_acm_data_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool immAction;
+} ut_acm_trans_stop_msg_struct;
+
+/* Traffic */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1TrafficParamInitT msg;
+} ut_rtm_param_init_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1TrafficParamReCfgT msg;
+} ut_rtm_param_recfg_msg_struct;
+
+typedef struct
+{
+    Evl1TrafficTransStartT trafficTransStart;
+    kal_bool               isSlientExit;
+} ut_rtm_traffic_trans_start_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ut_rtm_traffic_trans_start_info_struct msg;
+} ut_rtm_trans_start_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Evl1TrafficDataTransT       trafficDataInfo;
+    ut_rev_data_req_info_struct dataContent;
+} ut_rtm_data_req_msg_struct;
+
+typedef struct
+{
+    kal_bool                    immAction;
+    Evl1TxTrafficReleaseTypeT   releaseType;
+} ut_rtm_trans_stop_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ut_rtm_trans_stop_info_struct msg;
+} ut_rtm_trans_stop_msg_struct;
+
+
+typedef struct {
+   kal_uint8    *DataP;
+   kal_uint32   NumBytes;
+} GatherItemT;
+
+typedef struct {
+  ProtocolTypeE protocolType;
+  kal_uint8 subType;
+  kal_uint8 msgId;
+  GatherItemT ListP[10];
+  kal_uint8 NumSeg;
+} ota_msg_info_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ota_msg_info_struct msg;
+} dsar_ota_msg_struct;
+
+typedef struct
+{
+    CpBufferT* freeCpBufList[MAX_RCP_RI_CPBUF_FREE_NUM];
+} cp_buf_free_list_struct;
+
+/* MSG_ID_RCP_CP_BUF_LIST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    cp_buf_free_list_struct  msg;
+} rcp_cp_buf_list_msg_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpCsmHscStopTxMsgT msg;
+} rcp_csm_hsc_preempt_msg_struct;
+
+typedef struct
+{
+    kal_uint16 pktSize;
+    kal_uint8 *dataPtr;
+} RcpPktInfoMsgT;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpPktInfoMsgT msg;
+} rcp_pkt_info_msg_struct;
+
+
+#define MAX_UTS_RCP_RI_MSG_LENGTH 504
+typedef struct
+{
+    kal_uint32 msg_id;
+    kal_uint16 length;
+    CpBufferT* uts_msg_content_ptr;
+} uts_msg_content_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    uts_msg_content_struct msg;
+} uts_rcp_ri_msg_to_rcp_msg_struct;
+
+/* MSG_ID_ELT_ACM_SUPERVISION_EXPIRED_CMD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+} elt_acm_supervision_expired_cmd_msg_struct;
+
+/*  end of rcp task msg */
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_rcpapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_rcpapi.h
new file mode 100644
index 0000000..50b1c51
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_rcpapi.h
@@ -0,0 +1,1801 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_rcpapi.h
+*
+* DESCRIPTION : API definition for RCP (Reverse Channel Processing) task.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_RCPAPI_H_
+#define _DO_RCPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "cpbuf.h"
+#include "hlpapi.h"
+#include "do_rmcapi.h"
+#include "kal_public_defs.h"
+#include "evl1rcpapi.h"
+#include "rcptxagc.h"
+#include "slc_nvram.h"
+#include "dspmapi.h"
+#include "cl1tsteltif.h"
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_STREAM_NUM          4
+#define MAX_NUM_DATAPKT_REC     120
+#define MAX_NUM_REVMACPKT_REC   10
+#define MAX_NUM_TXDMALLD_REC    120
+/* Fenix: Changed from 4 to 6, since Ericsson supports 5. */
+#define MAX_RLP_HLP_PKT_NUM       6
+
+#define MAX_FORMAT_B_SESSION_LAYER_LEN   255
+#define INVALID_REVMACID        0xFF
+#define MAX_REVMACID            0xFE
+
+#define INVALID_REVMACFLOWID        0xFF
+
+#define CONNLAYER_FORMATA       0
+#define CONNLAYER_FORMATB       1
+
+#define TXHW_ACCESS_CHAN        0
+#define TXHW_REV_TRAFFIC_CHAN   1
+
+#define MAX_RCP_RI_CPBUF_FREE_NUM 30
+
+/* SysTime Hw */
+#define ST_TX_MIL_0_MASK     0x0000FFFF
+#define ST_TX_MIL_1_MASK     0xFFFF0000
+#define ST_TX_MIL_1_SHIFT    16
+
+/* Macros used for Tx AGC Clipper threshold settings (should be the same as
+** clipper settings sent down to the DSPM for 1xRTT operations */
+#define RCP_REV_CLIP_MAX_LEVEL         0x03FF   /* <10,2,u> = 3.996 - effectively disables reverse clipping */
+#define RCP_REV_CLIP_THRESHOLD_LIMIT   0x007F   /* <7,0,u>  = i.e., fractional ratio - no value greater than one */
+#define RCP_REV_CLIP_DEFAULT           0x02c0   /* same as SYS_DSPM_REV_REVMIXSIGPARM3_DEFAULT */
+
+#define RCP_REV_DELAY_LOAD_WINDOW_DEFAULT           0x3C /* delay loading window value: 60 chips */
+#define CHIP_OFFSET_BETWEEN_ON_AIR_AND_SLOT_INT     13
+/** Define DDPC control mode */
+#define DDPC_BYPASS           0   //DDPC disable in normal mode
+#define DDPC_OL_AB            1   //DDPC open loop,Delta using Absolute algorithm in normal mode
+#define DDPC_OL_REL           2   //DDPC open loop,Delta using Relative algorithm in normal mode
+#define DDPC_CL_AB            3   //DDPC closed loop,Delta using Absolute algorithm in normal mode
+#define DDPC_CL_REL           4   //DDPC closed loop,Delta using Relative algorithm in normal mode
+#define DDPC_TST_ENABLE       6  //DDPC loop enable, used in calibration mode, couplerLoss calibration
+#define DDPC_CAL_ENABLE       7  //DDPC loop diable, used in calibration mode, PA calibration
+#define RCP_MAX_NUM_PILOTS   6
+#define RCP_MAX_NUM_PCGS     6
+#define RCP_TX_DATA_ACK_ARRAY_SIZE  1 //RCP TX data buffer ACK arrary size
+#define RCP_TX_DATA_NAK_ARRAY_SIZE  3 //RCP TX data buffer NAK arrary size
+#define RCP_TX_DATA_ARRAY_SIZE      (RCP_TX_DATA_ACK_ARRAY_SIZE + RCP_TX_DATA_NAK_ARRAY_SIZE)
+#define RCP_TX_DATA_BUFF_SIZE   1536//add one byte for 2 bits MAC trailer, and 128 alignment as well
+
+
+extern kal_bool bAcmSupervisionExpiredTest;
+#define ACM_SUPERVISION_FAIL_TEST (bAcmSupervisionExpiredTest == KAL_TRUE)
+
+/*----------------------------------------------------------------------------
+ Mailbox IDs
+----------------------------------------------------------------------------*/
+#define RCP_CMD_MAILBOX         EXE_MAILBOX_1_ID
+#define RCP_DATA_MAILBOX        EXE_MAILBOX_2_ID
+#define RCP_OTAMSG_MAILBOX      EXE_MAILBOX_3_ID
+#define RCP_TEST_MAILBOX        EXE_MAILBOX_4_ID
+
+/** PA mode enumeration */
+typedef enum
+{
+   HWD_PA_MODE_HIGH = 0,
+   HWD_PA_MODE_MID  = 1,
+   HWD_PA_MODE_LOW  = 2,
+   HWD_PA_MODE_NUM
+}HwdRfPaModeEnumT;
+
+
+#ifdef PKT_SIM
+/* temp solution for task ID */
+typedef enum   /*_Task_ID_define*/
+{
+   EXE_HSC_ID_23     = 23,  /* DO defines. */
+   EXE_SLC_ID_24     = 24,
+   EXE_CLC_ID_25     = 25,
+   EXE_RMC_ID_26     = 26,  /* DO defines */
+   EXE_FCP_ID_27     = 27,
+   EXE_RCP_ID_28     = 28,
+   EXE_NUM_TASKS_end
+
+}ExeTaskIdT_PktSim;
+#endif
+
+/* Enumeration for ACMAC */
+typedef enum
+{
+   DEFAULT_ACMAC = 0,
+   ENHANCED_ACMAC
+} AcmacSubtypeE;
+
+/* define the timer ID for timers in ACMAC */
+typedef enum
+{
+  ACM_RTOS_TRANSMISSION_FAIL_TIMER,
+  ACM_RTOS_AP_SUPERVISION_TIMER,
+  ACM_RTOS_TRANSACTION_TIMER,
+  ACM_RTOS_TRANSACTION_TIMER1,
+  ACM_RTOS_TRANSACTION_TIMER2,
+  ACM_RTOS_TRANSACTION_TIMER3,
+  NUM_ACMTMRs
+} AcmTimerIdT;
+
+typedef enum
+{
+   ACM_CTL_INACTIVE_ST,
+   ACM_CTL_IDLE_ST,
+   ACM_CTL_PARMUPD_ST,
+   ACM_CTL_ACTXING_ST
+} AcmCtlStateE;
+
+/* CTL SM events */
+typedef enum {
+   ACM_START_ACCESS_EV,
+   ACM_ACCESS_PARMS_UPD_EV,
+   ACM_OMP_SYS_PARMS_UPD_EV,
+   ACM_ACTIVATE_EV,
+   ACM_DEACTIVATE_EV,
+   ACM_RUP_ACCESS_HO_EV,
+   ACM_RMC_RF_READY_EV,
+   ACM_RMC_RF_RELEASE_EV,
+   ACM_ACK_EV,
+   ACM_STOP_TRANS_EV
+} AcmCtlEventE;
+
+/* ACMAC RB state machine states and handler table */
+typedef enum
+{
+   ACM_RB_INACTIVE_ST,
+   ACM_RB_INTERSEQ_ST,
+   ACM_RB_PROBING_ST,
+   ACM_RB_INTERPROBE_ST
+} AcmRbStateE;
+
+/* RB SM events */
+typedef enum {
+   ACM_RB_ACTIVATE_EV,
+   ACM_RB_DEACTIVATE_EV,
+   ACM_RB_RF_RELEASE_EV,
+   ACM_RB_RF_READY_EV,
+   ACM_RB_HANDOFF_EV,
+   ACM_RB_PREAMBLE_SIG_EV,
+   ACM_RB_DATA_SIG_EV,
+   ACM_RB_INTER_SEQ_BACKOFF_TIMEOUT_EV,
+   ACM_RB_TEST_DELAY_TIMEOUT_EV,
+   ACM_TXOFF_CB_EV
+} AcmRbEventE;
+
+typedef enum
+{
+    RTM_INACTIVE = 0,
+    RTM_INACTIVE_NORF,
+    RTM_SETUP,
+    RTM_SETUP_NORF,
+    RTM_OPEN,
+    RTM_OPEN_NORF,
+    RTM_SETUP_SILENT,
+    RTM_SETUP_NORF_SILENT,
+    RTM_OPEN_SILENT,
+    RTM_OPEN_NORF_SILENT
+} RtmRmmStateT;
+
+typedef enum
+{
+    /* TX_SETTLE_DOWN_ST means TX is already at opened state or closed state
+       and doesn't plan to open or close */
+    TX_SETTLE_DOWN_ST = 0,
+    TXPATH_WAIT_FOR_SET_ST,
+    TXPATH_WAIT_FOR_RELEASE_ST,
+    TX_INVALID_ST
+} RtmTxStateT;
+
+typedef enum
+{
+    RTM_TX_PATH_RELEASE_EV = 0,
+    //RTM_TX_PATH_SET_EV,
+    RTM_RUP_ACTIVATE_EV,
+    RTM_RUP_DEACTIVATE_EV,
+    //RTM_TXAGC_OFF_EV,
+    RTM_RF_RELEASE_EV,
+    RTM_RF_READY_EV,
+    RTM_RTC_ACK_EV,
+    RTM_SILENT_ENTRY_EV,
+    RTM_SILENT_EXIT_EV,
+    RTM_RCP_TASK_SIG_EV,
+    RTM_INVALID_EV
+} RtmEvent;
+
+/*----------------------------------------------------------------------------
+     OTA Message IDs, for RCP_OTAMSG_MAILBOX
+----------------------------------------------------------------------------*/
+typedef enum /*_Message_ID_define*/
+{
+   /* ACM_OTA_SIGNALING_MSG =  RCP_OTAMSG_MSGID_START, */
+   ACM_ACK_MSG,                       /* 0x00 */
+   ACM_ACCESS_PARMS_MSG,    /* 0x01 */
+   ACM_SCP_CONFIG_REQ_MSG           = 0x50,
+   ACM_SCP_CONFIG_RSP_MSG           = 0x51,
+   ACM_ATTRIBUTE_UPDATE_REQUEST_MSG = 0x52,
+   ACM_ATTRIBUTE_UPDATE_ACCEPT_MSG,
+   ACM_ATTRIBUTE_UPDATE_REJECT_MSG,
+
+   Acm_OTA_MSG_MSGID_LAST
+} AcmOTAMsgIdT;
+
+
+/*----------------------------------------------------------------------------
+     RCP Test Message IDs, for RCP_TEST_MAILBOX
+----------------------------------------------------------------------------*/
+typedef enum /*_Message_ID_define*/
+{
+    RCP_TST_TX_CDMA_CTRL_MSG,
+
+    /* RTM Test Msgs */
+    RTM_TEST_CFG_MSG,
+    RTM_TEST_MBPMACBITSOUTPUT_MSG,
+    RTM_TEST_MFCGRANTCAL23_MSG,
+    RTM_TEST_PARM_GET_MSG,
+    RTM_TEST_PARM_SET_MSG,
+    RTM_TEST_TXCHANSTAT_GET_MSG,
+
+    /* ACM Test Msgs */
+    ACM_TEST_CFG_MSG,
+    ACM_TEST_ACACK_MSG,
+
+    /* PHY CHAN Test Msgs */
+    RCP_PHY_ACH_TEST_MSG,
+    RCP_PHY_TCH0_TEST_MSG,
+    RCP_PHY_TCH2_TEST_MSG,
+    RCP_TXDMA_TEST_CFG_MSG,
+    RCP_TXDMA_TEST_START_MSG,
+    RCP_TXDMA_TEST_READ_MSG,
+    RCP_PHY_TCH_TEST_DATA_WRITE_MSG,
+    RCP_PACKET_PERF_STAT_RESET_MSG,
+    RCP_RTM_QOS_TXMODE_SELECTION_MSG,
+
+    /* CpBuf Test Msgs */
+    SYS_CPBUF_TEST_GET_CMD_MSG,
+    SYS_CPBUF_TEST_FREE_CMD_MSG,
+    SYS_CPBUF_TEST_STATS_CMD_MSG,
+
+    TAP_TEST_INIT_MSG,
+    TAP_CONN_CLOSE_MSG,
+
+    FTAP_TEST_INIT_MSG,
+    FTAP_CONN_CLOSE_MSG,
+
+    ETS_SET_STRAPP_MSG,
+    ETS_MFPA_SET_SIMPLE_ATTR,
+    ETS_MFPA_SET_FlowNNIdentification_Attr,
+    ETS_MFPA_SET_FlowNNReservation_Attr,
+    ETS_MFPA_SET_FlowNNTimers_Attr,
+    ETS_MFPA_SET_SupportedHLProtocols_Attr,
+    ETS_MFPA_SET_ATSupportedQoSProfiles_Attr,
+    ETS_MFPA_READ_SUBSCRIB_QOS_PROFILE,
+    ETS_MFPA_IPFlow_Request_Attr,
+    ETS_MFPA_SET_CURLABEL_Attr,
+    ETS_MFPA_Delete_Flow,
+    ETS_MFPA_PPP_OPEN,
+    ETS_MFPA_RLP_STAT_RESET_MSG,
+    ETS_MFPA_RLP_STAT_PEEK_MSG,
+    ETS_MFPA_SEND_DOS_MSG,
+
+    ETS_DSAR_MSG_BLK_MSG,
+    RCP_TEST_MSG_MSGID_LAST
+
+} RcpTestMsgT;
+
+/* DecodeMessageResult*/
+typedef enum
+{
+   RCP_DECODE_MSG_OK,
+   RCP_DECODE_MSG_DUP,  /*duplicate message, discard but not print error*/
+   RCP_DECODE_MSG_ERROR
+} RcpDecodeMsgResultE;
+
+/*----------------------------------------------------------------------------
+     define signals used by RCP task
+----------------------------------------------------------------------------*/
+#define RCP_CMD_MAILBOX_EVENT           EXE_MESSAGE_MBOX_1   /* EXE_MAILBOX_1 */
+#define RCP_DATA_MAILBOX_EVENT          EXE_MESSAGE_MBOX_2   /* EXE_MAILBOX_2 */
+#define RCP_OTAMSG_MAILBOX_EVENT        EXE_MESSAGE_MBOX_3   /* EXE_MAILBOX_3 */
+#define RCP_TEST_MAILBOX_EVENT          EXE_MESSAGE_MBOX_4   /* EXE_MAILBOX_4 */
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+/** Define TX Calibration Type */
+typedef enum
+{
+   RCP_SIG_TYPE_PILOT = 0,
+   RCP_SIG_TYPE_ST2,
+   RCP_SIG_TYPE_PHYUT
+}RcpTstSigTypeT;
+
+/** define the command action enumeration */
+typedef enum
+{
+    RCP_ACTION_OFF,
+    RCP_ACTION_ON
+} RcpTstActionT;
+
+/* RCP_ETS_TX_AVAILABLE_PWR_TEST_MODE_MSG*/
+typedef enum
+{
+   TX_AVAILABLE_PWR_NORMAL_MODE = 0,
+   TX_AVAILABLE_PWR_NO_ACK_MODE,
+   TX_AVAILABLE_PWR_NO_ACK_DSC_MODE
+} RcpTxAvailPwrTestModeT;
+
+/* RCP_ETS_SET_HW_TRIGGER_MSG*/
+typedef PACKED_PREFIX struct
+{
+   kal_uint8    Trigger;  /* Disable, Access, Traffic*/
+   kal_uint8    FrameDelay;
+   kal_uint16   LongCodeMIL0;  /* non-zero is for long code mask override*/
+   kal_uint16   LongCodeMIL1;
+   kal_uint16   LongCodeMIH0;
+} PACKED_POSTFIX  RcpEtsSetHwTriggerMsgT;
+
+/* HW trigger type */
+typedef enum
+{
+   HW_TRIGGER_DISABLE=0,
+   HW_TRIGGER_ACCESS,
+   HW_TRIGGER_TRAFFIC
+} RcpHwTriggerT;
+
+/* array size for long code mask */
+#define RCP_LONG_CODE_MASK_SIZE     6
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint16 frameOffset;
+    kal_uint16 prePilotScale;         /* 9,3,u */
+    kal_uint16 pilotScale;              /* 9,3,u */
+    kal_uint16 rriDataAck0;           /* Access Rate 1:9.6k, 2:19.2k, 3:38.4k */
+    kal_uint16 dataScale0Ack;       /* 11,6,u */
+    kal_uint16 sDScale1;               /* 4,3,t */
+    kal_uint16 sDScale2;               /* 4,3,t */
+    kal_uint32 frameData[32];       /* 2 frame data 512 bits */
+    kal_uint16 bbCaptureFrame;
+    kal_uint16 testCase;
+} PACKED_POSTFIX RcpPhyAchTestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint16 pilotScale;              /* 9,3,u */
+    kal_uint16 dRCGating;
+    kal_uint16 dRCLen;
+    kal_uint16 dRCScale;
+    kal_uint16 ackSUPScale;
+    kal_uint16 ackMUPScale;
+    kal_uint16 rriDataAck1[4];           /* Access Rate 1:9.6k, 2:19.2k, 3:38.4k */
+    kal_uint16 dataScale0Ack[4];       /* 11,6,u per frame */
+    kal_uint16 sDScale1[4];               /* 4,3,t */
+    kal_uint16 sDScale2[4];               /* 4,3,t */
+    kal_uint16 dRCCover;
+    kal_uint16 dRCValue;
+    kal_uint16 rRIScaleAck;
+    kal_uint16 bbCaptureFrame;
+    kal_uint16 testCase;
+} PACKED_POSTFIX RcpPhyTch01TestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint16 pilotScale;              /* 9,3,u */
+    kal_uint16 dRCGating;
+    kal_uint16 dRCLen;
+    kal_uint16 dRCScale;
+    kal_uint16 ackSUPScale;
+    kal_uint16 ackMUPScale;
+    kal_uint16 rriDataAck2[12];
+    kal_uint16 rriDataNak2[12];
+    kal_uint16 dataScale0Ack[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale0Nak[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale1Ack[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale1Nak[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale2Ack[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale2Nak[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale3Ack[12];       /* 11,6,u per frame */
+    kal_uint16 dataScale3Nak[12];       /* 11,6,u per frame */
+    kal_uint16 dataScaleAck[12];       /* 11,6,u per frame */
+    kal_uint16 revAckData[12];
+    kal_uint16 twoBitAckNak[12];
+    kal_uint16 dRCLenBoost[12];
+    kal_uint16 dSCLenBoost[12];
+    kal_uint16 fwdAckData[48];
+    kal_uint16 rRIScaleAck;
+    kal_uint16 rRIScaleNak;
+    kal_uint16 dSCScale;
+    kal_uint16 dRCScaleBoost;
+    kal_uint16 dSCScaleBoost;
+    kal_uint16 auxPilotMinPayload;
+    kal_uint16 auxPilotScale;
+    kal_uint16 bbCaptureFrame;
+    kal_uint16 testCase;
+} PACKED_POSTFIX RcpPhyTch2TestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint32 offsetAddr;
+    kal_uint32 dataLen;
+    kal_uint32 testData[128];
+} PACKED_POSTFIX RcpPhyTch01TestDataWriteMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint32  lldAddress;
+    kal_uint32  srcAddress;
+    kal_uint32  destAddress;
+    kal_uint32  nextLldAddress;
+    kal_uint8   srcData[32];
+    kal_uint16  dataLen;
+    kal_uint16  ackNak;
+    kal_uint16  firstLld;
+    kal_uint16  width;
+} PACKED_POSTFIX RcpTxDMATestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_bool   ackNak;
+} PACKED_POSTFIX RcpTxDMATestStartMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   ExeRspMsgT   RspInfo;
+   kal_uint16   NumWords;
+   kal_uint32   Address;
+} PACKED_POSTFIX  RcpTxDmaReadMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8            Data[1];
+} PACKED_POSTFIX  RcpTxDmaReadRspMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint16   slot_no;
+
+   kal_int16    ksd_scale_1st;
+   kal_int16    ksd_scale_2nd;
+   kal_int16    ksd_log2_1st;
+   kal_int16    ksd_log2_2nd;
+   kal_int16    ksd_index_1st;
+   kal_int16    ksd_index_2nd;
+} PACKED_POSTFIX  RcpTxKsDataT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint32    TransATI;
+  kal_uint8     TransATIType;
+} PACKED_POSTFIX AcmAmpATIListMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_bool     bUpdated;
+   kal_uint16   AccessSignature;
+   kal_uint8    ColorCode;
+   kal_uint32   SectorId;
+   kal_uint8    ReverseLinkSilencePeriod;
+   kal_uint8    ReverseLinkSilenceDuration;
+} PACKED_POSTFIX AcmOmpUpdatedMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8  reason;     /* 0--normal; 1--after preempt; */
+} PACKED_POSTFIX AcmRupActivateMsgT;
+
+typedef PACKED_PREFIX struct {
+  kal_uint8   action;    /* 0--reset msg queue; 1--stop current msg; 2--*/
+} PACKED_POSTFIX AcmProtStopAccessMsgT;
+
+
+/* ETS ACM Test Cmd */
+typedef PACKED_PREFIX struct
+{
+   kal_uint8    AcmTestMode;
+   kal_uint8    AccessDataRate;
+   kal_uint8    AccessCycleDuration;
+   kal_uint8    PreambleLength;
+   kal_uint8    ProbeSequenceMax;
+   kal_uint8    ProbeNumStep;
+   kal_uint8    ColorCode;
+   kal_uint32   SectorId;
+   kal_uint8    RpcTestMode;
+} PACKED_POSTFIX AcmTestCfgMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_bool  TxStatus;
+
+} PACKED_POSTFIX RtmDrcTxControlMsgT;
+
+/* Tx Rate Test Message */
+typedef struct
+{
+    /* Turn on or off action*/
+    RcpTstActionT       Action;
+
+    /* 0: reverse EVDO pilot only for EVDO
+       1: reverse EVDO subtype2 for EVDO */
+    RcpTstSigTypeT      DoSigType;
+    kal_uint16          EvChannelType;
+    kal_uint16          EvProtocolSubtype;
+    kal_uint16          EvAuxPilotMiniPayload;
+    kal_uint16          EvDrcGating;
+    kal_uint16          EvDrcBoostLength;
+    kal_uint16          EvDscBoostLength;
+    kal_uint16          EvDrcLength;
+    kal_uint16          EvFrameOffset;
+    kal_uint16          EvDataRate;
+    kal_uint16          EvDRCCover;
+    kal_uint16          EvDRCCover1;
+    kal_uint16          EvDRCCover2;
+    kal_uint16          EvDRCValue;
+    kal_uint16          EvDRCValue1;
+    kal_uint16          EvDSCValue;
+    kal_uint16          EvDSCValue1;
+    kal_uint16          EvDSCValue2;
+    kal_uint16          EvAckEnalble;
+    kal_uint16          EvAckUserType;
+    kal_uint16          EvAckBits;
+    kal_uint16          EvAckBits1;
+    kal_uint16          EvAckSuScale;
+    kal_uint16          EvAckMuScale;
+    kal_uint16          EvPreSlot;
+    kal_uint16          EvCapFrame;
+} RcpTstTxCdmaCtrlMsgT;
+
+/** define Tx CDMA channel contorl message*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpTstTxCdmaCtrlMsgT    msg;
+} rcp_tst_tx_cdma_ctrl_msg_struct;
+
+typedef struct
+{
+    /* Request execute status */
+    kal_uint32              Status;
+    kal_int16               ReqPwr;    /* Q6 dBm */
+    kal_uint16              Reserved;
+} RcpTstTxAgcCtrlRspT;
+
+/*define MSG_ID_ELT_ACC_RTB_RSP_MSG */
+typedef struct
+{
+    kal_uint16 TxsthAcStatus;  /*0 txsth_status_Idle;1 txsth_status_access; 2 txsth_status_traffic ;3 txsth_status_FREEZE*/
+    kal_uint16 TxsthEventType; /*0 txsth_unfreeze; 1 txsth_freeze*/
+    kal_uint16 RaNum;          /* random access numbers*/
+} Evl1TxsthAccRtbPreemptionRspMsgT;
+
+/** define Tx CDMA channel contorl message*/
+/** MSG_ID_RCP_TST_TX_AGC_CTRL_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpTstTxAgcCtrlCmdT Msg;
+} rcp_tst_tx_agc_ctrl_msg_struct;
+
+/** define Random access preemption contorl message*/
+/** MSG_ID_RCP_ACC_RTB_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpTxSthRtbHscPreemptCtrlCmdT  AccPreemptMsg;
+} rcp_acc_rtb_msg_struct;
+
+/*----------------------------------------------------------------------------
+ Global typedefs
+----------------------------------------------------------------------------*/
+
+/* RCP Mode */
+typedef enum
+{
+   RCP_INACTIVE=0,
+   RCP_ACCESS,
+   RCP_TRAFFIC,
+   RCP_TX_CHAN_SWEEP
+} RcpModeT;
+
+
+/* RCP Component Protocol Types */
+typedef enum
+{
+   RCP_ACM=2,
+   RCP_RTM=4
+} RcpProtocolTypeT;
+
+typedef enum
+{
+ AccessChannel,
+ TrafficChannel,
+ AccessTrafficChannel
+}RevChannelTypeT;
+
+typedef  struct {
+  kal_uint8     pktpriority;
+  kal_uint32    timestamp;
+} BestPktInfoT;
+
+
+/* Grant Allocation */
+/* The Grant Allocation consists of the flows which are allocated for this grant,
+   for each subframe (phy2) or frame (phy0/1).
+   Each flow's macFlowId and the grantSize in bytes are calculated by the reverse
+   MAC and given to PCP and higher layer applications to fulfill the grant.
+   Note that each grant is identified by a revMacId when the grant is allocated. */
+
+typedef struct
+{
+   kal_uint8  macFlowID;
+   kal_uint16 grantByteSize;
+} GrantAllocationT;
+
+typedef struct
+{
+   kal_uint8        NumFlowsRcvingThisGrant;
+   kal_uint8        revMacId;
+   GrantAllocationT Grants[ MAX_MAC_FLOW_NUM];
+} PcpAcmRtmGrantAllocationT;
+
+
+
+/* Datapkt */
+/* This is a data pkt which contains a pointer to a chunk of cpbuffer.
+   The offset and len specifies the location of this data pkt */
+typedef struct datapkt
+{
+#ifdef PKT_SIM
+   BestPktInfoT     pktinfo;  // SS: Added this here. It will save lot of test-code
+   kal_uint8        pktSrc;          // SS: helps debugging for-B pkts. Identifies, the App-Q
+                          // from which the pkt was assembled from.
+#endif
+   kal_uint16       len;/* The length of this datapkt.  */
+   kal_uint16       offset;/* The starting location for the datapkt.  */
+   CpBufferT        *buffer;/* The buffer which makes up this datapkt. This is a ptr */
+                                /* to a single cpbuffer in the cpbuffer pool.  */
+#if defined (RCP_RI_HRT_DEV)
+   CpBufferT        headBuffer;
+   kal_uint32       headData[4]; /* reserved to header buffer */
+#endif
+   struct datapkt   *next;
+} DatapktGT;
+
+
+/* Datapktlist */
+/* A List descriptor which keeps track of the DataPkt queue params */
+typedef struct
+{
+   kal_uint8        count;
+   kal_uint8        hdrcount;           /* The number of hdr pkts */
+   kal_uint8        connLayerFormat;    /* Format A/B   */
+   kal_uint32       totalLen;           /* Total length of all the Datapkts in this linked-list*/
+   DatapktGT        *head;
+   DatapktGT        *tail;
+   DatapktGT        *lastHdr;
+} DatapktlistGT;
+
+
+
+/* RevMacPkt */
+/* The reverse MAC Pkt that is sent every frame/subframe, consisting of a DatapktList
+   of security/conn layer packets */
+typedef struct revMacPktGT
+{
+   DatapktlistGT        pktList;        /* linked-list of machdr, sechdr, connlayer pkts, sectrailer, mactrailer */
+   kal_uint8            revMacPktId;    /* used for correlating the revMacPkt with the app pkt sent */
+
+   kal_uint8            revRate;        /* For prog RRIData: RTM0/1=rateIndex */
+   kal_uint8            revPktSz;       /* For prog RRIData: RTM2/3=pkSzIndex */
+   kal_uint8            macLayerFormat; /* For prog MAC trailer */
+                                    /* RTM3: This will be the Transmission Mode:
+                                       1-LowLatency, 0-HighCapacity. */
+
+   kal_uint16           dataGainScale;  /* RTM0/1=(dataOffNom+dataOffxx) -> from SCM cfg data *//* store as Q7 */
+                                    /* RTM2/3=(T2Pxxx): MFC will prov this each time */ /* store as Q5 */
+
+   /* Note: RTM2/3=>The MFC will recalc this for old/new pkts based on T2P, since it will be diff for each subpkt */
+   kal_uint16           dataGainScale0; /* RTM3 only */
+   kal_uint16           dataGainScale1; /* RTM3 only */
+   kal_uint16           dataGainScale2; /* RTM3 only */
+   kal_uint16           dataGainScale3; /* RTM3 only */
+   kal_uint16           rriGainScale;   /* RTM3 only: RRI gain assoc with the revRate */ /* store as Q6 */
+                                    /* MFC will provide this for old/new pkt, since it dep on subpktN */
+
+   struct revMacPktGT  *next;
+} RevMacPktGT;
+
+typedef struct RevMacPktListGT
+{
+   RevMacPktGT  *head;
+   RevMacPktGT  *tail;
+   kal_uint32   count;
+
+}RevMacPktListGT;
+
+
+/* 1X Slotted Overlap */
+typedef struct
+{
+   kal_bool         valid;
+   FrameRecT        startFrame1x;  /* 1X frame in which 1X slotted wakes up */ /* TODO: need to convert these to the DO times */
+   kal_uint8        startSlot1x;   /* 1X slot in which 1X slotted wakes up */
+   FrameRecT        startFrame;    /* DO frame in which 1X slotted overlap start slot overlaps */
+   kal_uint8        startSubFrame; /* DO subframe in which 1X slotted overlap start slot overlaps. from 0-3 */
+} Rcp1XSlotOverlapT;
+
+
+/* Sent by the SCP ==> RCP, after session negotiation. */
+/* It is going to be populated with the Phy-SubType information after it is negotiated. */
+typedef struct
+{
+  kal_uint8 phySubType;
+
+} RcpSubTypeInfoT;
+
+
+
+/*----------------*/
+/* TxH Structures */
+/*----------------*/
+/* Define RCP Test Mode Flags */
+typedef struct
+{
+   kal_bool         FixRatiInd;
+
+   /* Response info*/
+   ExeRspMsgT       RspInfo;
+} RcpTestModesT;
+
+/* Generic Tx AGC Data structure used for tracking AGC variables and providing periodic
+** ETS Tx AGC measurement reports - can be used regardless of active air interface */
+typedef struct
+{
+
+   /* Close Loop Tx Power adjustments */
+   kal_int16  CloseLoopAdj;         /** Bryan_Keep */
+
+   /* Tx Power Adjustments */
+   kal_int16  UnadjPwr;             /* Unadjusted Tx antenna power, in dBm */
+   kal_int16  TotalAdj;             /* Total Tx AGC adjustments, in dBm */
+
+   /* Tx Gain Scaling values */
+
+   /* Max Allowed Tx Power */
+   kal_int16  TotalMaxTxPwr;        /* Adjusted Max Tx antenna power allowed, in dBm */
+
+   /* External RF settings */
+   kal_uint16 TxGainStateSlot;      /* Current Tx AGC gain state: Bryan_Keep */
+} RcpTxAgcDataT;
+
+/* Defince RCP Boundary load identifiers */
+typedef enum
+{
+   TX_IMMEDIATE_LOAD=0,        /* Load/latch Tx values immediately */
+   TX_SLOT_BOUNDARY_LOAD,      /* Load/latch Tx values on DO Slot boundary */
+   TX_HALFSLOT_BOUNDARY_LOAD   /* Load/latch Tx values on DO Half-slot boundary */
+
+} RcpTxLoadBoundaryT;
+
+/* Structure specific to RCP RI */
+#if defined (RCP_RI_HRT_DEV)
+typedef struct rcpRiTimeCheckNode
+{
+    kal_uint64                  destTime;
+    kal_uint32                  checkerId;/* signalId or timerId */
+    void*                       paramPtr;
+    kal_uint32                  delay;
+    kal_uint32                  period;
+    kal_timer_func_ptr          Routine;
+    struct rcpRiTimeCheckNode   *next;
+    kal_bool                    bRescheduled;
+} RcpRiTimeCheckNodeT;
+
+typedef struct
+{
+    RcpRiTimeCheckNodeT *head;
+    RcpRiTimeCheckNodeT *tail;
+    kal_uint32          count;
+} RcpRiTimeCheckListT;
+#endif
+
+/* DO RCP protocol subtype identifiers */
+typedef enum
+{
+   RCP_PROTOCOL_SUBTYPE_0_1=0,
+   RCP_PROTOCOL_SUBTYPE_2
+
+} RcpProtocolSubtypeT;
+
+/* DO-specifc Reverse Channel identifiers */
+typedef enum
+{
+   RCP_REV_PILOT_CHANNEL=0,
+   RCP_REV_AUX_PILOT_CHANNEL,
+   RCP_REV_RRI_CHANNEL,
+   RCP_REV_DSC_CHANNEL,
+   RCP_REV_DRC_CHANNEL,
+   RCP_REV_ACK_CHANNEL,
+   RCP_REV_DATA_CHANNEL
+
+} RcpRevChanT;
+
+/* Identifier use to indicate channel scale units (i.e., in dB or in linear gain) */
+typedef enum
+{
+   RCP_CHAN_SCALE_TYPE_DB=0,
+   RCP_CHAN_SCALE_TYPE_LINEAR
+
+} RcpChanScaleTypeT;
+
+/* DO-specifc Reverse Channel Scales used to program RCP/Transmitter hardware */
+typedef enum
+{
+   RCP_REV_PILOT_SCALE=0,
+   RCP_REV_PREAMBLE_SCALE,  /* Pilot Channel scale during preample portion of Access Channel */
+   RCP_REV_AUX_PILOT_ACK_SCALE,
+   RCP_REV_AUX_PILOT_NAK_SCALE,
+   RCP_REV_RRI_ACK_SCALE,   /* RRI Channel when transmitting in response to an ACK */
+   RCP_REV_RRI_NAK_SCALE,   /* RRI Channel when transmitting in response to a NAK */
+   RCP_REV_ACK_SUP_SCALE,   /* ACK Channel when acknowledging a single-user packet */
+   RCP_REV_ACK_MUP_SCALE,   /* ACK Channel when acknowledging a multi-user packet */
+   RCP_REV_DSC_SCALE,
+   RCP_REV_DSC_BOOST_SCALE,
+   RCP_REV_DRC_SCALE,
+   RCP_REV_DRC_BOOST_SCALE,
+   RCP_REV_DATA_ACK_SCALE,  /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_ACK_SCALE0, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_ACK_SCALE1, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_ACK_SCALE2, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_ACK_SCALE3, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_NAK_SCALE,  /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_NAK_SCALE0, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_NAK_SCALE1, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_NAK_SCALE2, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+   RCP_REV_DATA_NAK_SCALE3, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+
+   RCP_REV_NUM_SCALE_REGS   /* Number of hardware RCP scale registers */
+
+} RcpRevChanScaleT;
+
+/* Define RCP Gain Scaling tracking parameters */
+typedef struct
+{
+   kal_int16  ScaleDb;         /* Reverse Channel Scaling Adjustment, in dB, Q=7 */
+   kal_uint16 ScaleLinear;     /* Reverse Channel Scaling ADjustment, in linear notation, Q=7 */
+   kal_uint8  RegQValue;       /* Hardware register Q-value (is not uniform across the hw interface) */
+} RcpRevChanScaleParamsT;
+
+typedef enum
+{
+   RCP_FIRST_DELAY_ADDR = 0,
+   RCP_SECOND_DELAY_ADDR,
+
+   RCP_MAX_DELAY_ADDR
+
+} RcpDelayAddrT;
+
+/* for delay load mode selection */
+typedef enum
+{
+   HWD_DELAY_TX_DAC=0,
+   HWD_DELAY_TX_ON0,
+   HWD_DELAY_TX_ON1,
+   HWD_DELAY_TX_ON2,
+   HWD_DELAY_TX_ON3,
+   HWD_DELAY_TX_ON4,
+   HWD_DELAY_TX_ON5,
+   HWD_DELAY_TX_ON6,
+   HWD_DELAY_TX_ON7,
+   HWD_DELAY_TX_ON8,
+   HWD_DELAY_TX_MAX
+} HwdDelayTxOnTypeT;
+
+typedef enum
+{
+   HWD_DELAY_MASK_TX_ON0=0,
+   HWD_DELAY_MASK_TX_ON1,
+   HWD_DELAY_MASK_TX_ON2,
+   HWD_DELAY_MASK_TX_ON3,
+   HWD_DELAY_MASK_TX_ON4,
+   HWD_DELAY_MASK_TX_ON5,
+   HWD_DELAY_MASK_TX_ON6,
+   HWD_DELAY_MASK_TX_ON7,
+   HWD_DELAY_MASK_TX_ON8,
+   HWD_DELAY_MASK_TX_DAC,
+   HWD_DELAY_MASK_MAX
+} HwdDelayModeTxOnTypeT;
+
+typedef enum
+{
+   HWD_DELAY_PDM0 = 0,
+   HWD_DELAY_PDM1 = 1,
+   HWD_DELAY_PDM2 = 2,
+   HWD_DELAY_PDM3 = 3,
+   HWD_DELAY_PDM4 = 4,
+   HWD_DELAY_PDM5 = 5,
+   HWD_DELAY_PDM6 = 6
+}HwdDelayPdmT;
+
+/* Define Tx AGC Closed-Loop Step Size enum */
+typedef enum
+{
+   RCP_TXAGC_STEP_SIZE_HALF_DB = 0,
+   RCP_TXAGC_STEP_SIZE_ONE_DB,
+   RCP_TXAGC_STEP_SIZE_QUARTER_DB
+
+} RcpTxAgcClosedLoopStepSizeT;
+
+/*---------------*/
+/* ETS Test Cmds */
+/*---------------*/
+typedef PACKED_PREFIX struct
+{
+   kal_uint8         type;         /* For CpBufGet, CpBufStats. The pool partition type */
+} PACKED_POSTFIX CpBufTestCmdMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8         freeAllFlag;  /* For freeing all the cpbufs alloc earlier */
+   kal_uint32        freeIndex;    /* For CpBufFree, index of the cpbuf alloc previously */
+} PACKED_POSTFIX CpBufTestFreeCmdMsgT;
+
+
+/*---------------*/
+/* DSAR, PCPR Structures */
+/*---------------*/
+typedef PACKED_PREFIX struct {
+    kal_uint8 msgSeq;       /* sequence number of msg this Ack is for */
+} PACKED_POSTFIX  DsarAckMsgInfoT;
+
+typedef PACKED_PREFIX struct {
+    kal_uint8 msgSeq;       /* sequence number of msg requiring Ack */
+} PACKED_POSTFIX  DsarAckReqMsgInfoT;
+
+typedef DsarAckMsgInfoT DsarResetMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8  MacFlowId;
+   kal_uint8  SubStreamNum;
+} PACKED_POSTFIX  MacFlow2StrFlowInfoT;
+
+typedef PACKED_PREFIX struct
+{
+  MacFlow2StrFlowInfoT     Info[MAX_RLP_FLOW_SUPPORTED];
+  kal_uint8                    Num;
+} PACKED_POSTFIX MacFlow2StrFlowMappingT;
+
+
+/*------------------------*/
+/* PAR message structure definitions*/
+/*------------------------*/
+/* structure for message with HLP  */
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8  nAppType;
+   kal_uint8  nRlpFlowId;
+   kal_bool   bBusy;
+} PACKED_POSTFIX  HlpParBufStatMsg;
+
+typedef  struct {
+   CpBufferT   *dataPtr;
+   kal_uint16   offset;
+   kal_uint16   dataLen;
+   kal_uint16 tcpTag;
+   kal_uint32 tcpPort;
+   kal_uint32 srcIpAddr;
+   kal_uint32 dstIpAddr;
+} ParHlpRevDataPktT;
+
+typedef  struct
+{
+   kal_uint8       nAppType;
+   kal_uint8       nRLPFlowId;
+   kal_uint8       numHlpFrames;
+   ParHlpRevDataPktT   hlpFrames[MAX_RLP_HLP_PKT_NUM];
+} ParHlpDataTxMsgT;/*PAR_HLP_DATA_TX_MSG*/
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8 nAppType;
+   kal_uint8 nRlpFlowId;
+   kal_uint8 Route; /*0-Route A, 1-Route B*/
+   kal_uint8 nRevLable;
+   kal_bool  bAckRequired;
+   kal_uint8 Reset;
+   kal_uint16     dataLen;
+   kal_uint16     Offset;
+   CpBufferT   *dataPtr;
+   kal_uint8  nPriority;
+} PACKED_POSTFIX  ParHlpDOSTxMsgT;/*PAR_HLP_DOS_TX_MSG*/
+
+/*------------------------*/
+/* structure for Flow Control Protocol */
+/*------------------------*/
+
+typedef enum
+{
+   PAR_FLOWCTRL_CLOSE_ST,
+   PAR_FLOWCTRL_OPEN_ST,
+   PAR_FLOW_CTL_MAX
+} ParFlowCtrlStateT;
+
+typedef enum
+{
+   PAR_AccessStream,
+   PAR_ServiceStream,
+   PAR_STREAM_MAX
+} PARAppStreamT;
+
+typedef PACKED_PREFIX struct
+{
+   PARAppStreamT     StreamType;
+   ParFlowCtrlStateT Status;
+} PACKED_POSTFIX  ParPafFlowCtlStatMsgT;
+typedef PACKED_PREFIX struct
+{
+   kal_uint8 AppType;
+   kal_uint16 ProtocolType;
+   kal_uint8 RlpFlow;
+} PACKED_POSTFIX ParPafRlpResetReqMsgT;
+
+#ifdef CBP7_EHRPD
+typedef enum {
+   RSP_AOPENBSETTING_ST,
+   RSP_AOPENBRISING_ST,
+   RSP_ASETTINGBOPEN_ST,
+   RSP_ARISINGBOPEN_ST,
+   RSP_MAX_ST
+}ParRspStateT;
+
+typedef enum {
+   OCTET_STREAM,
+   PACKET_STREAM
+} RlpStreamPduT;
+
+typedef enum {
+   OCTET_DATAUNIT,
+   PACKET_DATAUNIT
+} RlpDataUnitT;
+
+typedef enum {
+   RSP_ROUTE_A,
+   RSP_ROUTE_B,
+   RSP_MAX_RT
+} ParRspRouteT;
+
+
+typedef struct {
+   kal_uint8 FlowProtocolPDU;
+   kal_uint8 RouteProtocolPDU;
+   kal_uint8 FlowDataUnit;
+   kal_uint8 FlowProtocolID;
+   RevRohcProtocolParmsT FlowProtocolParms;
+   kal_uint8 RouteProtocolID;
+   RevRohcProtocolParmsT RouteProtocolParms;
+} ParFlowInstanceT;
+
+typedef struct {
+   PARAppStreamT     StreamType;
+   ParRspStateT            stRsp;
+} ParPafRspStatusMsgT;
+#endif
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint16 FwdSysTime;   /* in uint of 16 slot! */
+  kal_uint8 TCAMsgSeq;
+  kal_uint8 DRCCover;
+  kal_uint8 FwdPhysSlots;
+  kal_uint8 FwdMACPkts;
+  kal_uint8 FwdPayloadSizeIndex; /*used for fetap*/
+  kal_uint16 FwdSeq;
+} PACKED_POSTFIX FtaprFcpTestPktMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_bool bActive;
+} PACKED_POSTFIX FtaprLoopBackStatusMsgT;
+
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint16 AppType[4];
+} PACKED_POSTFIX EtsAppCfgT;
+
+
+typedef PACKED_PREFIX struct
+{
+   ExeRspMsgT      RspInfo;
+} PACKED_POSTFIX  ParRlpStatPeekMsgT;
+
+typedef struct
+{
+  CpBufferT* pBuf;
+}ParSnKKQosReqMsgT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_uint8  Link;/*0-Rev, 1-Fwd*/
+  kal_uint8  Label;
+} PACKED_POSTFIX ReservationInfoT;
+
+typedef PACKED_PREFIX struct
+{
+  kal_bool    bOn;
+  kal_uint8   Count;
+  ReservationInfoT LabelInfo[8];
+} PACKED_POSTFIX ParRlpReservationOnOffMsgT;
+
+typedef struct
+{
+  kal_int32 EVDORLPStatsFlowId;
+  kal_uint32 EVDORLPStatsResetTime;
+  kal_int32 EVDORLPStatsNaksReceived;
+  kal_int32 EVDORLPStatsReXmitsNotFound;
+  kal_int64 EVDORLPStatsANNakBytesRequested;
+  kal_int64 EVDORLPStatsRxDuplicateBytes;
+  kal_int64 EVDORLPStatsRxReXmitsBytes;
+  kal_int64 EVDORLPStatsRxNewDataBytes;
+  kal_int64 EVDORLPStatsRxTotalBytes;
+  kal_int32 EVDORLPStatsNaksSent;
+  kal_int64 EVDORLPStatsATNakBytesRequested;
+  kal_int64 EVDORLPStatsTxReXmitsBytes;
+  kal_int64 EVDORLPStatsTxNewDataBytes;
+  kal_int64 EVDORLPStatsTxTotalBytes;
+  kal_int32 EVDORLPStatsNakTimesOuts;
+  kal_int32 EVDORLPStatsResetCount;
+  kal_int32 EVDORLPStatsATResetRequestCount;
+  kal_int32 EVDORLPStatsANResetAckCount;
+  kal_int32 EVDORLPStatsANResetRequestCount;
+} EVDORLPStatsMeasT;
+
+typedef struct
+{
+  EVDORLPStatsMeasT rlpMeas;
+}  EVDORLPStatsEventT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint8 protocolType;
+   kal_uint8 msgId;
+   kal_bool bNeedTxStatus;
+} PACKED_POSTFIX DsarDelMsgCmdMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   /* Change for CR ALPS02665609,  if  bEmptyConfigReqsOnly is TRUE, only delete pending un-acked ConfigurationRequests.*/
+   kal_bool bEmptyConfigReqsOnly;
+} PACKED_POSTFIX DsarAmpResetMsgCmdMsgT;
+
+typedef PACKED_PREFIX struct {
+   kal_uint16   Stream0Configuration;
+   kal_uint16   Stream1Configuration;
+   kal_uint16   Stream2Configuration;
+   kal_uint16   Stream3Configuration;
+} PACKED_POSTFIX  DoStreamConfigurationSetMsgT;
+
+typedef PACKED_PREFIX struct
+{
+   kal_bool enable;
+} PACKED_POSTFIX LUPUnsolicitedCfgMsgT;
+
+
+/*  Packet performance measurement */
+typedef PACKED_PREFIX struct
+{
+  kal_uint32    TotalRevPhySubFrame;      /* Count how many subframes have been used.*/
+  kal_uint32    TotalAckBits;                     /* in unit of 128 bit*/
+  kal_uint32    NakSubPackets;                 /* missing sub-packet on AN side*/
+  kal_uint32    NakPackets;                      /* missing packet on AN side*/
+  kal_uint32    TotalTxSubPacket;             /* Number of sub-packet sent by AT */
+  kal_uint32    TotalTxPacket;                   /* Number of packet sent by AT */
+  kal_uint32    RevSubPER;                      /* NakSubPackets/TotalTxPacket*/
+  kal_uint32    RevPER;                           /* NakPackets/TotalTxPacket*/
+  kal_uint32    PHY_ThrPut;                      /* TotalAckBits/TotalRevPhySubFrame*/
+  kal_uint32    AT_ThrPut;                        /* TotalBits/time*/
+} PACKED_POSTFIX RcpPacketPerfStatT;
+
+extern RcpPacketPerfStatT RcpPacketPerfStat;
+extern void RcpPerfDataReset(void);
+
+typedef PACKED_PREFIX struct
+{
+   kal_bool Mode;
+} PACKED_POSTFIX RcpRtmQosTxModeSelectionAlgoMsgT;
+
+/*----------------------------------------------------------------------------
+ define for RCP_ADJ_UPDATE_MSG
+----------------------------------------------------------------------------*/
+typedef struct
+{
+   kal_int16 TxMaxPwr;
+   kal_int16 TxMinPwr;
+   void *TxAdjPtr;
+}RcpAdjUpdateT;
+
+
+
+typedef PACKED_PREFIX struct
+{
+   kal_uint16  PilotPN;
+   kal_uint16  PcgId;
+   kal_uint16 ServCell;
+   kal_uint16  MacId;
+   kal_uint16  DRCCover;
+   kal_uint16  DSC;
+   kal_uint16 PwrEst;
+} PACKED_POSTFIX  SecInfoT;
+
+
+typedef PACKED_PREFIX struct
+{
+   kal_bool  MacCfgChangeFlag;
+   kal_uint16  ServingPN;
+   kal_uint8  NumPcg;
+   kal_uint8  NumSec;
+   kal_uint8  PcgRenumId[RCP_MAX_NUM_PCGS];
+   kal_uint8  SecRenumId[RCP_MAX_NUM_PILOTS];
+   SecInfoT SectorInfo[RCP_MAX_NUM_PILOTS];
+} PACKED_POSTFIX  RcpUpdateSectorInfoMsg;
+
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint8  DRCLockValid;       /* 0->NotVal, 1->Valid, Valid occurs every */
+    kal_uint8 DRCLockPcgFinal[RCP_MAX_NUM_PCGS];
+} PACKED_POSTFIX  RcpUpdateC2IMsg;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+extern RcpModeT  RcpMode;
+
+/* RCP RF Control AGC Management Boolean flags */
+/* Trigger Tx_Ons in TxAGC after 4 slots delay - for tx power gating at the start time*/
+extern kal_bool RcpTxAgcEnabled;
+
+/* delay mode register control bit position - RCP local variable */
+extern kal_uint8  RcpTxDlyModeBitMaskPA, RcpTxDlyModeBitMaskGATE, RcpTxDlyModeBitMaskPDM;
+extern kal_uint8  RcpTxDlyModeBitMaskPA2;
+
+extern kal_uint32 RcpPA1DlyMaskRegAddress;
+extern kal_uint32 RcpPA2DlyMaskRegAddress;
+extern kal_uint32 RcpPA1DlyMaskReadRegAddress;
+extern kal_uint32 RcpPA2DlyMaskReadRegAddress;
+
+/* delay mask register control bit position - RCP local variable */
+extern kal_uint8 RcpTxDlyMaskBitMaskPA, RcpTxDlyMaskBitMaskGATE;
+extern kal_uint8 RcpTxDlyMaskBitMaskPA2;
+
+extern HwdRfBandT RmcIsrCurrentMainRfBand;
+extern HwdRfBandT RmcIsrCurrentDivRfBand;
+
+extern kal_bool RcpHwdRfSpiDlyEnable;
+
+extern RtmRmmStateT RtmState;
+
+extern kal_uint8 *RcpTxDataAckPtr;
+extern kal_uint8 *RcpTxDataNakPtr[RCP_TX_DATA_NAK_ARRAY_SIZE];
+
+/*----------------------------------------------------------------------------
+ Global DO TXHA Register Macro Prototypes
+----------------------------------------------------------------------------*/
+
+/* Define Macros that manage the HWD_DO_TXHA_RRI_ACK0 register */
+#define DOTX_RRI_ACCESS_RATE_0BPS      0x0000
+#define DOTX_RRI_ACCESS_RATE_9600BPS   0x0011
+#define DOTX_RRI_ACCESS_RATE_19200BPS  0x001a
+#define DOTX_RRI_ACCESS_RATE_38400BPS  0x002b
+#define DOTX_RRI_ACCESS_RATE_76800BPS  0x003c
+#define DOTX_RRI_ACCESS_RATE_153600BPS 0x004d
+
+
+/* Define Macros that manages the HWD_DO_TXHA_RRI_ACK1 register */
+#define DOTX_RRI_SYMBOL_RATE_ZERO       0x0000
+#define DOTX_RRI_SYMBOL_RATE_9600BPS    0x0011
+#define DOTX_RRI_SYMBOL_RATE_19200BPS   0x001a
+#define DOTX_RRI_SYMBOL_RATE_38400BPS   0x002b
+#define DOTX_RRI_SYMBOL_RATE_76800BPS   0x003c
+#define DOTX_RRI_SYMBOL_RATE_153600BPS  0x004d
+
+/* Define Macros that manages the HWD_DO_TXHA_RRI_ACK2 register, in 6293, it is used at RriDataNak in Evl1TrafficDataTransT*/
+#define DOTX_RRI_PAYLOAD_IDX_0          0x0000 << 2 /* HWD_DO_TXHA_RRI_ACK2[5:2] */
+#define DOTX_RRI_PAYLOAD_IDX_128        0x0001 << 2
+#define DOTX_RRI_PAYLOAD_IDX_256        0x0002 << 2
+#define DOTX_RRI_PAYLOAD_IDX_512        0x0003 << 2
+#define DOTX_RRI_PAYLOAD_IDX_768        0x0004 << 2
+#define DOTX_RRI_PAYLOAD_IDX_1024       0x0005 << 2
+#define DOTX_RRI_PAYLOAD_IDX_1536       0x0006 << 2
+#define DOTX_RRI_PAYLOAD_IDX_2048       0x0007 << 2
+#define DOTX_RRI_PAYLOAD_IDX_3072       0x0008 << 2
+#define DOTX_RRI_PAYLOAD_IDX_4096       0x0009 << 2
+#define DOTX_RRI_PAYLOAD_IDX_6144       0x000A << 2
+#define DOTX_RRI_PAYLOAD_IDX_8192       0x000B << 2
+#define DOTX_RRI_PAYLOAD_IDX_12288      0x000C << 2
+
+#define DOTX_RRI_SUBPACKET_IDX_0        0x0000      /* HWD_DO_TXHA_RRI_ACK2[1:0] */
+#define DOTX_RRI_SUBPACKET_IDX_1        0x0001
+#define DOTX_RRI_SUBPACKET_IDX_2        0x0002
+#define DOTX_RRI_SUBPACKET_IDX_3        0x0003
+
+/* payload first and then subpacketId set - always pair */
+
+/* Define Macros that manages the HWD_DO_TXHA_RRI_ACK2 register RRI ACK Payload and
+** Subpacket Indexes */
+
+/* Define Macros that manages the HWD_DO_TXHA_CHNL_TYPE register */
+#define DOTX_CHNL_TYPE_ACCESS           0x0000
+#define DOTX_CHNL_TYPE_TRAFFIC          0x0001
+
+/* Define Macros that manages the HWD_DO_TXHA_PROTOCOL_SUBTYP register */
+#define DOTX_CHNL_SUBTYPE_0_ACCESS      0x0000
+#define DOTX_CHNL_SUBTYPE_1_ACCESS      0x0001
+#define DOTX_CHNL_SUBTYPE_2_ACCESS      0x0001
+#define DOTX_CHNL_SUBTYPE_0_TRAFFIC     0x0000
+#define DOTX_CHNL_SUBTYPE_1_TRAFFIC     0x0000
+#define DOTX_CHNL_SUBTYPE_2_TRAFFIC     0x0001
+
+
+/* Define Macros that manages the HWD_DO_TXHA_TX_RESET register */
+#define HWD_DO_TXHA_TX_RESET_PWR        0x0001
+#define HWD_DO_TXHA_TX_RESET_RESET      0x0002
+#define HWD_DO_TXHA_TX_RESET_FCS        0x0004
+#define HWD_DO_TXHA_TX_RESET_SYMBOL     0x0008
+
+
+/* Define Macros that manages the HWD_DO_TXHA_STATUS register */
+#define HWD_DO_TXHA_STATUS_INTERLACE_MODE       0x0001   /* for data rate 12 */
+#define HWD_DO_TXHA_STATUS_TX_EARLY_EN          0x0002
+#define HWD_DO_TXHA_STATUS_FCS_IDLE             0x0004
+#define HWD_DO_TXHA_STATUS_FCS_ERROR            0x0008
+#define HWD_DO_TXHA_STATUS_SYMBOL_ERROR         0x0010
+#define HWD_DO_TXHA_STATUS_CHANNEL_RD_ERROR     0x0020
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DRC_LENGTH register */
+#define DOTX_DRC_LENGTH_1_SLOT      0x0000
+#define DOTX_DRC_LENGTH_2_SLOTS     0x0001
+#define DOTX_DRC_LENGTH_4_SLOTS     0x0002
+#define DOTX_DRC_LENGTH_8_SLOTS     0x0003
+
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DSC_LENGTH register */
+#define DOTX_DSC_LENGTH_8_SLOTS     0x0001
+#define DOTX_DSC_LENGTH_16_SLOTS    0x0002
+#define DOTX_DSC_LENGTH_24_SLOTS    0x0003
+#define DOTX_DSC_LENGTH_32_SLOTS    0x0004
+#define DOTX_DSC_LENGTH_40_SLOTS    0x0005
+#define DOTX_DSC_LENGTH_48_SLOTS    0x0006
+#define DOTX_DSC_LENGTH_56_SLOTS    0x0007
+#define DOTX_DSC_LENGTH_64_SLOTS    0x0008
+#define DOTX_DSC_LENGTH_72_SLOTS    0x0009
+#define DOTX_DSC_LENGTH_80_SLOTS    0x000A
+#define DOTX_DSC_LENGTH_88_SLOTS    0x000B
+#define DOTX_DSC_LENGTH_96_SLOTS    0x000C
+#define DOTX_DSC_LENGTH_104_SLOTS   0x000D
+#define DOTX_DSC_LENGTH_112_SLOTS   0x000E
+#define DOTX_DSC_LENGTH_120_SLOTS   0x000F
+#define DOTX_DSC_LENGTH_128_SLOTS   0x0010
+#define DOTX_DSC_LENGTH_136_SLOTS   0x0011
+#define DOTX_DSC_LENGTH_144_SLOTS   0x0012
+#define DOTX_DSC_LENGTH_152_SLOTS   0x0013
+#define DOTX_DSC_LENGTH_160_SLOTS   0x0014
+#define DOTX_DSC_LENGTH_168_SLOTS   0x0015
+#define DOTX_DSC_LENGTH_176_SLOTS   0x0016
+#define DOTX_DSC_LENGTH_184_SLOTS   0x0017
+#define DOTX_DSC_LENGTH_192_SLOTS   0x0018
+#define DOTX_DSC_LENGTH_200_SLOTS   0x0019
+#define DOTX_DSC_LENGTH_208_SLOTS   0x001A
+#define DOTX_DSC_LENGTH_216_SLOTS   0x001B
+#define DOTX_DSC_LENGTH_224_SLOTS   0x001C
+#define DOTX_DSC_LENGTH_232_SLOTS   0x001D
+#define DOTX_DSC_LENGTH_240_SLOTS   0x001E
+#define DOTX_DSC_LENGTH_248_SLOTS   0x001F
+#define DOTX_DSC_LENGTH_256_SLOTS   0x0020
+#define DOTX_DSC_LENGTH_264_SLOTS   0x0021
+#define DOTX_DSC_LENGTH_272_SLOTS   0x0022
+#define DOTX_DSC_LENGTH_280_SLOTS   0x0023
+#define DOTX_DSC_LENGTH_288_SLOTS   0x0024
+#define DOTX_DSC_LENGTH_296_SLOTS   0x0025
+#define DOTX_DSC_LENGTH_304_SLOTS   0x0026
+#define DOTX_DSC_LENGTH_312_SLOTS   0x0027
+#define DOTX_DSC_LENGTH_320_SLOTS   0x0028
+#define DOTX_DSC_LENGTH_328_SLOTS   0x0029
+#define DOTX_DSC_LENGTH_336_SLOTS   0x002A
+#define DOTX_DSC_LENGTH_344_SLOTS   0x002B
+#define DOTX_DSC_LENGTH_352_SLOTS   0x002C
+#define DOTX_DSC_LENGTH_360_SLOTS   0x002D
+#define DOTX_DSC_LENGTH_368_SLOTS   0x002E
+#define DOTX_DSC_LENGTH_376_SLOTS   0x002F
+#define DOTX_DSC_LENGTH_384_SLOTS   0x0030
+#define DOTX_DSC_LENGTH_392_SLOTS   0x0031
+#define DOTX_DSC_LENGTH_400_SLOTS   0x0032
+#define DOTX_DSC_LENGTH_408_SLOTS   0x0033
+#define DOTX_DSC_LENGTH_416_SLOTS   0x0034
+#define DOTX_DSC_LENGTH_424_SLOTS   0x0035
+#define DOTX_DSC_LENGTH_432_SLOTS   0x0036
+#define DOTX_DSC_LENGTH_440_SLOTS   0x0037
+#define DOTX_DSC_LENGTH_448_SLOTS   0x0038
+#define DOTX_DSC_LENGTH_456_SLOTS   0x0039
+#define DOTX_DSC_LENGTH_464_SLOTS   0x003A
+#define DOTX_DSC_LENGTH_472_SLOTS   0x003B
+#define DOTX_DSC_LENGTH_480_SLOTS   0x003C
+#define DOTX_DSC_LENGTH_488_SLOTS   0x003D
+#define DOTX_DSC_LENGTH_496_SLOTS   0x003E
+#define DOTX_DSC_LENGTH_504_SLOTS   0x003F
+#define DOTX_DSC_LENGTH_512_SLOTS   0x0040
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DRC_BOOST_LEN register */
+#define DOTX_DRC_BOOST_LENGTH_2_SLOTS    0x0001
+#define DOTX_DRC_BOOST_LENGTH_4_SLOTS    0x0002
+#define DOTX_DRC_BOOST_LENGTH_6_SLOTS    0x0003
+#define DOTX_DRC_BOOST_LENGTH_8_SLOTS    0x0004
+#define DOTX_DRC_BOOST_LENGTH_10_SLOTS   0x0005
+#define DOTX_DRC_BOOST_LENGTH_12_SLOTS   0x0006
+#define DOTX_DRC_BOOST_LENGTH_14_SLOTS   0x0007
+#define DOTX_DRC_BOOST_LENGTH_16_SLOTS   0x0008
+#define DOTX_DRC_BOOST_LENGTH_18_SLOTS   0x0009
+#define DOTX_DRC_BOOST_LENGTH_20_SLOTS   0x000A
+#define DOTX_DRC_BOOST_LENGTH_22_SLOTS   0x000B
+#define DOTX_DRC_BOOST_LENGTH_24_SLOTS   0x000C
+#define DOTX_DRC_BOOST_LENGTH_26_SLOTS   0x000D
+#define DOTX_DRC_BOOST_LENGTH_28_SLOTS   0x000E
+#define DOTX_DRC_BOOST_LENGTH_30_SLOTS   0x000F
+#define DOTX_DRC_BOOST_LENGTH_32_SLOTS   0x0010
+#define DOTX_DRC_BOOST_LENGTH_34_SLOTS   0x0011
+#define DOTX_DRC_BOOST_LENGTH_36_SLOTS   0x0012
+#define DOTX_DRC_BOOST_LENGTH_38_SLOTS   0x0013
+#define DOTX_DRC_BOOST_LENGTH_40_SLOTS   0x0014
+#define DOTX_DRC_BOOST_LENGTH_42_SLOTS   0x0015
+#define DOTX_DRC_BOOST_LENGTH_44_SLOTS   0x0016
+#define DOTX_DRC_BOOST_LENGTH_46_SLOTS   0x0017
+#define DOTX_DRC_BOOST_LENGTH_48_SLOTS   0x0018
+#define DOTX_DRC_BOOST_LENGTH_50_SLOTS   0x0019
+#define DOTX_DRC_BOOST_LENGTH_52_SLOTS   0x001A
+#define DOTX_DRC_BOOST_LENGTH_54_SLOTS   0x001B
+#define DOTX_DRC_BOOST_LENGTH_56_SLOTS   0x001C
+#define DOTX_DRC_BOOST_LENGTH_58_SLOTS   0x001D
+#define DOTX_DRC_BOOST_LENGTH_60_SLOTS   0x001E
+#define DOTX_DRC_BOOST_LENGTH_62_SLOTS   0x001F
+#define DOTX_DRC_BOOST_LENGTH_64_SLOTS   0x0020
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DSC_BOOST_LENGTH register */
+#define DOTX_DSC_BOOST_LENGTH_8_SLOTS     0x0001
+#define DOTX_DSC_BOOST_LENGTH_16_SLOTS    0x0002
+#define DOTX_DSC_BOOST_LENGTH_24_SLOTS    0x0003
+#define DOTX_DSC_BOOST_LENGTH_32_SLOTS    0x0004
+#define DOTX_DSC_BOOST_LENGTH_40_SLOTS    0x0005
+#define DOTX_DSC_BOOST_LENGTH_48_SLOTS    0x0006
+#define DOTX_DSC_BOOST_LENGTH_56_SLOTS    0x0007
+#define DOTX_DSC_BOOST_LENGTH_64_SLOTS    0x0008
+#define DOTX_DSC_BOOST_LENGTH_72_SLOTS    0x0009
+#define DOTX_DSC_BOOST_LENGTH_80_SLOTS    0x000A
+#define DOTX_DSC_BOOST_LENGTH_88_SLOTS    0x000B
+#define DOTX_DSC_BOOST_LENGTH_96_SLOTS    0x000C
+#define DOTX_DSC_BOOST_LENGTH_104_SLOTS   0x000D
+#define DOTX_DSC_BOOST_LENGTH_112_SLOTS   0x000E
+#define DOTX_DSC_BOOST_LENGTH_120_SLOTS   0x000F
+#define DOTX_DSC_BOOST_LENGTH_128_SLOTS   0x0010
+#define DOTX_DSC_BOOST_LENGTH_136_SLOTS   0x0011
+#define DOTX_DSC_BOOST_LENGTH_144_SLOTS   0x0012
+#define DOTX_DSC_BOOST_LENGTH_152_SLOTS   0x0013
+#define DOTX_DSC_BOOST_LENGTH_160_SLOTS   0x0014
+#define DOTX_DSC_BOOST_LENGTH_168_SLOTS   0x0015
+#define DOTX_DSC_BOOST_LENGTH_176_SLOTS   0x0016
+#define DOTX_DSC_BOOST_LENGTH_184_SLOTS   0x0017
+#define DOTX_DSC_BOOST_LENGTH_192_SLOTS   0x0018
+#define DOTX_DSC_BOOST_LENGTH_200_SLOTS   0x0019
+#define DOTX_DSC_BOOST_LENGTH_208_SLOTS   0x001A
+#define DOTX_DSC_BOOST_LENGTH_216_SLOTS   0x001B
+#define DOTX_DSC_BOOST_LENGTH_224_SLOTS   0x001C
+#define DOTX_DSC_BOOST_LENGTH_232_SLOTS   0x001D
+#define DOTX_DSC_BOOST_LENGTH_240_SLOTS   0x001E
+#define DOTX_DSC_BOOST_LENGTH_248_SLOTS   0x001F
+#define DOTX_DSC_BOOST_LENGTH_256_SLOTS   0x0020
+#define DOTX_DSC_BOOST_LENGTH_264_SLOTS   0x0021
+#define DOTX_DSC_BOOST_LENGTH_272_SLOTS   0x0022
+#define DOTX_DSC_BOOST_LENGTH_280_SLOTS   0x0023
+#define DOTX_DSC_BOOST_LENGTH_288_SLOTS   0x0024
+#define DOTX_DSC_BOOST_LENGTH_296_SLOTS   0x0025
+#define DOTX_DSC_BOOST_LENGTH_304_SLOTS   0x0026
+#define DOTX_DSC_BOOST_LENGTH_312_SLOTS   0x0027
+#define DOTX_DSC_BOOST_LENGTH_320_SLOTS   0x0028
+#define DOTX_DSC_BOOST_LENGTH_328_SLOTS   0x0029
+#define DOTX_DSC_BOOST_LENGTH_336_SLOTS   0x002A
+#define DOTX_DSC_BOOST_LENGTH_344_SLOTS   0x002B
+#define DOTX_DSC_BOOST_LENGTH_352_SLOTS   0x002C
+#define DOTX_DSC_BOOST_LENGTH_360_SLOTS   0x002D
+#define DOTX_DSC_BOOST_LENGTH_368_SLOTS   0x002E
+#define DOTX_DSC_BOOST_LENGTH_376_SLOTS   0x002F
+#define DOTX_DSC_BOOST_LENGTH_384_SLOTS   0x0030
+#define DOTX_DSC_BOOST_LENGTH_392_SLOTS   0x0031
+#define DOTX_DSC_BOOST_LENGTH_400_SLOTS   0x0032
+#define DOTX_DSC_BOOST_LENGTH_408_SLOTS   0x0033
+#define DOTX_DSC_BOOST_LENGTH_416_SLOTS   0x0034
+#define DOTX_DSC_BOOST_LENGTH_424_SLOTS   0x0035
+#define DOTX_DSC_BOOST_LENGTH_432_SLOTS   0x0036
+#define DOTX_DSC_BOOST_LENGTH_440_SLOTS   0x0037
+#define DOTX_DSC_BOOST_LENGTH_448_SLOTS   0x0038
+#define DOTX_DSC_BOOST_LENGTH_456_SLOTS   0x0039
+#define DOTX_DSC_BOOST_LENGTH_464_SLOTS   0x003A
+#define DOTX_DSC_BOOST_LENGTH_472_SLOTS   0x003B
+#define DOTX_DSC_BOOST_LENGTH_480_SLOTS   0x003C
+#define DOTX_DSC_BOOST_LENGTH_488_SLOTS   0x003D
+#define DOTX_DSC_BOOST_LENGTH_496_SLOTS   0x003E
+#define DOTX_DSC_BOOST_LENGTH_504_SLOTS   0x003F
+#define DOTX_DSC_BOOST_LENGTH_512_SLOTS   0x0040
+
+
+/* Define Macros that manages the DO_TXHA_AUXPLTMIN_PYLD register */
+#define DOTX_AUXPILOT_MIN_PYLD_128_SLOTS      0x0000
+#define DOTX_AUXPILOT_MIN_PYLD_256_SLOTS      0x0001
+#define DOTX_AUXPILOT_MIN_PYLD_512_SLOTS      0x0002
+#define DOTX_AUXPILOT_MIN_PYLD_768_SLOTS      0x0003
+#define DOTX_AUXPILOT_MIN_PYLD_1024_SLOTS     0x0004
+#define DOTX_AUXPILOT_MIN_PYLD_1536_SLOTS     0x0005
+#define DOTX_AUXPILOT_MIN_PYLD_2048_SLOTS     0x0006
+#define DOTX_AUXPILOT_MIN_PYLD_3072_SLOTS     0x0007
+#define DOTX_AUXPILOT_MIN_PYLD_4096_SLOTS     0x0008
+#define DOTX_AUXPILOT_MIN_PYLD_6144_SLOTS     0x0009
+#define DOTX_AUXPILOT_MIN_PYLD_8192_SLOTS     0x000A
+#define DOTX_AUXPILOT_MIN_PYLD_12288_SLOTS    0x000B
+
+
+/* Define default ks_calc strobe setup time before fiq - HWD_STDO_KS_CALC_STB register */
+#define DO_TXHA_KS_CALC_STB_SETUP_FIQ 4
+
+/*Because message to HRT should be transfer to EVENT by rcp task and RCP HRT is scheduled every 4 slot,
+the max delay before process the event is 4 slot(6.67ms),round up to 7ms,
+RCP task and RCP HRT may be interrupted by higher prior task, so add 3ms for margins.
+total 10ms */
+#define DO_RCP_MAX_DELAY_FOR_MESSAGE           10
+
+/*At least 3 slot after AC stop, L1 could deal with AC start or RTC start*/
+#define RCP_MIN_SLOTS_AFTER_ACSTOP				3
+
+#ifdef MTK_PLT_ON_PC_UT
+extern SysTimeFullT RcpDoGetUtSysTimer(kal_bool UseFrameOffset);
+#define L2GetDoSysFullTime(UseFrameOffset) RcpDoGetUtSysTimer(UseFrameOffset)
+#else
+#define L2GetDoSysFullTime(UseFrameOffset) SysDoTimeFullGet(UseFrameOffset)
+
+#endif
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+/* rcptask.c */
+extern void RcpInit( void );
+extern void rcp_process_ilm(ilm_struct *current_ilm);
+
+/**************************************************************************************
+ SS: the CpBufTypeT parameter was added to take care of the
+ special case, when the DatapktGT* was being allocated for a
+ HDR i.e. when used as: DatapktGet( CPBUF_HEADER ); Refer code for details..
+ In all other cases, the type field is a don't care. i.e. when invoked as follows
+ (a) DatapktGet( CPBUF_REV ) (b) DatapktGet( CPBUF_SIGNALING_MSG )
+*************************************************************************************/
+extern DatapktGT* DatapktGet( CpBufTypeT type );
+                               /* The CpBufTypeT parameter was added to take care of the
+                                  special case, when the DatapktGT* was being allocated for a
+                                  HDR i.e. when used as: DatapktGet( CPBUF_HEADER ); Refer code for details..
+                                  In all other cases, the type field is a don't care. i.e. when invoked as follows
+                                  (a) DatapktGet( CPBUF_REV ) (b) DatapktGet( CPBUF_SIGNALING_MSG ) */
+
+extern void       DatapktFree( DatapktGT *pdu );        /* Frees pdu, add back to Pool */
+extern void       DatapktlistAdd( DatapktlistGT *pktlist, DatapktGT *newDatapkt );  /* Adds to tail of a pktlist */
+extern void       DatapktlistInit( DatapktlistGT *pktlist );
+extern kal_uint16 DatapktCpy(DatapktGT *pktPtr, kal_uint8 *dataPtr, kal_bool isLimitLen, kal_uint16 cpyLenLimit);
+extern RevMacPktGT* RevMacPktGet( void );               /* Get a new pdu from RevMacPktPool */
+extern void         RevMacPktFree( RevMacPktGT *pkt );  /* Frees revMacPkt */
+
+extern void RcpStHwProgFrameOffset( kal_uint8 frameOffset );
+extern void DatapktlistRemoveLast(DatapktlistGT * pktlist);
+
+extern kal_uint8 FtapParamAssignCmpSent;
+
+
+/* rcptest.c */
+extern kal_bool   RcpProcTestMsg(void *MsgDataPtr, RcpTestMsgT MsgId, kal_uint32 MsgSize);
+
+/* CPBuf Test Cmds */
+extern kal_uint8 CpBufTestBufferCount;
+
+
+/* rcptxh.c */
+extern void   RcpTxhInit(void);
+extern kal_uint16 RcpGetChannelScale(RcpRevChanScaleT Channel, RcpChanScaleTypeT Type, kal_int16 ChanGain, kal_uint8 Qval);
+extern kal_uint32 RcpLinearChanScaleConv(kal_int16 Scale);
+extern kal_int16  RcpGetTchInitialKsAdjust(kal_int8 drcChanGainBase, kal_int8 ackChanGainBase);
+#if (defined(MTK_PLT_ON_PC))
+extern void   RcpRtmQosTxModeSelectionAlgo(RcpRtmQosTxModeSelectionAlgoMsgT *MsgDataPtr);
+
+extern void   CpBufProcessTestStatsCmd( CpBufTestCmdMsgT *MsgDataPtr);
+extern void   CpBufProcessTestGetCmd( CpBufTestCmdMsgT *MsgDataPtr);
+extern void   CpBufProcessTestFreeCmd( CpBufTestFreeCmdMsgT *MsgDataPtr);
+#endif
+
+/*pcpr.c*/
+extern kal_uint32 PcpRFormRevDummyMacPkt ( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT* pktList);
+extern kal_uint32 PcpRProcessGrant( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT* datapktList) ;
+extern kal_uint8  PcpRProcessGrantAcm(PcpAcmRtmGrantAllocationT *rcvdGrant, DatapktlistGT* datapktList);
+extern kal_uint8  PcprMacFlowListAddFuncPtrs(kal_uint16 SubType,
+                                                               MacFlow2StrFlowMappingT* pTable,
+                                                               kal_bool  (*getMaxPktPriorityFunc)( BestPktInfoT*, kal_uint8),
+                                                               void  (*phyTrafficAckedFunc)(kal_uint8,kal_uint8),
+                                                               void  (*phyTrafficMissedFunc)(kal_uint8,kal_uint8),
+                                                               void  (*pktSentFunc)(kal_uint8,kal_uint8),
+                                                               void  (*pktNotSentFunc)(kal_uint8,kal_uint8),
+                                                               kal_uint16 (*grant)( DatapktlistGT* , kal_uint16 grantSize, kal_uint8 revMacId, kal_uint8 subStreamNum),
+                                                               kal_uint32 (*getPktQueSz)(kal_uint8 macFlowId, kal_uint8 subStreamNum)
+                                                               );
+extern kal_bool PcpRAddPadBits( DatapktlistGT* datapktList, kal_uint16 val );
+extern void PcpRPktSent( kal_uint8 revMacId );
+extern void PcpRPktNotSent( kal_uint8 revMacId );
+extern void PcpRPhyTrafficAcked( kal_uint8 revMacId );
+extern void PcpRPhyTrafficMissed( kal_uint8 revMacId );
+extern void RcpAddNodeToMacFlowList( kal_uint8 macFlowId, kal_uint16 streamId, kal_uint8 substreamId, kal_bool NoCheckRlpActive );
+extern void RcpAddAppToMacFlow(kal_uint16 AppType, kal_uint8 StreamNum);
+extern kal_uint16 RcpFindAppTypeByStreamNum(kal_bool InUse,kal_uint8 StreamNum);
+extern kal_uint8  RcpFindStreamNumByAppType(kal_bool InUse,kal_uint16 AppType);
+extern void RcpDeleteNodeFromMacFlowList( void );
+
+extern void StreamInit(void);
+extern void StreamHandleStrCommitMsg(void);
+extern void StreamHandleStrReconfiguredMsg(void);
+extern void StreamCommit(void);
+
+extern kal_bool GetRtapTestPktMode(void);
+
+extern void PcpProcessGrantRtmTest
+(
+   PcpAcmRtmGrantAllocationT *grant,
+   DatapktlistGT             *pktlist );
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void PcpProcessGrantRtmNST(DatapktlistGT *pktlist);
+#endif
+
+#ifdef MTK_DEV_C2K_IRAT
+extern void RcpIratTxPowerReqHandler(void);
+#endif /* MTK_DEV_C2K_IRAT */
+
+/* Timing Profile Measurement */
+/* Macro does nothing */
+#define RCP_TIME_PROFILE_START() ((void) 0)
+#define RCP_TIME_PROFILE_END()   ((void) 0)
+
+void  RcpGetTxDataStat(kal_uint32* pTotalTxBytes, kal_uint32* pTotalTxNewPkts);
+void  RcpParSetDefServiceRlpFlow(kal_uint8 RlpFlow);
+kal_uint8 RcpParGetDefServiceRlpFlow(void);
+
+extern void RcpTxChanSweepModeRtmCommit(void);
+extern void RtmTxPathNotSetStHandleRcpTaskSig( void );
+extern void RtmSetupHandleRcpTaskSig(void);
+extern void RtmTxhProgActivateTCH(void);
+extern kal_uint8 RtmStateSilentChk(void);
+extern void RcpSendEltMsg(msg_type msg_id, local_para_struct *log_msg_ptr);
+#if defined (RCP_RI_HRT_DEV)
+extern void RcpRiStartTimer (kal_uint32 delay, kal_uint32 timerId, void* paramPtr,
+                             kal_timer_func_ptr Routine, kal_uint32 period);
+extern void RcpRiStopTimer (kal_uint32 timerId);
+extern kal_uint32 RcpRiCreateTimer (void);
+extern kal_uint32 RCP_CREATE_TIMER (kal_char *timer_name_ptr);
+extern void RCP_SET_TIMER (kal_uint32           ext_t_id,
+                           kal_timer_func_ptr   handler_func_ptr,
+                           void*                handler_param_ptr,
+                           kal_uint32           delay,
+                           kal_uint32           reshedule_time);
+extern void RCP_CANCEL_TIMER (kal_uint32 ext_timer);
+extern void RCP_CALLBACK_REG (kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType,
+                       SysEventTypeT EventType, module_type module_id, msg_type message,
+                       void (*Routine) (kal_uint32));
+extern void RCP_CALLBACK_REG_CANCEL (kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType,
+                                     SysEventTypeT EventType, module_type module_id, msg_type message,
+                                     void (*Routine) (kal_uint32));
+extern void rcp_cpbuf_free (const char *moduleName, unsigned lineNumber, CpBufferT *cpPktPtr);
+extern void RcpRiEvtHandler(void*  EvtPtr);
+extern void RcpRiTrigger(void);
+#define RCP_CPBUF_FREE(cpPktPtr) rcp_cpbuf_free (__FUNCTION__, __LINE__, cpPktPtr)
+#else
+extern event_scheduler * pRcpEs;
+
+#define RCP_CREATE_TIMER(timer_name_ptr) NULL
+#define RCP_SET_TIMER(timer_id, handler_func_ptr, handler_param_ptr, delay, reshedule_time) \
+        timer_id = evshed_set_event(pRcpEs, handler_func_ptr, handler_param_ptr, kal_milli_secs_to_ticks(delay))
+#define RCP_CANCEL_TIMER(timer_id) \
+        if (timer_id) evshed_cancel_event(pRcpEs, &timer_id)
+#if (defined (MTK_PLT_ON_PC_UT))
+#define RCP_CALLBACK_REG(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+        UNUSED_PARAMETER(ActionTime)
+#define RCP_CALLBACK_REG_CANCEL(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+        UNUSED_PARAMETER(ActionTime)
+#else
+#define RCP_CALLBACK_REG(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+        C2kSysCallbackRegister(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine)
+#define RCP_CALLBACK_REG_CANCEL(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+        C2kSysCallbackRegisterCancel(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine)
+#endif
+#define RCP_CPBUF_FREE(cpPktPtr) CpBufFree(cpPktPtr)
+#endif
+
+#if (!defined (MTK_PLT_ON_PC_UT)) && (defined (RCP_RI_HRT_DEV))
+extern void RCP_MSG_SEND4(module_type _src_mod_id, module_type _dest_mod_id, sap_type _sap_id, msg_type _msg_id);
+extern void RCP_MSG_SEND5(module_type _dest_mod_id, msg_type _msg_id, kal_uint8 *_msg_ptr, kal_uint16 _msg_length);
+extern void RcpRiSendUtsMsgToRcpTask(kal_uint32 msgId, kal_uint8* msg_ptr, kal_uint16 length);
+#else
+#define RCP_MSG_SEND4(_src_mod_id, _dest_mod_id, _sap_id, _msg_id) \
+        msg_send4(_src_mod_id, _dest_mod_id, _sap_id, _msg_id)
+#endif
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:15:23 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:19:41 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_rtmapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_rtmapi.h
new file mode 100644
index 0000000..6dbecc9
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_rtmapi.h
@@ -0,0 +1,411 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_rtmapi.h
+*
+* DESCRIPTION : API definition for RTCMAC.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_RTMAPI_H_
+#define _DO_RTMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_rcpapi.h"
+#include "do_dsaapi.h"
+#include "slc_nvram.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define  RTM_HARQ             1
+#define  RTM_LARQ             0
+#define  RTM_RAB_NOT_BUSY     0
+#define  RTM_RAB_BUSY         1
+#define  RTM_DRC_UNLOCK       0
+#define  RTM_DRC_LOCK         1
+#define  RTM_PHYNAK           1
+#define  RTM_PHYACK           0
+#define  RTM_ARQMODE_BPSK     0
+#define  RTM_ARQMODE_OOK      1
+#define  RTM_SILENT           1
+#define  RTM_NOT_SILENT       0
+
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+/* RTM_RUP_TCHASSIGN_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_uint8    frameOffset;               /* slots */
+   kal_uint8	drcLen;                    /* slots */
+   kal_int8	    drcChanGainBase;           /* 0.5db, valid range (-9dB,+6dB) */
+   kal_bool     dscChanGainBaseIncl;
+   kal_int8	    dscChanGainBase;           /* 0.5db */
+   kal_int8	    ackChanGain;               /* 0.5db, valid range (-3dB,+6dB) */
+   kal_uint8    numPilot;
+   kal_uint8	userMacId[SYS_MAX_ACTIVE_LIST_PILOTS];
+   kal_uint8    rabLength[SYS_MAX_ACTIVE_LIST_PILOTS];   /* slots */
+   kal_uint8    rabOffset[SYS_MAX_ACTIVE_LIST_PILOTS];   /* slots */
+   kal_bool     raChanGainIncl;            /* KAL_TRUE => RAChanGain included */
+   kal_int8     raChanGain[SYS_MAX_ACTIVE_LIST_PILOTS];  /* db */
+} PACKED_POSTFIX  RtmRupTchAssignMsgT;
+
+typedef struct
+{
+    kal_int32   hlarqPcomb;
+    kal_uint32 ciPcomb;
+}MacPcombInfo;
+
+typedef struct
+{
+    kal_uint16 PilotPN;
+    kal_uint16 ServCell;
+    kal_uint16 PwrEst;
+    kal_uint16 PcgId;
+}MacSectorInfo;
+
+typedef struct
+{
+   kal_bool parqValid;
+   kal_bool nextParqValid;
+   kal_uint8  hlarqTypePcomb;
+   kal_uint8  nextHLarqType;
+   kal_uint16  ServingPN;
+   kal_uint8 NumPcg;
+   kal_uint8 NumSec;
+   kal_uint8  PcgRenumId[RCP_MAX_NUM_PCGS];  /*PCG Id Renum Array*/
+   kal_uint8  SecRenumId[SYS_MAX_ACTIVE_LIST_PILOTS];/*Sector Id Renum Array*/
+   MacPcombInfo PcombInfo[SYS_MAX_ACTIVE_LIST_PILOTS];
+   MacSectorInfo MacSecInfo[SYS_MAX_ACTIVE_LIST_PILOTS];
+   kal_uint8 ArqServingCell;
+   kal_uint8 RtcMacSubtype;
+   kal_uint16 usRsv;
+} MbpGetMacBitsParamsT;
+
+
+/* RTM_CSM_USERMACID_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_uint8	userMacId;                 /* current userMacId from selected monitoring sector */
+} PACKED_POSTFIX  RtmCsmUserMacIdMsgT;
+
+
+/* RTM_AMP_TXATI_UPDATE_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_uint32   transmitATI;
+} PACKED_POSTFIX  RtmAmpTxAtiUpdateMsgT;
+
+
+/* RTM_OMP_SECTORPARMS_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_uint8	revlinkSilenceDuration;
+   kal_uint8	revlinkSilencePeriod;
+} PACKED_POSTFIX  RtmOmpSectorParmsMsgT;
+
+
+
+/* RTM_FTM_CFG_DATA_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_uint8	drcGating;
+   kal_uint8	dscLen;
+   kal_uint8	drcBoostLen;
+   kal_uint8	dscBoostLen;
+   kal_uint8	drcChanGainBoost;
+   kal_uint8	dscChanGainBoost;
+   kal_uint8	deltaAckChanGainMUP;
+} PACKED_POSTFIX  RtmFtmCfgDataMsgT;
+
+
+
+/* RTM_SCP_SESSION_OPEN_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_bool     sessionOpenFlag;  	/* KAL_TRUE => Session Opened */
+} PACKED_POSTFIX  RtmSmpSessionOpenMsgT;
+
+
+/* RTM_CSS_SEARCH_END_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_bool     cssSearchEndFlag;   /* KAL_TRUE => CSS Search Ended */
+} PACKED_POSTFIX  RtmCssSearchEndMsgT;
+
+
+/* RTM_RTAP_MODE_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_bool     bTestPktMode;
+
+   kal_bool     configuredPacketRateMode;
+   kal_uint8    rtapMinRate;  /* def=0 */
+   kal_uint8    rtapMaxRate;  /* def=5 */         /* PHY0/1, RTM0/1/2: Rate: 0-5
+                                                    0 = 0kbps
+                                                    1 = 9.6kbps
+                                                    2 = 19.2kbps
+                                                    3 = 38.4kbps
+                                                    4 = 76.8kbps
+                                                    5 = 153.6kbps  */
+   kal_bool     configuredPacketPayloadSizeMode;
+   kal_uint8    rtapMinPayloadSize;  /* def=0  */
+   kal_uint8    rtapMaxPayloadSize;  /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12
+                                                    0 = 0 bits
+                                                    1 = 96 bits
+                                                    2 = 224 bits
+                                                    3 = 480 bits
+                                                    4 = 736 bits
+                                                    5 = 992 bits
+                                                    6 = 1504 bits
+                                                    7 = 2016 bits
+                                                    8 = 3040 bits
+                                                    9 = 4064 bits
+                                                    10 = 6112 bits
+                                                    11 = 8160 bits
+                                                    12 = 12256 bits */
+} PACKED_POSTFIX  RtmRtapModeMsgT;
+
+
+
+
+/* RTM_TIMER_EXPIRED_MSG */
+typedef PACKED_PREFIX struct
+{
+   kal_uint32    timerId;
+} PACKED_POSTFIX  RtmTmrExpiredMsgT;
+
+
+
+
+/*------------------------*/
+/* MFC (RTM2/3) Interface */
+/*------------------------*/
+
+/* MFC output to RMM */
+typedef struct
+{
+   kal_uint8  revRate;		    /* For prog RRIData: RTM0/1/2=rateIndex */
+   kal_uint8  revPktSz;		    /* For prog RRIData: RTM2/3=pkSzIndex */
+   PcpAcmRtmGrantAllocationT *grant;   /* grant for PCP */
+   kal_uint8  transmissionMode; /* 1-LowLatency, 0-HighCapacity. Needed for MAC Trailer */
+} RtmMfcOutDataT;
+
+
+/* RMM input to MFC */
+typedef struct
+{
+   /* General params */
+   /*----------------*/
+   kal_uint8 prevPrevInterlace;    /* Previous previous Interlace which was tx */
+   kal_uint8 prevInterlace;        /* Previous Interlace which was tx */
+   kal_uint8 currInterlace;        /* Current Interlace that RTM is preparing for */
+   kal_uint8 prevSubpktId;         /* Previous SubpktId which was tx */
+   kal_uint8 currSubpktId;         /* Current SubpktId for this Interlace */
+
+   kal_uint8 revPktSzSentInPrevPrevInterlace;    /* rev packet size sent in Previous previous Interlace which was tx in n-2 subframe */
+   kal_uint8 revPktSzSentInPrevInterlace;        /* rev packet size sent in Previous Interlace which was tx in n-1 subframe */
+   kal_uint8 revPktSzSentInCurrInterlace;        /* rev packet size sent in Current Interlace which was tx in n-3 subframe */
+
+   kal_uint8 macLayerFormatSentInPrevInterlace;
+                                    /* RTM3: This is the Transmission Mode which was tx in n-1 subframe :
+                                       1-LowLatency, 0-HighCapacity. */
+
+   kal_bool  fwdChanValid;         /* Fwd chan valid or not, now */
+   kal_uint8 revLinkSilent;        /* RevLink silent or not, for the currInterlace */
+   kal_bool  newPktSentFlag;       /* T=>New pkt sent previously (Ack)
+                                  F=>Old pkt sent previously (Nak) */
+   PcpAcmRtmGrantAllocationT *grantTx;   /* grant that was actually transmitted.
+                                            Note that if newPkt was sent, this is the
+                                            grant that was formed earlier. If an oldPkt was
+                                            sent, then this will be the same grant for the
+                                            old pkt from subpktId=0, for this interlace. */
+   /* MAC Bits from MBP */
+   /*-------------------*/
+   kal_uint8 numPilots;            /* Number of Active Pilots */
+   kal_uint8 servingPN;            /* Which index corresponds to the servingPN */
+   kal_int8  frab;                 /* Soft value FRABn */
+   kal_uint8 qrab;                 /* Hard value qrabn */
+   kal_uint8 *qrabs;               /* Hard value qrabn,s for each Active Sector */
+   kal_uint8 *drcLock;             /* Note: */
+   kal_uint16 *pilotStrength;
+/* - Ptrs to the RtmMbpMacBits arrays xxx[SYS_MAX_ACTIVE_LIST_PILOTS] */
+                               /* - xxx[i] valid for numPilots */
+} RtmMfcInDataT;
+
+
+
+
+
+/*---------------*/
+/* MBP Interface */
+/*---------------*/
+
+/* MBP to RTM MAC Bit values */
+/* Mac Bits Values read from MAC Hw and processed by MBP */
+/* These are valid for the current subframe processed */
+typedef struct
+{
+   /* ARQ hw bits */
+   /*-------------*/
+   kal_uint8  hlarq;		                           /* Hard value of H/L-ARQ */
+   kal_uint8  parq;		                               /* Hard value of P-ARQ */
+
+									               /* Note: Valid for the valid pcg, otherwise -1 (i.e. non-compact) */
+   kal_int32  hlarqMetric[SYS_MAX_ACTIVE_LIST_PILOTS]; /* Soft value of H/L-ARQ for each PwrCtlGp */
+   kal_uint32 ciMetric[SYS_MAX_ACTIVE_LIST_PILOTS];    /* Soft value of C/I for each PwrCtlGp */
+
+   /* RAB, DRCLock, PS bits */
+   /*-----------------------*/
+   kal_uint8 numPilots;           /* Number of Active Pilots */
+   kal_uint8 servingPN;           /* Which index corresponds to the servingPN */
+   kal_int16  frab;                /* Soft value FRABn
+                                  (Hw)  softRABphy -> filter with FRABFilterTC to get SlotFRABm,s
+                                  (Mbp) SlotFRABm,s -> sample every subfr to get FRABn,s
+                                  (Mbp) FRABn -> Set to max of all ActiveS sec's FRABn,s */
+
+   kal_uint8 qrab;                /*  RTM0/1: RAB Hard value
+                                  RTM2/3: Hard value qrabn
+                                  (Hw)  softRABphy -> filter with QRABFilterTC to get SoftQRABm,s
+                                  (Mbp) SoftQRABm,s -> hard lim to get SlotQRABm,s every subfr = QRABn,s
+                                  (Mbp) qrabn -> OR of all Active Secs QRABn,s */
+
+                                                    /* Note: Valid for only numPilots entries (i.e. compacted array) */
+   kal_uint8 qrabs[SYS_MAX_ACTIVE_LIST_PILOTS];         /* Hard value qrabn,s for each Active Sector */
+   kal_uint8 drcLock[SYS_MAX_ACTIVE_LIST_PILOTS];       /* DRCLock bit for each PCG */
+   kal_uint16 pilotStrength[SYS_MAX_ACTIVE_LIST_PILOTS]; 		/* PilotStrength for each Active Sector */
+
+} RtmMbpMacBitsT;
+
+
+typedef enum
+{
+    RTM_QOS_SCALE_DRC=0,
+    RTM_QOS_SCALE_DRC_BOOST,
+    RTM_QOS_SCALE_DSC,
+    RTM_QOS_SCALE_DSC_BOOST,
+    RTM_QOS_SCALE_ACK_SUP,
+    RTM_QOS_SCALE_ACK_MUP,
+}RtmQosSetScaleSqT;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+extern RtmMbpMacBitsT RtmMbpMacBits;
+extern kal_bool           RtmCommitInProgressFlag;
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void  RtmInitStructures( kal_uint8 subtype, kal_bool inUse, kal_bool resetToDefaul);
+extern void  RtmCommit( void );
+extern kal_bool  RtmProcessConfigRspMsg( DsaFwdMsgT *pMsg );
+extern void  RtmProcessConfigReqMsg( DsaFwdMsgT *pMsg );
+extern kal_uint8 RtmSendConfigReqMsg( void );
+
+
+
+/* From MFC for RTM2/3 */
+/*---------------------*/
+extern kal_uint16 RcpRtmQuryDummyPktSize (void);
+extern void CalGrant3DataUpdate( void );
+extern void CalGrant3DataInit(void);
+
+extern kal_bool RtmMfcCalculateGrantSubtype23( RtmMfcInDataT *MfcIn, RtmMfcOutDataT *MfcOut );
+extern kal_bool RtmMfcCalculateGrantSubtype23Test( RtmMfcOutDataT *MfcOut );
+extern kal_bool RtmQoSMfcCalculateGrantSubtype23( RtmMfcInDataT *MfcIn, RtmMfcOutDataT *MfcOut );
+
+void RtmQosGetUpdatedGains(RevMacPktGT *pkt, kal_uint8 subPktId);
+
+extern kal_int16 RtmQosGetAuxPilotGain( kal_uint8  pktSz, kal_uint8 transmissionMode, kal_uint8 subPktId );
+
+extern kal_int16 RtmQosGetChannelGain( kal_uint8  pktSz, kal_uint8 transmissionMode );
+
+extern void RtmQosGrantSizeUpdate(RtmMfcOutDataT *MfcOut, kal_uint8 newMfcPktSz);
+
+extern kal_uint8 RtmQosGetMaxTxT2P( void );
+
+extern kal_uint32 RtmQosGetPotentialT2P( kal_uint8 macFlowID  );
+
+extern kal_uint16 RtmQosGetQueueOutflow( kal_uint8 macFlowID  );
+
+
+extern void RtmQosSetAvailableTxPwr( kal_int16 availableTxPwr);
+
+extern void RtmQosSetScaleDb2LinearSq( kal_int16 dBValue, RtmQosSetScaleSqT ScaleIdx);
+
+extern kal_uint16 RtmQosGetUpdatedRriScaleForNullRate(void);
+
+/* From MBP */
+/*----------*/
+extern void   MbpGetMacBits(kal_bool fwdChanValid, kal_uint8 revLinkSilent, MbpGetMacBitsParamsT *MbpGetMacBitsParamsIn, RtmMbpMacBitsT *MbpMacBitsPtr);
+
+extern kal_bool RtmRmmGetSilentStatus(kal_uint8 *revSilentStatus, kal_uint64 *revSilentStart);
+extern void RtmRmmCheckDRCSilentPending(void);
+extern void RtmRmmCheckDelayedDRCSilentEntry(void);
+
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void Rtm01CreateInConfigInstance(kal_bool resetToDefault);
+extern void Rtm01CommitHandler(void);
+extern void  RtmScmSetupConfigInterface(kal_uint16 subtype);
+extern void  Rtm3CreateInConfigInstance(kal_bool resetToDefault);
+extern void Rtm3CommitHandler(void);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/fcpdefs.h b/mcu/interface/protocol/l2_c2k/evdo/fcpdefs.h
new file mode 100644
index 0000000..083fe89
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/fcpdefs.h
@@ -0,0 +1,482 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+#ifndef FCPDEFS_H
+#define FCPDEFS_H
+/*****************************************************************************
+ 
+  FILE NAME:  fcpdefs.h
+
+  DESCRIPTION:
+
+    This file contains all the 'hidden' constants and typedefs 
+    that are internal to the FCP task & all its associated modules..
+
+
+*****************************************************************************/
+
+#include "sysapi.h"
+#include "cpbuf.h"
+#include "do_fcpapi.h"
+#include "do_clcapi.h"
+#include "do_dsaapi.h"
+#include "slc_nvram.h"
+
+#define   PACKET_REC_VALID_SHIFT     31 /* for DRC module to use...*/
+#define   DRC0_CT_ISSUE
+#define   HWD_ST_SYMB_NUM_MASK            0x000007FF  
+
+#ifdef FCP_FTM_DRC_MIPS_BY_PASS
+     #undef FCP_FTM_DRC_MIPS_BY_PASS
+#endif
+
+#define  DRC_SLMS_ON
+
+#ifdef SYS_OPTION_DRC_DEBUG_ACTIVE
+
+            /* SLMS updating functions: it might be always ON later..*/
+    #define  DRC_IMP_SPY_ON 
+    #define  DRC_ALG_DBG_SPY_ON 
+    #define  DEBUG_SLMS              
+ 
+#endif /* end of SYS_OPTION_DRC_DEBUG_ACTIVE*/
+/*------------------------------------------------------------------------
+* global vaiables..
+*------------------------------------------------------------------------*/
+typedef enum {
+
+ CCM_SUP_TIMER_ID,
+
+}FcpTimerId;
+/*------------------------------------------------------------------------
+* global Typedefs..
+*------------------------------------------------------------------------*/
+typedef struct {
+  kal_bool formatB; // [0==FormatA; 1==FormatB]
+  kal_bool encrypted;
+}MacPktInfoT;
+
+typedef struct FwdLinkPkt
+{
+   CpBufferT*  CpBufPtr;
+   
+   kal_uint16      PktLen;
+   kal_uint16      PktStartOffset;
+   kal_uint16      SysTimeInSlots;
+   kal_uint8       endPoint;
+
+   /* Mac hdr information */
+   MacPktInfoT macHdrInfo;
+   kal_uint8      FwdPhyslots;
+   kal_uint8      FwdMacPkts;
+   kal_uint8      FwdPayLoadSize;
+   DoChanTypeT   FwdPhyChanType;
+}FwdLinkPktT;
+
+typedef struct FwdLinkPktBufList
+{
+    FwdLinkPktT  *head;
+    FwdLinkPktT  *tail;
+    kal_uint32 count;
+}FwdLinkPktBufListT;
+
+typedef struct
+{
+    kal_uint32  PacketRec;
+    kal_uint16   PacketPayload[6];  /* part of payload */ 
+} DmaMdmRxSlotInfoT;
+
+typedef struct
+{
+    kal_uint32  DmaRxStatus;
+    DmaMdmRxSlotInfoT   PacketInfo[RX_MDM_INT_INTERVAL];
+} DmaMdmRxInfoT;
+
+typedef struct
+{
+    /* temp structure, need work with FTAP */
+    kal_uint16 FixedTxDrcValue;    
+    kal_uint16 DrcMode;      
+} FtmFtapDrcAckConfigT;
+
+/*  DRC ETS message */
+typedef struct
+{
+  kal_uint16    DesigDRC;
+  kal_uint16    MaxDRCLim;
+  kal_uint16    Data_3;
+  kal_uint16    Data_4;
+
+} FtmDRCEtsMsgT;
+
+typedef enum
+{
+   RXSD_FIR_AUTO,
+   RXSD_FIR_DEFAULT,
+   RXSD_FIR_POKE_HW
+}RxsdFirTapTestModeT;
+typedef enum
+{
+   RMC_MMSE_MRC_AUTO,
+   RMC_FORCE_MRC
+}RmcMmseMrcT;
+
+
+typedef enum
+{
+    ETS_FIX_TXDRC_SET     = 0,
+    ETS_FIX_TXDRC_DISABLE = 1
+}FcpTestFixDrcValModeT;
+
+typedef struct
+{
+    FcpTestFixDrcValModeT  EtsFixDrcValMode;
+    kal_uint8                  EtsFixDrcVal;
+} FcpTestFixDrcValMsgT;
+
+typedef enum
+{
+    FCP_STAT_PERIOD_128_FRAME     = 128,
+    FCP_STAT_PERIOD_256_FRAME     = 256,
+    FCP_STAT_PERIOD_512_FRAME     = 512,
+    FCP_STAT_PERIOD_1024_FRAME    = 1024
+}FcpPerfStatPeriodTypeT;
+
+typedef struct
+{
+    FcpPerfStatPeriodTypeT     EtsStatPeriod;
+} FcpSetPerfStatPeriodMsgT;
+
+typedef enum 
+{
+    BATI_MATCH,
+    BATI_MISMATCH,
+    NON_BATI_MATCH,
+    NON_BATI_MISMATCH
+}ATIMatchStatus;
+
+/* FTM states */
+typedef  enum
+{
+    Inactive = 0,
+    Variable_Rate,
+    Fixed_Rate
+}FTMStateTypeT;
+
+typedef struct
+{
+    kal_uint8       DRCLength; /* real DRCLength = 2^DRCLength */
+    kal_uint8       DRCChannelGain;
+    kal_uint8       ACKChannelGain;
+    kal_uint8       DRCCover;
+    kal_uint8       FixedDRCRate;
+}FTMParametersT;
+
+
+/********************************************************
+ *    Enhanced FTM SC
+ ********************************************************/
+
+typedef struct
+{
+    kal_uint8        SubType; /* Default*/
+    kal_uint8        DRCGating;/*default*/
+    kal_uint8        DRCLockLength; /* Default*/
+    kal_uint8        SofterHandoffDelay; /* default:non public */
+    kal_uint8        SoftHandoffDelay;/* default: non public */ 
+    kal_uint16       NullRateDRC384Enable;/* Default Only*/
+    kal_uint16       DRCLockPeriod;/* Default only*/   
+    kal_uint8        MultiUserPacketsEnabled;
+    kal_uint8        DSCLength;
+    kal_uint8        DeltaACKChannelGainMUP;
+    kal_uint8        ShortPacketsEnableThresh;
+    kal_uint8        SingleUserMultiplexPacketsEnabled;
+    kal_uint8        DRCSupervisionTimer;
+    kal_uint8        MinimumContinuationSpan;
+    kal_uint8        DSCChannelGainBoost;
+    kal_uint8        DSCBoostLength;
+    kal_uint8        DRCChannelGainBoost;
+    kal_uint8        DRCOffset[15];/* DRCOffset:1 - 14, 0 is invalid */
+} FTMAttributeT;
+
+typedef struct
+{
+    FTMAttributeT       FTMAttributes;
+    FTMParametersT      FTMParameter;
+}FTMPersonalityInfoT;
+
+
+#define  FTMDataTypeT       FTMPersonalityInfoT
+
+
+/* AttributeId */
+typedef enum 
+{
+    FTM_DEFAULT_DRC_GATING_ATTRIBID = 0xff,
+    FTM_DEFAULT_NULL_RATE_ATTRIBID = 0xfd,
+    FTM_DEFAULT_DRC_LOCK_ATTRIBID=0x01,
+    FTM_DEFAULT_HANDOFF_DELAY_ATTRIBID=0x00
+} FtmDefaultAttribIdT; 
+
+typedef enum
+{
+    FTM_ENHANCE_DRC_GATING_ATTRIBID=0xff,
+    FTM_ENHANCE_DRC_LOCK_LEN_ATTRIBID=0xfe,
+    FTM_ENHANCE_MUL_USR_PKT_EN_ATTRIBID=0xfd,
+    FTM_ENHANCE_DSC_LEN_ATTRIBID=0xfc,
+    FTM_ENHANCE_DELTA_ACK_CHAN_GAIN_MUP_ATTRIBID=0xfb,
+    FTM_ENHANCE_SHORT_PKT_EN_THRESH_ATTRIBID=0xfa,
+    FTM_ENHANCE_SINGLE_USR_MUL_PKT_EN_ATTRIBID=0xf9,
+    FTM_ENHANCE_DRC_SUPERVISION_TIMER_ATTRIBID=0xf8,
+    FTM_ENHANCE_MIN_CON_TIMER_ATTRIBID=0xf7,
+    FTM_ENHANCE_DSC_CH_GAIN_BOOST_ATTRIBID=0xf6,
+    FTM_ENHANCE_DSC_BOOST_LEN_ATTRIBID=0xf5,
+    FTM_ENHANCE_DRC_CH_GAIN_BOOST_ATTRIBID=0xf4,
+    FTM_ENHANCE_DRC_BOOST_LEN_ATTRIBID=0xf3,
+ 
+    FTM_ENHANCE_HANDOFF_DELAY_ATTRIBID=0x00,
+    FTM_ENHANCE_DRC_TRANS_OFFSET_ATTRIBID=0x01   
+}FtmEnhanceAttribIdT;
+
+typedef enum
+{
+    FTM_DRC_GATING_CONTINUOUS=0,
+    FTM_DRC_GATING_DISCONTINUOUS,
+} FtmDrcGatingT;
+
+typedef enum
+{
+    FTM_DRC_LOCK_LENGHT_8=0,
+    FTM_DRC_LOCK_LENGHT_16,
+    FTM_DRC_LOCK_LENGHT_32,
+    FTM_DRC_LOCK_LENGHT_64
+} FtmDrcLockLengthT;
+
+typedef enum
+{
+    FTM_SHORT_PKT_EN_THRESH_1024,
+    FTM_SHORT_PKT_EN_THRESH_2048,
+    FTM_SHORT_PKT_EN_THRESH_3072,
+    FTM_SHORT_PKT_EN_THRESH_4096
+}FtmShortPacketsEnabledThreshT;
+
+
+#define FWDLINKPKTT_SIZE sizeof(FwdLinkPktT)
+#define NUM_MAC_FWDLIST_NODES 100 
+#define NUM_PCP_FWDLIST_NODES 100 
+#define NUM_CRCPASS_NUM  100 
+
+
+/*------------------------------------------------------------------------
+* global defines.. 
+*------------------------------------------------------------------------*/
+#define DMA_RX_PTR_BASE 0x0B450000
+#define DMA_RX_PRM_BASE 0x0B450000
+
+#define CRC_VALID  0x00000008
+#define VALID_PKT 0x80000000
+#define GOOD_PKT  0x40000000
+#define MAC_INDEX 0x1FC00000
+#define DMA_LENGTH 0x00038000
+#define CRC_TYPE   0x00004000
+
+#define SYNC_CAPSULE_BIT 0x80
+#define FIRST_PACKET 0x40
+#define LAST_PACKET 0x20
+#define CCM_OFFSET 0x18
+#define SLP_STATE_CAPSULE_DONE 0x04
+
+#define SEC_LAYER_FORMAT_BIT 0x80
+#define CONN_LAYER_FORMAT_BIT 0x40
+#define ATI_MASK_2BITS 0x03
+
+#define TRAFFIC_CH_CONNECTION_LAYER_FORMAT_BIT  0x80
+#define TRAFFIC_CH_MAC_LAYER_FORMAT_BIT         0x40
+#define TRAFFIC_CH_MAC_LAYER_PHY2_TRAILER       0xC0
+#define PACKET_REC_MPA_SPY_SIZE 32
+#define DRC_SLOT_INVALID                        0
+#define DRC_SLOT_CCH_DATA                       2
+#define DRC_SLOT_SINGLE_USER_SIMPLEX            1
+#define DRC_SLOT_SINGLE_USER_MULPLEX            3
+#define DRC_SLOT_MULTI_USER                     5
+
+#define MEM_LEAK_CHK_ALLOC  { \
+     extern kal_int32 FwdPktListBufferCnt; \
+     FwdPktListBufferCnt++; \
+     dhl_print ("FwdListBufferCnt: %x", FwdPktListBufferCnt); \
+    }\
+
+
+#define MEM_LEAK_CHK_FREE  { \
+     extern kal_int32 FwdPktListBufferCnt; \
+     FwdPktListBufferCnt--; \
+     dhl_print ("FwdListBufferCnt: %x", FwdPktListBufferCnt); \
+    }\
+
+#define CPBUF_LEAK_CHK_ALLOC( Buf)  { \
+     dhl_print ("CpBuf:RefCnt:%x Addr: %x", Buf->refcount, Buf->dataPtr); \
+    }\
+
+
+#define CPBUF_LEAK_CHK_FREE( Buf)  { \
+     dhl_print ("CpBuf:RefCnt:%x Addr:%x", Buf->refcount, Buf->dataPtr); \
+    }\
+
+
+#define PRINT_MAC_PKT_INFO { \
+   MonPrintf("NewPktInfo: Len:%x", length); \
+   MonPrintf("NewPktInfo: FormatB:%x",newPkt->macHdrInfo.formatB); \
+   MonPrintf("NewPktInfo: Ency:%x",newPkt->macHdrInfo.encrypted); \
+   MonPrintf("NewPktInfo: PktStartOffset:%x",newPkt->PktStartOffset); \
+} \
+
+/**********************************************************/
+/* These MACROs are used to parse the Fwd MAC Packets     */
+/* Subtype 2.                                             */
+/**********************************************************/
+#define SU_SIMPLEX_B     0xC0
+#define SU_SIMPLEX_A     0x40
+#define SU_MULTIPLEX     0x80
+#define MULT_USR         0x00
+
+/*------------------------------------------------------------------------
+ * Globle Declarations
+ *------------------------------------------------------------------------*/
+
+typedef struct
+{
+    kal_uint16 timeStampInSlot;
+    kal_uint8  UserMacIdx;
+    kal_uint8 control_2;
+    kal_uint32 packetRec[PACKET_REC_MPA_SPY_SIZE];
+    kal_uint16 Drc_C2i[PACKET_REC_MPA_SPY_SIZE]; 
+} PacketRecSpyT;
+
+typedef struct
+{
+    kal_bool   ValidPack;      
+    kal_bool   GoodPack;     
+    kal_bool   BCMCSPack;      
+    kal_uint16 Macid;        
+    kal_uint8  DRCVal;      
+    kal_uint8  EPSize;       
+    kal_uint8  RateDet;    
+    kal_uint8  SlotCount;    
+    kal_uint8  TimeStamp;
+    kal_bool   CRCStatus;          
+    kal_uint8  ReserveBit; 
+    kal_bool   RecStart; 
+    kal_bool   PacketComplete;
+    kal_bool   ControlChan; 
+    kal_uint16 PacketC2I;    
+} FcpPacketRecordDataT;
+
+typedef struct
+{
+    FTMStateTypeT   State;    
+} FcpFtmStateT;
+
+
+/******************************************************************************
+    Global
+******************************************************************************/
+typedef enum
+{
+    FTM_FIXMODE_ENABLE_MSG,
+    FTM_FIXMODE_XOFF_MSG,
+    FTM_SCP_CONFIG_REQ_MSG = 0x50,
+    FTM_SCP_CONFIG_RSP_MSG,
+    FTM_ATTRI_UPDATE_REQ_MSG     = 0x52,
+    FTM_ATTRI_UPDATE_ACCEPT_MSG  = 0x53,
+    FTM_ATTRI_UPDATE_REJ_MSG     = 0x54
+}FtmOtaMsgIdT;
+
+
+/******************************************************************************
+    Prototypes
+******************************************************************************/
+
+extern void    CcmInitialize( void );
+extern void    CcmDeActivate( void );
+extern void    CcmActivate( void );
+extern void    PcpClearCLPPktList(void);
+extern void    PcpInitialize(void);
+extern void    FtmDeActivate( void );
+extern void    FtmActivate( void );
+extern void    FtmFtapDrcAckConfig(FtmFtapDrcAckConfigT *CtrlPtr );
+
+extern void    FtmInitialize( void );
+extern void    FTMStateSet(FTMStateTypeT  State);
+extern FTMStateTypeT FTMStateGet(void);
+extern void    FTMEventProc(msg_type MsgId, ilm_struct *current_ilm);
+extern void    DRCFixedTxRateSet(FtmFtapDrcAckConfigT*   FtapMsgP);
+extern void    FcpDRCSlotAttrSet(kal_uint32   AttrValue);
+extern void    DRCEtsMsgProc(FtmDRCEtsMsgT   *MsgP);
+extern void    FcpFixDrcVal(FcpTestFixDrcValMsgT *MsgDataP);
+#if defined (MTK_DEV_ENGINEER_MODE)
+extern void    FixDrcModeProcess(kal_bool Start);
+#endif
+extern kal_uint8*  FtmAttributeRequest(kal_bool DefaultMac);
+extern void    DRCFTCAttributesGet(void);
+extern void    DRCParameterReinstate(void);
+extern void    CcmSupTimerReset(void);
+extern void    CcmHandleEltCcmSupervisionExpiredCmdMsg(EltCcmSupervisionExpiredCmdMsgT *MsgDataP);
+extern void    CcmSupervisionExpiredInAccessState(void);
+
+extern void    FwdLinkPktBufInit( FwdLinkPktT *rec );
+extern void    FwdLinkPktBufPoolInit(void);
+extern FwdLinkPktT* FwdLinkPktBufGet(void);
+extern void    FwdLinkPktBufFree( FwdLinkPktT *rec );
+
+extern void    StreamInitialize(void);
+extern void    ProcessRcpStreamConfigMsg(void *MsgDataP);
+extern kal_uint16  FcpFindAppTypeByStreamNum(kal_uint8 StreamNum);
+extern void    CcmKeepAliveCfgMsg(CcmSmpKeepAliveCfgT* MsgDataPtr);
+extern void    CcmSessionOpened(void);
+extern void    CcmSessionClosed(void);
+extern void    FtmProcessOtaFwdSigMsg(DsaFwdMsgT *MsgDataP);
+extern void    DsafProcessOtaFwdMsg(DsaFwdMsgT *MsgDataP);
+extern kal_uint8   FcpAcquireMacIndex(void);
+extern kal_uint16  FcpAcquirePER(void);
+
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/ftapf.h b/mcu/interface/protocol/l2_c2k/evdo/ftapf.h
new file mode 100644
index 0000000..ec09637
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/ftapf.h
@@ -0,0 +1,247 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : FTAPF.h
+*
+* DESCRIPTION : Varaibles and API definition for FTAP module.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _FTAPF_H_
+#define _FTAPF_H_
+
+#include "do_dsaapi.h"
+#include "do_fcpapi.h"
+#include "fcpdefs.h"
+
+#define FTAP_OTA_MESSAGEID_LEN            8
+#define FTAP_OTA_TRANSID_LEN              8
+#define FETAP_PARAASSIGNMSG_RECORD_NUM    5
+#define FTAP_PARAASSIGNMSG_RECORD_NUM     4
+#define FTAP_PARAM_ASSIGN_ATTR_LEN        8
+#define FTAP_PARAM_ASSIGN_ATTR_ID_LEN     8
+#define FTAP_PARAM_ASSIGN_ATTR_VAL_LEN    8
+#define FTAP_STATISTICREQ_RECORD_NUM      3
+#define FTAP_STATUS_ATTR_LEN              8
+#define FTAP_STATUS_ATTR_ID_LEN               8
+#define FTAP_STATUS_ATTR_PARAM1_OVERFLOW_LEN  1
+#define FTAP_STATUS_ATTR_PARAM1_VALUE_LEN     15
+#define FTAP_STATUS_ATTR_PARAM2_OVERFLOW_LEN  1
+#define FTAP_STATUS_ATTR_PARAM2_VALUE1_LEN    23
+#define FTAP_STATUS_ATTR_PARAM2_VALUE2_LEN    15  /*Only for CCTime*/
+#define FTAP_LOOPBACK_PRO_LEN                 2
+#define FTAP_LOOPBACK_PKTTYPE_LEN             4
+#define FTAP_LOOPBACK_SEQ_LEN                 14
+#define FTAP_LOOPBACK_RES_LEN                 2
+
+#define PENDING_TRAFFICCMP     0x01
+#define PENDING_STATUSGETRSP   0x02
+#define PENDING_STATUSCLRRSP   0x04
+
+#define CONFIGTIMER_INTERVAL   4000
+#define CONFIGSTAT_INTERVAL    2000
+
+typedef enum
+{
+    FCP_FTAP_INIT_SUBTYPE_ERR,
+    FCP_FTAP_STATE_ERR,
+    FCP_FTAP_OTA_PARAMASSIGN_MSG_ID_ERR,
+    FCP_FTAP_DECODE_OTA_PARAMASSIGN_MSG_ID_ERR,
+    FCP_FTAP_OTA_PARAMASSIGN_ERR,
+    FCP_FTAP_OTA_STATUS_CLR_GET_MSG_ID_ERR,
+    FCP_FTAP_OTA_STATUS_GET_MSG_ID_ERR,
+    FCP_FTAP_OTA_STATUS_GET_MSG_ERR,
+    FCP_FTAP_MSG_ID_ERR,
+    FCP_FTAP_INIT_ERR,
+    FCP_FTAP_TIME_EXP_ERR,
+    FCP_FTAP_FORWARD_LINK_ERR,
+    FCP_FTAP_DSAR_TX_STATUS_ERR,
+}FtapfErrT;
+
+/*keep order with ALMP*/
+typedef enum
+{
+    FTAP_INIT_STATE,
+    FTAP_IDLE_STATE, 
+    FTAP_CONN_SETUP_STATE,
+    FTAP_CONNECTED_STATE
+} FtapStateT;
+
+typedef enum
+{
+    FTAP_PARAM_ASSIGN_MESSAGE       = 0x00,
+    FTAP_PARAM_ASSIGN_CMP_MESSAGE   = 0x01,
+    FTAP_STATS_CLR_REQ_MESSAGE      = 0x02,
+    FTAP_STATS_CLR_RSP_MESSAGE      = 0x03,
+    FTAP_STATS_GET_REQ_MESSAGE      = 0x04,
+    FTAP_STATS_GET_RSP_MESSAGE      = 0x05,
+    NUM_MSG
+}FtapMsgTypeT;
+
+typedef  enum
+{
+    DRCValueFixedModeAttrID     = 0x00,
+    DRCCoverFixedModeAttrID     = 0x01,
+    ACKChanBitFixedModeAttrID   = 0x02,
+    LoopBackModeAttrID          = 0x03,
+    AckChannelModulationType    = 0x04,
+    NUM_TYPE
+}FtapParamRecAttriIDType;
+
+typedef enum
+{
+    FTAP_CONFIG_ID,
+    FTAP_STAT_GET_ID,
+    FTAP_STAT_CLR_ID,
+    NUM_MSG_ID
+}FtapTimerIdType;
+
+typedef enum
+{
+    FTAP_PARAM_ASSIGN_CMP_MSG_TRANSID = 0x10,
+    FTAP_STAT_GET_RSP_TRANSID,
+    FTAP_STAT_CLR_RSP_TRANSID,
+    NUM_TRANSID
+} FtapTransIdType;
+
+typedef  enum
+{
+    IdleASPStatesAttrID         = 0x04,
+    ConnectedSSStatesAttrID     = 0x05,
+    FirstSyncCCPktStatesAttrID  = 0x06
+}FtapStatisticsRecAttriIDType;
+
+typedef struct
+{
+    kal_uint16 ConnectionSSChange;
+    kal_uint32 ConnectedTime;
+    kal_uint32 ConnectedTimeStarted;
+    kal_uint16 FirstSyncCCPkt;
+    kal_uint16 CCTime;     
+    kal_uint32 CCTimeStarted;
+    kal_uint32 IdleASPChange;
+    kal_uint32 IdleTime;
+    kal_uint32 IdleTimeStarted;
+}FtapStatisticsT;
+
+typedef struct
+{
+    kal_timerid TimerId;
+    kal_bool        bTimeCreated;
+}FtapTimeT;
+
+typedef struct
+{
+    kal_bool  bAckChannelBitFixedMode;
+    kal_uint8 AckChannelBit;
+    kal_bool  bDRCCoverFixedMode;
+    kal_uint8 DRCCover;
+    kal_bool  bDRCValueFixedMode;
+    kal_uint8 DRCValue;
+    kal_bool  bAckChannelModulationMode;
+    kal_uint8 ACKChannelModulationType;
+    kal_bool  bLoopBackEnable;
+    kal_uint8 LoopBackPersistence;
+    FtapTimeT timer[NUM_MSG_ID];
+    kal_uint8 MsgTransId[NUM_MSG_ID];
+    kal_uint8 TCAMsgSeq;
+    FtapStateT state;
+    kal_bool   bInit;
+    kal_uint16 SubApp;
+    kal_uint8  ProtocolType;
+}FtapMode;
+
+typedef struct
+{
+    kal_uint8 len;
+    kal_uint8 AttrID;
+    kal_uint8 RecValue;
+}FtapAttriRecT;
+
+typedef struct
+{
+    kal_uint8 TransId;
+    kal_uint8 AttriNum;
+    FtapAttriRecT AttriRec[FETAP_PARAASSIGNMSG_RECORD_NUM];
+}FtapParaAssignMsgT;
+
+typedef struct
+{
+    kal_uint8 TransId;
+    kal_uint8 AttrNum;
+    FtapStatisticsRecAttriIDType AttrId[FTAP_STATISTICREQ_RECORD_NUM];
+}FtapStatsReqMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint8 IdleASPStats;
+    kal_uint8 ConnectedSSStats;
+    kal_uint8 FirstSyncCCPktStats;
+} PACKED_POSTFIX FtapEtsStatClrGetReqMsgT;
+
+typedef struct
+{
+    kal_uint8 FtapClrReqTransId;
+    kal_uint8 FtapGetReqTransId;
+}FtapEtsClrGetReqMsgInfoT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint32 IdleASPChange;
+    kal_uint32 IdleTime;
+    kal_uint32 ConnectedSSChange;
+    kal_uint32 ConnectedTime;
+    kal_uint32 FirstSyncCCPkt;
+    kal_uint32 CCTime;
+} PACKED_POSTFIX FtapStatSpyT;
+
+void RunFtapfStateMachine(ilm_struct *current_ilm);
+void ProcessFtapDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+kal_bool FtapProcessDsarTxStatusMsg(DsarTxStatusMsgT *StatusMsgP);
+
+extern FtapMode _ftapMode;
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/paflist.h b/mcu/interface/protocol/l2_c2k/evdo/paflist.h
new file mode 100644
index 0000000..743d038
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/paflist.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : paflist.h
+*
+* DESCRIPTION :  General purpose linked list routines.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _PAFLIST_H_
+#define _PAFLIST_H_
+
+/*----------------------------------------------------------------------------
+Include Files
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+Global Typedefs
+----------------------------------------------------------------------------*/
+
+struct _LIST_NODE;
+struct _LIST_STR;
+
+typedef struct _LIST_NODE
+{
+    struct _LIST_NODE* next;
+    struct _LIST_NODE* prev;
+    void* data;
+}  LIST_NODE;
+
+typedef struct _LIST_STR
+{
+    LIST_NODE* outHead;
+    LIST_NODE* inTail;
+    LIST_NODE* pNode; /* used to scan the list */
+    struct _LIST_STR* free;
+    kal_uint16 numRecords;
+    kal_uint8 nRLPFlow;
+    kal_uint8 nAppType;
+    kal_uint32 ss;
+    kal_uint8 DataUnit;
+} LIST_STR;
+
+typedef kal_bool  (*pPAFMATCH_FUNC)(void* list, void* testRec, void* listRec);
+#define NULL_NODE (LIST_NODE*)(0)
+#define NULL_LIST (LIST_STR*)(0)
+
+/* define values for where to start when getting from queue */
+#define FROM_HEAD    KAL_TRUE
+#define FROM_TAIL    KAL_FALSE
+
+/* define values for where to start when putting to queue */
+#define TO_HEAD      KAL_TRUE
+#define TO_TAIL      KAL_FALSE
+
+/*----------------------------------------------------------------------------
+Global Data
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+Global Function Prototypes
+----------------------------------------------------------------------------*/
+
+kal_uint16 PafNumElements(LIST_STR* list);
+void PafCreateFreeList(LIST_STR* flist, LIST_NODE* nodeRecs, kal_uint16 nRecs);
+void PafCreateEmptyList(LIST_STR* list, LIST_STR* flist);
+void PafCreateFullList(LIST_STR* list, LIST_STR* flist, void* recs, kal_uint16 nRecs, kal_uint16 recSize);
+kal_bool PafPutRecord(LIST_STR* list, kal_bool toHead, void* rec);
+kal_bool PafPutRecordAt(LIST_STR* list, kal_bool toHead, void* rec, pPAFMATCH_FUNC matcher);
+kal_bool PafGetRecord(LIST_STR* list, kal_bool fromHead, void** rec, kal_bool removeFromList);
+kal_bool PafGetFirstMatch(LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+                      pPAFMATCH_FUNC matcher, kal_bool removeFromList);
+kal_bool PafGetNextMatch(LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+                     pPAFMATCH_FUNC matcher, kal_bool removeFromList);
+void PafFlushList(LIST_STR* list);
+void PafMoveList(LIST_STR* fromList, LIST_STR* toList);
+kal_bool PafGetHeadNode(LIST_STR* list, LIST_NODE* *node, kal_bool removeFromList);
+
+#endif /* _PAFLIST_H */
diff --git a/mcu/interface/protocol/l2_c2k/evdo/pafrlp.h b/mcu/interface/protocol/l2_c2k/evdo/pafrlp.h
new file mode 100644
index 0000000..7a7cf73
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/pafrlp.h
@@ -0,0 +1,247 @@
+/*****************************************************************************
+*  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) 2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _PAFRLP_H_
+#define _PAFRLP_H_ 1
+
+#include "paflist.h"
+#include "cpbuf.h"
+#include "hlpapi.h"
+#include "fcpdefs.h"
+#include "do_rcpapi.h"
+#include "do_rcp_msgid.h"
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "md_sap.h"
+
+
+#define NUM_RLP_RESEQ_REC   1500
+#define FCP_TASK_INTERVAL     4
+#define PAF_RLP_ABORT_TIMER_INTERVAL  500          /*500 ms for abort timer. */
+#define PAF_RLP_FLUSH_TIMER_INTERVAL  300
+#define PAF_RLP_DDW                       (48/FCP_TASK_INTERVAL)
+#define PAF_RLP_ABORT_BACKOFF_INTERVAL   80   /*48 slot * 1.6667 */
+#define PAF_DATAPASS_UPPERLAYER_INTERVAL 1
+#define MAX_NAK_REC_NUM 20  /* Max NakRequests # in Nak msg */
+#ifdef CBP7_EHRPD
+#define NUM_RLP_ROUTE_PROTOCOL_PKT_REC   1
+#endif
+
+
+/* See 0x18 ~ 0x1c most of time in field test, which shall be from RLP_NAK. So if it is less than 0x14, flag monfault.*/
+#define DELAY_RLP_OCTET_NAK_FAULT_INTERVAL (20)
+typedef enum
+{
+    PAFRLP_NULL_ST,
+    PAFRLP_DATA_ST,
+    PAFRLP_RESET_ST,
+    PAFRLP_MAX_ST
+}
+PafRlpStateT;
+
+
+typedef struct PafReseqRecT
+{
+    kal_uint32    seq;
+    kal_uint16    len;
+    CpBufferT    *datap;
+    kal_uint16    dataoffset;
+#ifdef CBP7_EHRPD
+    kal_bool     FirstDataUnit;
+    kal_bool     LastDataUnit;
+#endif
+} PafReseqRecT;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+    kal_uint32 seq;          /* First seq of this route packet */
+    kal_uint32 nextSeq;      /* Next seq of this route packet to receive */
+    kal_bool   IsCompletedPacket;
+    LIST_STR routePacketQ;
+} PafRouteProtocolPktT;
+#endif
+
+typedef struct
+{
+    kal_uint8 nAppType;
+    kal_uint8 nRLPFlow;
+    kal_uint8 RLPId;
+    kal_uint8 RLPIDLen;
+    kal_uint8 SeqLen;
+    PafRlpStateT stRlp;
+    kal_bool bFlowNakEnabled;
+    /*This is the timer for passing the in sequence RLP packet to upper layer*/
+    kal_uint8 nDataPassUpperlayerInterval;
+    HlpRlpFwdDataPktT *pHlpRlpFwdDataIndMsg;
+    kal_uint32 vr;
+    kal_uint32 vn;
+    kal_uint32 ss; // Sequence Space for this RLP
+    LIST_STR reseqQ;
+    LIST_STR nakGapQ;
+#ifdef CBP7_EHRPD
+    kal_uint8 RoutePDU;  /* Octet stream or packet stream */
+    kal_uint8 DataUnit;
+    kal_uint8 nRoute;
+    LIST_STR routeProtocolPktQ;
+#endif
+}PafRlpInstanceT;
+
+typedef struct PafNakGapRecT
+{
+    kal_uint32   seq;
+    kal_uint16    len;
+    //initialized as the Tddw in units of slot when added be NakGapQ, will be
+    //descreased in PAFApplicationLayerProcessing() when received
+    //FCP_TASK_SIG and when it reaches zero, the NAK for this gap should be sent.
+    kal_uint8      nTicksForNak;
+    kal_uint32    time;
+    kal_uint32    tNakSent;
+    kal_bool       bNakSent;
+    kal_bool       bTimerRunning;
+} PafNakGapRecT;
+
+typedef  struct
+{
+    kal_uint32  FirstErased;
+    kal_uint16  WindowLen;
+} PafRlpNakReqT;
+
+typedef  struct
+{
+    kal_uint8   NumNakRequest;
+    PafRlpNakReqT  NakRequest[MAX_NAK_REC_NUM];
+}PafRlpNakInfoT;
+
+typedef struct
+{
+    LIST_NODE ResQNodeList[NUM_RLP_RESEQ_REC];
+    LIST_STR ResQFreeNodes;
+    LIST_STR ResQIdleList;
+
+    PafReseqRecT    resPool[NUM_RLP_RESEQ_REC];
+    LIST_NODE NakGapNodeList[NUM_RLP_RESEQ_REC];
+    LIST_STR NakGapFreeNodes;
+    LIST_STR NakGapIdleList;
+    PafNakGapRecT       nakGapPool[NUM_RLP_RESEQ_REC];
+#ifdef CBP7_EHRPD
+    LIST_NODE RouteProtocolQNodeList[NUM_RLP_ROUTE_PROTOCOL_PKT_REC];
+    LIST_STR RouteProtocolQFreeNodes;
+    LIST_STR RouteProtocolQIdleList;
+    PafRouteProtocolPktT    RouteProtocolPool[NUM_RLP_ROUTE_PROTOCOL_PKT_REC];
+#endif
+} PafRlpBufPool;
+
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint16 EVDORevAFwdMFRLPStatsFlowId;
+    kal_uint32 EVDORevAFwdMFRLPStatsResetTime;
+    kal_uint16 EVDORevAFwdMFRLPStatsReXmitsNotFound;
+    kal_int64 EVDORevAFwdMFRLPStatsATNakBytesRequested;
+    kal_int64 EVDORevAFwdMFRLPStatsRxDuplicateBytes;
+    kal_int64 EVDORevAFwdMFRLPStatsRxReXmitsBytes;
+    kal_int64 EVDORevAFwdMFRLPStatsRxNewDataBytes;
+    kal_int64 EVDORevAFwdMFRLPStatsRxTotalBytes;
+    kal_int32 EVDORevAFwdMFRLPStatsNaksSent;
+    kal_int32 EVDORevAFwdMFRLPStatsRxNakTimesOuts;
+    kal_int32 EVDORevAFwdMFRLPStatsResetCount;
+    kal_uint16 EVDORevAFwdMFRLPStatsATResetRequestCount;
+    kal_uint16 EVDORevAFwdMFRLPStatsANResetAckCount;
+    kal_uint16 EVDORevAFwdMFRLPStatsANResetRequestCount;
+} PACKED_POSTFIX  EVDORevAFwdMFRLPStatsMeasT;
+
+typedef PACKED_PREFIX struct
+{
+    EVDORevAFwdMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} PACKED_POSTFIX  EVDORevAFwdMFRLPStatsEventT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint32 SysTime;
+    EVDORevAFwdMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} PACKED_POSTFIX  PafMfpaRlpStatPeekRspMsgT;
+
+typedef PACKED_PREFIX struct
+{
+    kal_uint32 SysTime;
+    EVDORLPStatsMeasT rlpMeas;
+} PACKED_POSTFIX  PafDpaRlpStatPeekRspMsgT;
+
+typedef struct
+{
+    kal_uint32  ulTaskId;
+    kal_uint32  ulSapId;
+}PafSapInfo;
+void PafInit(void);
+void PafRlpInit(PafRlpInstanceT *pRlpInstance);
+void PafRlpCspConnCloseMsg(PafRlpInstanceT *pRlpInstance);
+void PafRlpIdpConnOpenMsg(PafRlpInstanceT *pRlpInstance);
+void PafRlpReset(PafRlpInstanceT *pRlpInstance);
+kal_uint32 PafRlpGetSeqSpace(kal_uint8 s);
+
+kal_bool PafRlpFrameDecode(kal_uint8 nAppType, FwdLinkPktT *pNode, kal_uint8 *pRLPFlow, PafReseqRecT **pReseq);
+void PafRlpFrameRecv(PafRlpInstanceT *pRlpInstance, PafReseqRecT *pReseq);
+void PafRlpBufferFramesForUpperLayerDelivery(PafRlpInstanceT *pRlpInstance, PafReseqRecT *pReseq);
+void PafRlpServiceNakTimer(PafRlpInstanceT *pRlpInstance);
+void PafRlpAbortTmrExpired(PafRlpInstanceT *pRlpInstanace);
+void PafRlpResetTxIndAllFlowMsg(PafRlpInstanceT *pRlpInstance, kal_uint8 nRlpFlow);
+void PafRlpResetTxIndMsg(PafRlpInstanceT *pRlpInstance, kal_uint8 nRlpFlow);
+void PafRlpResetRxIndMsg(PafRlpInstanceT *pRlpInstance); // ResetAck to DPA
+void PafRlpResetTxCompleteMsg(PafRlpInstanceT *pRlpInstance);
+void PafRlpResetRxCompleteMsg(PafRlpInstanceT *pRlpInstance);
+kal_bool PafRlpSendDsarMsg(DsaRevMsgT *MsgDataP);
+void PafRlpStateSet(PafRlpInstanceT *pRlpInstance, PafRlpStateT rlpState);
+PafRlpStateT PafRlpStateGet(PafRlpInstanceT *pRlpInstance);
+
+#ifdef CBP7_EHRPD
+void PafRlpPacketFrameRecv(PafRlpInstanceT *pRlpInstance, PafReseqRecT *pReseq);
+void PafRlpIpPacketFramesForUpperLayerDelivery(PafRlpInstanceT *pRlpInstance, PafRouteProtocolPktT *pRouteProtocolPkt);
+void PafRlpPacketAbortTmrExpired(PafRlpInstanceT *pRlpInstance);
+#endif
+
+void PafResetLastRLPStat(void);
+
+#endif /*_PAFRLP_H_*/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/par.h b/mcu/interface/protocol/l2_c2k/evdo/par.h
new file mode 100644
index 0000000..dced0c7
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/par.h
@@ -0,0 +1,355 @@
+/*****************************************************************************
+*  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  _PAR_H_
+#define  _PAR_H_
+/*****************************************************************************
+*
+* FILE NAME   :   par.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the Reverse Packet Application
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "ParRlpList.h"
+#include "do_fcpapi.h"
+#include "do_dsaapi.h"
+#include "do_Qos.h"
+#ifdef CBP7_EHRPD
+//#include "../fcp/paflist.h"
+#endif
+
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define RLP_DPA_HEADER_BITS        22
+
+
+#define MAX_LOCATION_LEN          128
+#define MAX_STORAGEBLOB_LEN       128
+#define MAX_NAK_REC_NUM 20  /* Max NakRequests # in Nak msg */
+/*----------------------------------------------------------------------------
+structure definitions
+----------------------------------------------------------------------------*/
+/*                               Enum definitions                                   */
+typedef enum
+{
+    RCP_PAR_SUBTYPE_ERR,
+    RCP_PAR_STRNUM_ERR,
+    RCP_PAR_TXLIST_ERR,
+    RCP_PAR_RETXLIST_ERR,
+    RCP_PAR_PHYMISSLIST_ERR,
+    RCP_PAR_MSGDEC_ERR,
+    RCP_PAR_APPNOTINIT_ERR,
+    RCP_PAR_TXLIST_FULL_ERR,
+    RCP_PAR_MSGID_ERR,
+    RCP_PAR_OTAMSGID_ERR,
+    RCP_PAR_GAUP_ATTR_ERR,
+    RCP_PAR_NAK_NOT_SUPPORT_ERR,
+    RCP_PAR_GRANT_SIZE_NOT_ENOUGH_ERR,
+    RCP_PAR_MAX_ERR_ID
+}PARErrorT;
+
+
+
+typedef struct
+{
+    kal_uint8 nAppType;
+    kal_uint16 nProtocolType;
+    ParFlowCtrlStateT stFlowCtrl;
+#ifdef CBP7_EHRPD
+    ParRspStateT          stRsp;
+#endif
+}ParAppInstanceT;
+
+typedef struct
+{
+    kal_uint16 nProtocolType;
+    kal_uint8 nAppType;
+}ParStreamConfigInfoT;
+
+typedef enum
+{
+    PAR_Invalid = 0x0,
+    PAR_Default = 0x1,
+    PAR_MultiFlow
+} PARAppTypeT;
+
+typedef enum
+{
+    RESET_TX_INDICATION_MSG,
+    RESET_MSG = RESET_TX_INDICATION_MSG,
+    RESET_RX_INDICATION_MSG,
+    RESET_ACK_MSG = RESET_RX_INDICATION_MSG,
+    NAK_MSG,
+    LOCATION_REQUEST_MSG,
+    LOCATION_NOTIFICATION_MSG,
+    LOCATION_ASSIGNMENT_MSG,
+    LOCATION_COMPLETE_MSG,
+    XON_REQUEST_MSG,
+    XON_RESPONSE_MSG,
+    XOFF_REQUEST_MSG,
+    XOFF_RESPONSE_MSG,
+    DATA_READY_MSG,
+    DATA_READY_ACK_MSG,
+    RESET_TX_INDICATION_ACK_MSG = 0x0d,
+    RESET_TX_COMPLETE_MSG,
+    RESET_RX_COMPLETE_MSG,
+
+    STORAGEBLOB_REQ_MSG,
+    STORAGEBLOB_NOTIFICATION_MSG,
+    STORAGEBLOB_ASSIGNMENT_MSG,
+    STORAGEBLOB_COMPLETE_MSG,
+
+    DATA_OVER_SIGNALING_MSG = 0x14,
+    DATA_OVER_SIGNALING_ACK_MSG,
+    RESERVATION_ON_REQ_MSG=0x16,
+    RESERVATION_OFF_REQ_MSG,
+    RESERVATION_ACCEPT_MSG,
+    RESERVATION_REJECT_MSG,
+    REV_RESERVATION_ON_MSG,
+    REV_RESERVATION_OFF_MSG,
+    FWD_RESERVATION_OFF_MSG = 0x22,
+    FWD_RESERVATION_ON_MSG,
+    FWD_RESERVATION_ACK_MSG,
+    CONFIGURATION_REQUEST_MSG = 0x50,
+    CONFIGURATION_RESPONSE_MSG,
+    ATTRIBUTE_UPDATE_REQ_MSG = 0x52,
+    ATTRIBUTE_UPDATE_ACCEPT_MSG,
+    ATTRIBUTE_UPDATE_REJECT_MSG
+}PAROtaMsgIdT;
+
+typedef enum
+{
+    RLP_NULL_ST,
+    RLP_DATA_ST,
+    RLP_RESET_INIT_ST,
+    RLP_RESET_RSP_ST,
+    RLP_MAX_ST
+} ParRlpStateT;
+
+typedef enum
+{
+    RLP_NONE,
+    RLP_TXQ,
+    RLP_RETXQ
+}RlpTxQTypeT;
+
+typedef  struct
+{
+    kal_uint32  FirstErased;
+    kal_uint16  WindowLen;
+} ParRlpNakReqT;
+typedef  struct
+{
+    kal_uint8   RLPFlow;
+#ifdef CBP7_EHRPD
+    ParRspRouteT RspRoute;
+#endif
+    kal_uint8   SequenceLength;
+    kal_uint8   NakRequests;
+    ParRlpNakReqT  Request[MAX_NAK_REC_NUM];
+#ifdef CBP7_EHRPD
+    kal_uint8   VR;
+#endif
+}ParRlpNakMsgT;
+
+typedef  struct
+{
+    kal_uint32 TimerId;
+}ParTExpireMsgT;
+/************************************************************/
+/*                               structure for RLP                                              */
+
+typedef  struct
+{
+    /*  kal_bool        bBufFull;*/
+    RlpTxQTypeT BufType;  /*Type of buffer the last packet sent from*/
+    kal_uint16      BytesTx;
+    kal_uint16      BytesRetx;
+#ifdef CBP7_EHRPD
+    PAR_LIST_STR TxReseqQ;    /*If the  DataUnit is packet for a Packet stream, need this for retx */
+#endif
+}ParRlpTxInfoT;
+
+
+typedef  struct ParRlpInstance_Struct
+{
+    kal_uint8                    AppType;
+    kal_uint8                    RLPId;
+    kal_uint8                    RLPFlowId;
+    kal_uint8                    RLPIDLen;   /*In Bits*/
+    kal_uint8                    SEQLen;     /* In Bits*/
+    kal_uint8                    RLPHdrLen;  /*In Bytes */
+    kal_uint8                    Priority;
+    ParRlpStateT             RlpState;
+    kal_uint32                   vs;
+    kal_uint32                   range;
+    BestPktInfoT             bestPktInfo;
+    ParRlpTxListT            TxList;
+    ParRlpRetxListT          RetxList;
+    ParRlpTxInfoT           TxInfo;
+    kal_uint8                    MacFlowId;
+    kal_bool                     FlushTimerExpired;
+#ifdef CBP7_EHRPD
+    kal_uint32                  maxVS;
+    ParRspRouteT       curRoute;
+    kal_uint16  (*ParRlpSendDataFromTxQ)(struct ParRlpInstance_Struct *pInst, DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+    kal_uint16  (*ParRlpSendDataFromRetxQ)(struct ParRlpInstance_Struct *pInst, DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+    PAR_LIST_STR           TxReseqQ;     /*If the  DataUnit is packet for a Packet stream, need this for retx */
+#endif
+}ParRlpInstanceT;
+
+
+/*************************************************************************************/
+/*                      structure for Location Update Protocol                       */
+typedef  struct
+{
+    kal_uint8  LocationType;
+    kal_uint8  LocationLen;
+    kal_uint8  LocationValue[MAX_LOCATION_LEN];
+} ParLocationDataRecT;
+
+typedef  struct
+{
+    kal_uint16  StorageBLOBType;
+    kal_uint8   StorageBLOBLen;
+    kal_uint8   StorageBLOBValue[MAX_STORAGEBLOB_LEN];
+} ParStorageBLOBDataRecT;
+
+typedef  struct
+{
+    kal_bool    bLocValueStored;
+    kal_uint8   LocTransId;
+    kal_bool    bStorageBlobStored;
+    kal_uint8   BlobTransId;
+    ParLocationDataRecT     LocationData;
+    ParStorageBLOBDataRecT  StorageBlob;
+    /*kal_bool    bConnSetup;*/
+}ParLocUpdInfoT;
+/*************************************************************************************/
+/*                          structure for Attribute                                  */
+typedef  struct
+{
+    AppSubTypeT  parSubType;
+    /* kal_uint16        ProtocolType;*/
+
+    /*Default Packet Application Attributes*/
+    kal_uint8           RANHandoff;
+
+    /*Multi-Flow Packet Application Attributes*/
+    kal_uint8           MaxAbortTimer;   /*in units of 100ms*/
+    kal_bool            RevFlowNakEnabled;
+    kal_bool            FlowPhysicalLayerNakEnabledRev;
+    kal_uint8           RevFlowHighLayerProtocol;
+    /* kal_uint8           ReservationIdleStateRev[MAX_NUM_RESERVATIONS];
+    kal_uint8           ReservationIdleStateFwd[MAX_NUM_RESERVATIONS];*/
+    kal_uint16          FlowTransmitAbortTimerRev;
+    kal_bool            FlowDataOverSignalingAllowedRev;
+    FlowIdentificationAttribT attribRevFlowIdentification;
+    FlowTimersAttribT         attribRevFlowTimer;
+    kal_uint16          FlowAbortTimerRevInFrame;
+    /*   FlowReservationAttribT    attribRevFlowReservation;
+    FlowReservationAttribT    attribFwdFlowReservation;*/
+
+    MaxRLPFlowsAttribT        attribRevmaxRLPFlows;
+    /*    MaxReservationsAttribT attribRevMaxResv;*/
+    SupportHLProtocolT       SupportedHLProtocol;
+#ifdef CBP7_EHRPD
+
+    /*Enhanced Multi-Flow Packet Application attributes */
+    kal_bool             PPPFreeAuthenticationSupport;
+    kal_bool            TwoRouteSupported;
+    kal_bool            ATNakDelaySupported;
+    kal_uint8    attribRevFlowProtocolPDU;
+    kal_uint8    attribRevFlowDataUnit;
+    kal_uint8   attribRevRouteProtocolPDU;
+    RevFlowProtocolParametersAttribT attribRevFlowProtocolParameters;
+    RevRouteProtocolParametersAttribT attribRevRouteProtocolParameters;
+#endif
+}ParAccessConfigDataT;
+
+
+typedef  struct
+{
+    kal_uint8 AttrToBeNegotiated;
+    kal_uint8 CfgReqTranId;
+} ParAttrNegotiationInfoT;
+
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+void ParMsgHandler(kal_uint32 MsgId, kal_uint32 MsgSize, void* pMsg);
+void ProcessParDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ParInit(void);
+void ParInitAppInstWithStreamConfigInfo(StreamConfigAttribT *pConfigData);
+void ParRlpPhyMissRetxQUpdate(void);
+void ParAppFlowCtrlStateSet(ParAppInstanceT *pAppInst, ParFlowCtrlStateT state);
+kal_bool ParSendDSARMsg(DsaRevMsgT*  pMailMsg);
+void ParSendFwdAttribute(PafRcpSessionConfigMsgT* pCfgData);
+void ParAccessCommit(void);
+void ParServiceCommit(void);
+void ParInitStructures(kal_uint16 SubType, kal_bool InUse);
+void ParHandleReservationLabelCmd(ParRlpReservationOnOffMsgT* pMsg);
+void ParHandleSnKKQoSRequestCmd(ParSnKKQosReqMsgT* pMsg);
+void ParSendReservationOnReq(kal_uint8 Count, ReservationInfoT* pResv);
+void ParSendReservationOffReq(kal_uint8 Count, ReservationInfoT* pResv);
+void ProcessParLupUnsolicitedCfgMsg(LUPUnsolicitedCfgMsgT* MsgDataP);
+ParRlpInstanceT *GetRlpInstByAppStream(ParHlpDataTxMsgT *pMsg, PARAppStreamT AppStream);
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcpauth.h b/mcu/interface/protocol/l2_c2k/evdo/rcpauth.h
new file mode 100644
index 0000000..def99ba
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcpauth.h
@@ -0,0 +1,76 @@
+/*****************************************************************************
+*  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.
+*
+*************************************************************/
+/*****************************************************************************
+
+FILE NAME:  rcpauth.h
+
+DESCRIPTION:
+
+This file contains all the constants and apies for Authentication Protocol
+
+*****************************************************************************/
+#ifndef _RCP_AUTH_H_ 
+#define _RCP_AUTH_H_
+
+#include "do_slapi.h"
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define DEFAULT_AUTHENTICATION_PROTOCPL   0x00
+#define SHA1_AUTHENTICATION_PROTOCPL      0x01
+
+typedef enum {
+   AUTH_INCONFIG,
+   AUTH_INUSE,
+   AUTH_MAX_INSTANCE
+} AuthInstanceT;
+
+void  RcpAuthHandleSectorIDMsg(AuthOmpSectorIDMsgT *pMsgSectorID);
+void  RcpAuthHandleRPCAuthKeyMsg(AuthKepRPCAuthKeyMsgT *pMsgRPCAuthKey);
+void  AuthHandleEvtScpReCfgInd(void);
+kal_bool  RcpAuthProcessAcmPktR(DatapktlistGT *PktList);
+kal_uint8 RcpAuthGetHdrLen(void);
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcpcsm.h b/mcu/interface/protocol/l2_c2k/evdo/rcpcsm.h
new file mode 100644
index 0000000..bac0e70
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcpcsm.h
@@ -0,0 +1,180 @@
+/*****************************************************************************
+*  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  _RMCCSM_H_
+#define  _RMCCSM_H_
+/*****************************************************************************
+* 
+* FILE NAME   :   rcpcsm.h
+*
+DESCRIPTION :   This file contains function prototypes and other definitions
+*               for the RCP CSM component used within RMC task 
+*
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "evl1shcsm.h"
+#include "do_rcpapi.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines And Macros
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+Global Typedefs
+----------------------------------------------------------------------------*/
+
+typedef enum
+{
+  CSM_START_NEW,
+  CSM_START_UPDATE,
+  CSM_START_CANCEL,
+} Evl1shCsmEvtStartTypT;
+
+typedef enum
+{
+  INTRA_CELL,
+  INTER_CELL
+} CsmSoftHOTypeT;
+
+
+typedef struct
+{
+    Evl1ShCsmPhySubtypeT PhySubtype;
+    kal_uint16 DrcLength;
+    kal_uint16 DscLength;
+    kal_uint8  FrameOffset; 
+}RcpCsmActiveMsgT;
+
+typedef  struct
+{
+  kal_uint32 ResyncFrcCnt;
+  kal_bool   ResyncFrcCntValid;
+} RcpCsmHscStopTxMsgT;
+
+
+
+typedef struct 
+{
+    kal_uint8 DrcLockValid;
+    kal_uint8 DrcLockPcgFinal[CSM_MAX_ACTIVE_PILOTS];
+}RcpCsmSectorC2IUpdateMsgT;
+
+
+typedef  struct
+{
+    kal_uint16 PilotPN;
+    kal_uint8  MACIndex;
+    kal_uint8  DRCCover;
+    kal_uint8  DSC;
+} RcpCsmActiveParamsT;
+
+
+typedef struct
+{
+    kal_uint8  ActiveNum;
+    RcpCsmActiveParamsT ActiveParams[CSM_MAX_ACTIVE_PILOTS];
+}RcpCsmTcaIndMsgT;
+
+
+typedef enum
+{
+  RESUME,
+  NULLCOVER,
+  NULLCOVER_SUSPEND,
+} CsmForceNullCoverT;
+
+
+
+typedef struct
+{
+    kal_int16 TestPn;
+    kal_int8  DRCCover;          /* The target DRCCover */
+    kal_int8  DSC;          /* The target DSCCover */
+    kal_int8  PcgId;       /*The target PcgId*/  
+}RcpCsmTestSwtichParamT;
+
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void RcpCsmActiveMsg(RcpCsmActiveMsgT *CsmActiveMsgPtr);
+void RcpCsmDeActiveMsg(void);
+void RcpCsmSectorInfoUpdateMsg(RcpUpdateSectorInfoMsg *CsmSectorInfoPtr);
+void RcpCsmSectorC2IUpdateMsg(RcpCsmSectorC2IUpdateMsgT *CsmSectorC2IInfoPtr);
+void RcpCsmHscPreemptMsg(RcpCsmHscStopTxMsgT *HscStopTxMsgPtr);
+void RcpCsmHscResumeMsg(void);
+void RcpCsmDoneMsg(Evl1CsmDoneMsgT *CsmDoneMsgptr);
+void RcpCsmTxFreezeMsg(void);
+void RcpCsmTxUnfreezeMsg(void);
+void RcpCsmTcaIndMsg(RcpCsmTcaIndMsgT *TcaIndMsgPtr);
+void RcpCsmC2iRdMsg(Evl1CsmC2iRdMsgT *C2iRdMsgPtr);
+void RcpCsmSuspendMsg(void);
+void RcpCsmResumeMsg(void);
+void RcpCsmForceNullCover(module_type SrcMod, CsmForceNullCoverT ForceNullCover);
+kal_bool RcpCsmGetCellSwitchStatus(void);
+kal_uint8 RcpCsmGetC2IHwCounterThreshold(void);
+kal_bool RcpCsmGet1XScheduledWakeupTime(kal_uint64 *time1xWakeupInDOSlots);
+void RcpCsmTestSwich(RcpCsmTestSwtichParamT *RcpCsmTestSwtichParamPtr);
+void RcpCsmPreempTimeUpMsg(void);
+#ifdef __EVL1_EM_MODE__
+void * Evl1EmRcpCsmInfoGet(void);
+#endif
+void RcpCsmInit(kal_bool TcaInit);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcprievtid.h b/mcu/interface/protocol/l2_c2k/evdo/rcprievtid.h
new file mode 100644
index 0000000..bb22a9e
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcprievtid.h
@@ -0,0 +1,301 @@
+/*****************************************************************************
+*  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 _RCPRIEVTID_H_
+#define _RCPRIEVTID_H_
+
+/***********************************************************************************
+*
+* FILE NAME   :     evl1shevtid.h
+*
+* DESCRIPTION :     Please keep conform to do_rcp_msgid.h
+*
+*
+************************************************************************************/
+
+#define RCPRIEVTID_SET(name, val) FR_EVT_ID_DEFINE(EVT_ID_RCP_TO_RCP_RI_##name,  val,   RCP_RI)
+#define RCPRIEVTID_NEXT(name) EVT_ID_RCP_TO_RCP_RI_##name,
+
+/*----------------------------------------------------------------------------
+ Global Defines
+----------------------------------------------------------------------------*/
+/*---------------*/
+/* RCP Task Msgs */
+/*---------------*/
+RCPRIEVTID_SET(MSG_ID_RCP_RMC_RFREADY_MSG,                      0x01)
+RCPRIEVTID_NEXT(MSG_ID_RCP_RMC_RFRELEASE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SH_RFRELEASE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SH_RFREADY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SCP_RECONFIGURED_IND)
+RCPRIEVTID_NEXT(MSG_ID_RCP_AMP_ATILIST_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR1_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR2_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR3_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR1_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR2_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR3_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_APP_TO_NEG_SET_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_ACTIVE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_DEACTIVE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SECTOR_INFO_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SECTOR_INFO_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SECTOR_C2I_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_DONE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_FORCE_DEDICATE_COVER_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_HSC_PREEMPT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_HSC_RESUME_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_TX_FREEZE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_TX_UNFREEZE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_TCA_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_C2I_RD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SUSPEND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_RESUME_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_CELLSWRDY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_HSC_PREEMPT_TIME_UP_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_RF_TST_POWER_CONTROL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TXAGC_RTC_PWR_REF_PARAM_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_ADJ_UPDATE_MSG)
+
+/*-----------------------*/
+/* ACM (ACMAC) component */
+/*-----------------------*/
+RCPRIEVTID_NEXT(MSG_ID_ACM_RUP_ACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_RUP_DEACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_RUP_ACCESS_HO_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_OMP_SECTORPARMS_UPDATED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_DSA_ADD_BYTE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_TIMER_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PROT_STOP_ACCESS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ELT_ACM_SUPERVISION_EXPIRED_CMD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_ACM_LAST)
+
+/*------------------------*/
+/* RTM (RTCMAC) component */
+/*------------------------*/
+RCPRIEVTID_NEXT(MSG_ID_RTM_RUP_ACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_RUP_DEACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_RUP_TCHASSIGN_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_AMP_TXATI_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_OMP_SECTORPARMS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_FTM_CFG_DATA_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_SMP_SESSION_OPEN_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_CSS_SEARCH_END_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_RTAP_MODE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_TMR_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_DRC_TX_CONTROL_MSG)                  /* DRC supervision process Tx control Msg */
+RCPRIEVTID_NEXT(MSG_ID_RTM_TXOFF_INIT_BUFFER_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_IRAT_TX_PWR_REQ)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_RTM_LAST)
+
+/*----------------*/
+/* DSAR component */
+/*----------------*/
+RCPRIEVTID_NEXT(MSG_ID_DSAR_REV_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_TX_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_DSAF_ACK_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_DSAF_ACK_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_TIME_EXP_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_DSAF_RESET_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RUP_CONNECTION_INIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RTM_LINK_ACQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_ALMP_CONNECTION_CLOSED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_ALMP_DEL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_AMP_RESET_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RUP_IDLE_HHO_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RUP_DEL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_ALMP_POWER_DOWN_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_CSS_CHAN_SCAN_START_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_CSS_CHAN_SCAN_DONE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_IDP_TX_AVAIL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_IDP_TX_UNAVAIL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_IDP_TX_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_SENT_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_NOT_SENT_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_REV_MULTI_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_OTA_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_DSAR_LAST)
+
+/*-------------------*/
+/* PAR component     */
+/*-------------------*/
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DATA_TX_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_ACCESS_TIMER_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_SERVICE_TIMER_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_DSA_FWD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_PAF_FLOWCTL_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_PAF_RLP_RESET_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_IDP_CONN_OPENED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_CSP_CONN_CLOSE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DOS_TX_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_RESERVATION_TRANSITION_TIMER_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_GAUP_TM_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_QOM_RESERVATION_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_QOM_SEND_QOSREQUEST_MSG)
+
+/*EMFPA*/
+RCPRIEVTID_NEXT(MSG_ID_PAR_PAF_RSP_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_LUP_UNSOLICITED_CFG_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_CLEANUP_QUEUE_MSG)
+/*------------------------*/
+/* RTAP component */
+/*------------------------*/
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_OPENED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_RELEASED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_CLOSED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_FAILED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_TIMER_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_BURSTTIMER_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_DSA_FWD_MSG)
+
+/*----------------*/
+/* FTAP component */
+/*------------------------*/
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_FTAPF_LOOPBACK_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_FTAPF_TEST_PKT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_RTM_STATUS_MSG)       /*If RTM is OK, this messge will be used any more.*/
+#ifdef OTTS
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_TEST_PKT_MSG)
+#endif
+
+#if defined (PKT_SIM) || defined (MTK_PLT_ON_PC)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_CREATE_MAC_FLOW_LIST)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_MAC_FLOW_LIST_INTEGRITY)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_COMMIT_APP_FN_PTRS)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_ADD_MSG_TO_QUE)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PRINT_APP_QUES)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_GRANT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PRINT_ASSEMBLED_PKT_LIST)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PKT_SENT)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PKT_NOT_SENT)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PHY_TRAFFIC_ACKED)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PHY_TRAFFIC_MISSED)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PKTSIM_RET_ACM_SEC_PKT_CMD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKTSIM_SEND_PKT_LIST_EXE_MSG_CMD_MSG)      /*_MsgStruct PktSimSendPktListExeMsgT*/
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKTSIM_SEND_PAYLAOD_CMD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKTSIM_SEND_DATAPKT_CMD_MSG)       /*_MsgStruct PktSimFormDataPktMsgT*/
+#endif
+RCPRIEVTID_NEXT(MSG_ID_AUTH_SHA_KEP_RPCAUTHKEY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_AUTH_UPDATE_SECTORID_MSG)
+
+/* RCP UT Msgs */
+RCPRIEVTID_NEXT(MSG_ID_UT_DSAR_REV_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_PAR_HLP_DATA_TX_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_DSAF_FWD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_DMA_DATA_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_RTM_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM1_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM2_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM3_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_SET_STDO_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_MBP_MAC_BITS_OUTPUT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_LOG_OUT_SIGNAL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_ACM_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_PAR_DSA_FWD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_PAR_QOM_SEND_QOSREQUEST_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_SWEEP_MODE_ACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_SWEEP_MODE_DEACTIVATE_MSG)
+	/* Access */
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_PREAMBLE_START_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_DATA_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_TRANS_STOP_MSG)
+/* Traffic */
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_PARAM_INIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_PARAM_RECFG_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_TRANS_START_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_DATA_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_TRANS_STOP_MSG)
+
+/* AUTH segment */
+RCPRIEVTID_NEXT(MSG_ID_AUTH_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_AUTH_SCP_COMMITTED_MSG)
+/* SEC seqment*/
+RCPRIEVTID_NEXT(MSG_ID_SEC_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_SEC_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_SL_LAST)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_TASK_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PREAMBLE_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_DATA_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PST_DELAY_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_INTER_SEQUENCE_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_TXOFF_CB_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_TXON_CB_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DATA_TX_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DATA_TX2_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_PAR_PHYMISSEDLIST_UPDATE_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SIGNAL_MSGID_LAST)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_SH_CRCREADY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_TX_CDMA_CTRL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_TX_AGC_CTRL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_ACC_RTB_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_CP_BUF_LIST_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKT_INFO_MSG)
+RCPRIEVTID_NEXT(MSG_ID_EM_RCP_TRAFFIC_INFO_TRANS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_EM_ACM_STATE_INFO_TRANS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_EM_RTM3_T2P_INFO_TRANS_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_DSAF_FWD_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_SLC_RTM_COMMIT_MSG)
+
+
+
+/* PD Event ID */
+
+/* MUST be less than 255 (0xFF) !!! */
+
+
+
+
+
+
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcptxagc.h b/mcu/interface/protocol/l2_c2k/evdo/rcptxagc.h
new file mode 100644
index 0000000..1f35471
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcptxagc.h
@@ -0,0 +1,163 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * rcptxagc.h
+ *
+ * Project:
+ * --------
+ * C2K
+ *
+ * Description:
+ * ------------
+ * global definition of RxAGC in Slot Tick.
+ *
+ * Author:
+ * -------
+ *
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef  _RCP_TXAGC_H_
+#define  _RCP_TXAGC_H_
+
+#include "sysapi.h"
+#include "evl1shtxagc.h"
+
+/* define the close loop RPC step set structure */
+typedef struct TxAgcClosedLoopRpcStepSetEvtTag
+{
+    kal_uint8 RpcStep;    /* 00: 0.5dB, 01: 1dB, all other values: invalid */
+} TxAgcClosedLoopRpcStepSetEvtT;
+
+/* define the CMU RETAP flag set structure */
+typedef struct TxAgcCmuRetapFlagSetEvtTag
+{
+    kal_bool CmuRetapFlag;
+} TxAgcCmuRetapFlagSetEvtT;
+
+typedef struct
+{
+    /* TX AGC control type,
+       0: stop sw txagc,
+       1: start sw txagc,
+       2: obtain current request power */
+    kal_uint8               CtrlType;
+
+    /* Tx slot */
+    kal_uint8               TxSlot;
+
+    /* Access/ Traffic channel */
+    TxAgcChanTypeE          ChanType;
+
+    /* PHY subtype */
+    TxAgcPhySubTypeE        PhySubType;
+
+    /* Power reference used for open loop estimation in 1/64dBm@S9.6 unit.*/
+    kal_int16               PowerBase; /* Q6 dB */
+
+    /* Bit0: trans ind TRUE/FALSE,
+       Bit8: Close loop parameters enable/disable */
+    kal_uint16              TestBmp;
+
+    /* close loop step up size in 1/64dB@S2.6 unit */
+    kal_int16               ClStepUp;
+
+    /* close loop step down size in 1/64dB@S2.6 unit */
+    kal_int16               ClStepDown;
+
+    /* close loop adjustment limited in 1/64dB@S8.6 unit */
+    kal_int16               ClAdjMax;
+
+    /* close loop adjustment limited in 1/64dB@S8.6 unit */
+    kal_int16               ClAdjMin;
+
+    /* maximum transmit power adjustment in 1/64dB@S5.6 unit, set zero
+    if not use it */
+    kal_int16               MaxPwrAdj;
+
+    /* RPC bit in SW mode with U2.0 unit*/
+    kal_uint16              RpcBitSw; /* Q6 dB */
+
+    /* KS value in SW mode with S6.6 unit*/
+    kal_int16               KsValueSw; /* Q6 dB */
+
+    /* Reserved */
+    kal_uint16              Reserved;
+
+} TxAgcCtrlEvtT;
+
+/* define the power information report structure */
+typedef struct
+{
+    kal_int16   openLoopRxPwr; /* The RxPwr after each access probe */
+    kal_int16   TxPilotPwr;    /* The final "clipped" pilot pwr after each access probe */
+    kal_int16   KsAdj;
+} RcpRtcPwrRefParamMsgT;
+
+/** MSG_ID_RCP_TXAGC_RTC_PWR_REF_PARAM_MSG
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    RcpRtcPwrRefParamMsgT Msg;
+} rcp_txagc_rtc_pwr_ref_param_msg_struct;
+
+/*----------------------------------------------------------------------------
+ Global Defines And Macros
+----------------------------------------------------------------------------*/
+extern void TxAgcInit();
+extern kal_int16 RcpTxAgcGetCurrRxPwr();
+extern kal_int16 RcpTxAgcGetMaxTxPwr();
+extern kal_int16 RcpTxAgcGetAvailTxPwr();
+extern void RcpTxAgcClosedLoopRpcStepSet(kal_uint8 RpcStep);
+extern void RcpTxAgcCMURetapFlagSet(kal_bool CmuRetapFlag);
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rtap.h b/mcu/interface/protocol/l2_c2k/evdo/rtap.h
new file mode 100644
index 0000000..ea9187f
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rtap.h
@@ -0,0 +1,354 @@
+/*****************************************************************************
+*  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  _RTAP_H_
+#define  _RTAP_H_
+/*****************************************************************************
+*
+* FILE NAME   :   rtap.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the Reverse TAP application
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "do_dsaapi.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define  RTAP_MAX_PACKET_NUM      16
+#define  RTAP_MAX_RATE_INDEX      5
+#define  RTAP_MAX_PAYLOAD_INDEX   12
+#define  MAX_SUB_STREAM_NUM       4
+
+extern  kal_uint8  RtapTestMode;
+/*----------------------------------------------------------------------------
+  structure definitions
+----------------------------------------------------------------------------*/
+typedef enum
+{
+    RTAP_START_TIMERID,
+    RTAP_CFG_TIMERID = RTAP_START_TIMERID,
+    RTAP_STAT_TIMERID,
+    RTAP_MAX_TIMERID
+} RtapTimerEnumT;
+
+typedef enum
+{
+    RCP_RTAP_INIT_SUBTYPE_ERR,
+    RCP_RTAP_GRANT_ERR,
+    RCP_RTAP_RATEINDEX_ERR,
+    RCP_RTAP_PAYLOADINDEX_ERR,
+    RCP_RTAP_OTAMSG_DEC_ERR,
+    RCP_RTAP_LINKFLOWNUM_ERR,
+    RCP_RTAP_CBBUF_ERR
+} RtapErrEnumT;
+
+typedef enum
+{
+    RTAP_INACTIVE,
+    RTAP_IDLE,
+    RTAP_CONNECTED,
+} RtapStatEnumT;
+
+typedef enum
+{
+    PARAMETER_ASSIGNMENT_MSG_ID=0x80,
+    PARAMETER_COMPLETE_MSG_ID,
+    STATS_CLEAR_REQ_MSG_ID,
+    STATS_CLEAR_RSP_MSG_ID,
+    STATS_GET_REQ_MSG_ID,
+    STATS_GET_RSP_MSG_ID
+} RtapMsgIdEnumT;
+
+typedef enum
+{
+    TEST_PKT_ENABLE_ID,
+    PKT_RATE_MODE_ID,
+    PKT_PAYLOAD_SIZE_MODE_ID,
+    EN_ACCESS_CHAN_RATE_MODE_ID,
+    BURST_PERIOD_MODE_ID,
+    BURST_SIZE_MODE_ID
+} RtapRecIdEnumT;
+
+typedef struct RtapPkt
+{
+    kal_bool               bSent;
+    CpBufferT         *pPktBuf;    /*The payload buffer*/
+    struct RtapPkt    *pNext;
+} RtapPktT;
+
+typedef struct
+{
+    kal_uint8           num;     /*number of records*/
+    RtapPktT*       pHead;
+    RtapPktT*       pCurrent;
+    RtapPktT*       pTail;
+} RtapPktListT;
+
+
+/*---  Test Parameters Structures---*/
+typedef struct
+{
+    kal_uint8      Upper7;
+    kal_uint32     Lower32;
+} SysSubFrameTimeT;/*in unit of subframes*/
+
+typedef struct
+{
+    kal_uint8              LinkFlowID;
+    kal_uint8              revMacId;
+    kal_uint8              PayLoadIndex;
+    kal_uint32             Sequence[RTAP_MAX_PAYLOAD_INDEX+1];
+    SysSubFrameTimeT  RevSysTime;
+} RtapPL_2InfoT;
+
+typedef union
+{
+    kal_uint16          Seq_Num[RTAP_MAX_RATE_INDEX+1]; /*12 bits*/
+    RtapPL_2InfoT   PL_2Info[MAX_SUB_STREAM_NUM];/*There are 2^8 substream_number at most*/
+} RtapTestInfoT;
+
+typedef struct
+{
+    RtapTestInfoT  TestParm;
+    kal_uint8          LinkNum;
+    kal_uint16         SubType;
+    kal_uint8          RevMacId;
+    kal_uint16         ProtocolType;   /*Store stream type for sending Rev OTA message*/
+    kal_uint8          ConnFlag; /*used to record open connection reason(ParameterAssignment,StatClearRequest,StatGetRequest)*/
+    kal_uint8          Index;      /*RateIndex*/
+    kal_uint8          TestPktOverflowBit;
+    kal_uint32         BurstSize;  /*used to record remained BurstSize*/
+    CpBufferT*     pPktBuf;    /*used to put Fill Packet or PL_2 Packet*/
+    kal_uint16         PktOffset;
+    kal_uint16         PktLen;
+} RtapTestParmT;
+
+/*----  Configuration Parameters Structures ----*/
+typedef struct
+{
+   kal_uint8     LinkNum;
+   kal_uint8     LinkFlowId[MAX_SUB_STREAM_NUM];
+   kal_uint16    BurstPeriod[MAX_SUB_STREAM_NUM];
+   kal_uint16    BurstSize[MAX_SUB_STREAM_NUM];
+} BurstInfoRec;
+
+/* RTAP Cfg Parameters*/
+typedef struct
+{
+   kal_bool        bInCfg;
+   kal_uint16      SubType;
+   kal_bool        bTestPktMode;
+   kal_uint8       TestPktPersistence;
+   kal_bool        bCfgPktRateMode;
+   kal_bool        bCfgPktPayloadSizeMode;
+   kal_bool        bCfgEnACRateMode;
+   kal_bool        bCfgBurstMode;
+   BurstInfoRec  BurstInfo;
+   kal_uint8       ParmAssigTranId;     /*mod 256, 0xff means NULL*/
+   kal_uint8       StatsClearTranId;    /*mod 256, 0xff means NULL*/
+   kal_uint8       StatsReqTranId;      /*mod 256, 0xff means NULL*/
+} RtapParmsT;
+
+typedef struct
+{
+    kal_uint8    MacFlowId;
+    kal_uint8    LinkFlowId;
+} LinkFlowInfoT;
+
+/*RETAPParameterAssignment message info*/
+typedef struct
+{
+    kal_uint8      TransID;
+    kal_bool       TestPktEnableInc;
+    kal_uint8      TestPktPersistence;
+    kal_bool       PktRateModeInc;
+    kal_uint8      MinRateIndex;
+    kal_uint8      MaxRateIndex;
+    kal_bool       PktPayloadSizeModeInc;
+    kal_uint8      MinPayloadSizeIndex;
+    kal_uint8      MaxPayloadSizeIndex;
+    kal_bool       EnACRateModeInc;
+    kal_uint8      EnACRateIndex;
+    kal_bool       BurstPeriodModeInc;
+    kal_uint8      LinkFlowID;
+    kal_uint16     BurstPeriod;
+    kal_bool       BurstSizeModeInc;
+    kal_uint8      BurstSize;
+} REtapParamAssignMsgT;
+
+/*RTAPParameterAssignment message info*/
+typedef struct
+{
+    kal_uint8      TransID;
+    kal_bool       TestPktEnableInc;
+    kal_uint8      TestPktPersistence;
+    kal_bool       PktRateModeInc;
+    kal_uint8      MinRateIndex;
+    kal_uint8      MaxRateIndex;
+} RtapParamAssignMsgT;
+
+/* RTAP_TIMER_EXPIRED_MSG */
+typedef struct
+{
+    kal_uint32    TimerId;
+} RtapTimerExpiredMsgT;
+
+typedef struct
+{
+#if defined (RCP_RI_HRT_DEV)
+    kal_uint32          TimerCb;
+#else
+    kal_timerid         TimerCb;
+#endif
+    kal_bool            Active;
+} RtapExeTimerT;
+
+/* RTAP OTA message structure*/
+typedef struct /*TestPktEnable Parameter Record*/
+{
+    kal_uint8   TestPktPersistence;
+} TstPktEnaRec;
+
+typedef struct
+{
+    kal_uint8   MinRateIndex;
+    kal_uint8   MaxRateIndex;
+} PktRateModeRec;
+
+typedef struct
+{
+    kal_uint8   MinPayloadSizeIndex;
+    kal_uint8   MaxPayloadSizeIndex;
+} PktPLSizeModeRec;
+
+typedef struct
+{
+    kal_uint8   EnACRateIndex;  /*0-9.6kbps,1-19.2kbps,2-38.4kbps*/
+} EnACRateModeRec;
+
+typedef struct
+{
+    kal_uint8   LinkFlowID;
+    kal_uint16  BurstPeriod;   /*in units of 600 slots, 0xffff=infinite*/
+} BurstPeriodModeRec;
+
+typedef struct
+{
+    kal_uint8   LinkFlowID;
+    kal_uint16  BurstSize;   /*in units of 1000 octets,0xffff=full buffer*/
+} BurstSizeModeRec;
+
+/* RTAPParameterAssignment */
+typedef struct
+{
+    kal_bool              TstPktEnaInc;
+    TstPktEnaRec      TstPktEnableParm;
+    kal_bool              PktRateModeInc;
+    PktRateModeRec    PktRateModeParm;
+} RtapParmAssignMsgT;
+
+/* RETAPParameterAssignment */
+typedef struct
+{
+   kal_bool              TstPktEnaInc;
+   TstPktEnaRec      TstPktEnableParm;
+   kal_bool              PktRateModeInc;
+   PktRateModeRec    PktRateModeParm;
+   kal_bool              PktPayloadSizeModeInc;
+   PktPLSizeModeRec  PktPLSizeModeParm;
+   kal_bool              EnACRateModeInc;
+   EnACRateModeRec   EnACRateModeParm;
+   kal_uint8               LinkNum;
+   kal_bool                BurstPeriodModeInc;
+   BurstPeriodModeRec  BurstPeriodModeParm[MAX_SUB_STREAM_NUM];
+   kal_bool                BurstSizeModeInc;
+   BurstSizeModeRec    BurstSizeModeParm[MAX_SUB_STREAM_NUM];
+} RetapParmAssignMsgT;
+
+typedef struct
+{
+  RtapStatEnumT  RtapState;
+  kal_uint16       AppType;
+  kal_uint8        bTestPktMode;
+  kal_uint8        TestPktPersistence;
+  kal_uint8        bCfgPktRateMode;
+  kal_uint8        bCfgPktPayloadSizeMode;
+  kal_uint8        bCfgEnACRateMode;
+  kal_uint8        bCfgBurstMode;
+  kal_uint8        bTstPktOverWrite;
+  kal_uint8        PktBufNum;
+} RtapSpyStatesT;
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+void  RtapInitStructure(kal_uint16 SubType, kal_bool InUse);
+void  RtapCommit (MacFlow2StrFlowMappingT *RtapMacFlowTable, kal_uint8 StreamNum);
+void  RtapProcessRcpSig( kal_bool anyGrant);
+void  RtapHandleConnCloseMsg( void);
+void  RtapHandleConnOpenMsg( void);
+void  RtapInit( void );
+void  RtapHandleFwdOtaMsg( DsaFwdMsgT* pMsg );
+void  RtapHandleEvtTmExpireMsg (kal_uint32 TimerId);
+void RtapHandleEvtBurstTmExpireMsg (kal_uint32 TimerId);
+void RtapHandleTxStatusMsg(DsarTxStatusMsgT* pMsg);
+kal_bool RtapGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+void RtapPktSent (kal_uint8 revMacId,kal_uint8 subStreamNum);
+void RtapPktNotSent (kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 RtapGrant (DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint32 RtapGetQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rtm.h b/mcu/interface/protocol/l2_c2k/evdo/rtm.h
new file mode 100644
index 0000000..3e0427c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rtm.h
@@ -0,0 +1,1195 @@
+/*****************************************************************************
+*  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  _RTM_H_
+#define  _RTM_H_
+/*****************************************************************************
+*
+* FILE NAME   :   rtm.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the RCP RTM component, which are shared between other
+*                 components within RCP.
+*
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "sysapi.h"
+#include "do_rtmapi.h"
+#include "do_dsaapi.h"
+#if (defined MTK_PLT_ON_PC) && (!defined GEN_FOR_PC)
+#include "osc_type.h"
+#endif
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines And Macros
+----------------------------------------------------------------------------*/
+#define RTM_MAX_SUBFRAME_COUNT      4       /* Wraparound subframe counter number, from 0-3 */
+#define RTM_MAX_TX_HISTORY_SUBFRAME 256     /* Wraparound TxHistory subframe counter number, mult of 14 */
+#define RTM_MAX_TXHISTORY           16      /* Max TxHistory count to keep RevMacId */
+#define RTM_MAX_RATE_PROB_RANGE     255     /* Max range of random number for transition probability */
+#define RTM_MAX_CONFIG_REQ          5       /* Max number of outstanding ConfigReqs msgs sent by AT */
+#define RTM_MAX_STATES_SPY_SUBFR_NO 4       /* Max subframe num for rtm23 spy */
+
+
+#define RTM_PROTOCOL_TYPE           0x4
+#define RTM_NEWSUBPKT               0xFF
+#define RTM_VALID_PAYLOAD           1
+#define RTM_LCM_ATI_H               0x3FF   /* LongCode Mask, most sig. 10 bits */
+
+
+#define RTM_DRC_GATE_CONT           0       /* DRCGating = Continuous */
+#define RTM_DRC_GATE_DISCONT        1       /* DRCGating = Discontinuous */
+#define RTM_TM_HICAP                0       /* RTM3: TransmissionMode = High Capacity */
+#define RTM_TM_LOLAT                1       /* RTM3: TransmissionMode = Low Latency */
+
+#define RTM_TMR_SETUP               1500    /* 1.5s = 1500ms */
+#define RTM_TMR_FAKERTCACK          1000
+#define RTM_OTA_MSG_ID_LEN          8
+#define RTM_MAX_RATELIMIT           64
+#define RTM_MAX_ATTRIB_REC          3
+
+
+#define RTM_HWD_ST_SYMB_MASK        0x000007FF
+
+#define MAX_SUB_PACKET_NUM          4
+
+#if defined MTK_PLT_ON_PC
+#define ISR_EV_RTM_RF_RELEASE       OSC_ISR_SRC_CUSTOM5
+#endif
+#define RTM3_DUMMY_PKT_INTERVAL_SUB_FRAME     150
+
+
+/*----------------------------------------------------------------------------
+ Local Defines And Macros
+----------------------------------------------------------------------------*/
+
+#define RTM_TXH_TXPWR_SLEW     0      /* Q7 dbm. slew: the max pwrInc allowed from prevRate to maxRate */
+#define RTM_TXH_TXPWR_HEADROOM 0x100  /* Q7 dbm. 2dbm. headroom: allowed for rpc adj in the next 5 slots */
+
+#define RTM3_DEACTIVATE_DELAY1  6900   /* Us. Delay=(4slots*2048+256chips). DelayUs= (DelayChips*0.8154us/chip)us */
+#define RTM3_DEACTIVATE_DELAY2  10240  /* Us. Delay=(6slots*2048+256chips) */
+#define RTM3_DEACTIVATE_DELAY3  3540   /* Us. Delay=(2slots*2048+256chips). DelayUs= (DelayChips*0.8154us/chip)us */
+#define RTM_ABORT_DELAY         3560   /* Us. Delay=(2slots*2048+256chips) */
+#define RTM_RLSILENT_DELAY      8570   /* Us. Delay=(5slots*2048+256chips) */
+#define RTM_TXON_DELAY         6430 /* Us. Delay=(4slots*2048-300chips) */
+
+#define RTM_TIME_FOR_WORK_SLICE 1948
+
+/*----------------------------------------------------------------------------
+Global Typedefs
+----------------------------------------------------------------------------*/
+/*--------------------*/
+/* RTM Global structs */
+/*--------------------*/
+
+
+/* RTCMAC Configuration Data */
+/* This contains cfg data that are not part of the std's sessCfg data */
+typedef struct
+{
+   /* from RTM_OMP_SECTORPARMS_MSG */
+   kal_uint8    revlinkSilenceDuration;    /* frames */
+   kal_uint8    revlinkSilencePeriod;
+
+
+   /* TxHw Cfg Data */
+   /*---------------*/
+   /* from RTM_AMP_TXATI_UPDATE_MSG */
+   kal_uint32   lcmATIL;
+   kal_uint16   lcmATIH;                   /* 10 bits, all 1's */
+
+   /* from RTM_RUP_TCHASSIGN_MSG */
+   kal_uint8    frameOffset;               /* slots */
+   kal_uint8    drcLen;                    /* 0=1, 1=2slots, 2=4slots, 3=8slots */
+   kal_int8     drcChanGainBase;           /* 0.5db, valid range (-9dB,+6dB) */
+   kal_int8     dscChanGainBase;           /* 0.5db */
+   kal_int8     ackChanGain;               /* 0.5db, valid range (-9dB,+6dB) */
+   kal_uint8    numPilot;
+   kal_uint8    userMacId[SYS_MAX_ACTIVE_LIST_PILOTS];
+   kal_uint8    rabLength[SYS_MAX_ACTIVE_LIST_PILOTS];  /* slots */
+   kal_uint8    rabOffset[SYS_MAX_ACTIVE_LIST_PILOTS];  /* slots */
+   kal_int8     raChanGain[SYS_MAX_ACTIVE_LIST_PILOTS]; /* db */
+
+   /* from RTM_FTM_CFG_DATA_MSG */
+   kal_uint8    drcGating;             /* 0=cont, 1=disc */
+   kal_uint8    dscLen;                /* units = 8 slots */
+   kal_uint8    drcBoostLen;           /* units = 2 slots */
+   kal_uint8    dscBoostLen;           /* units = 8 slots */
+   kal_uint8    drcChanGainBoost;      /* db */
+   kal_uint8    dscChanGainBoost;      /* db */
+   kal_uint8    deltaAckChanGainMUP;   /* units = 0.5db */
+
+   /* RTCMAC SessCfg data */
+   /* Mostly Stored in RtmInUse, here are some which requires separate conversion. */
+   kal_uint16   dataGainScale_Subtype01[RTM_MAX_REV_RATE];
+                            /* RTM0/1: Channel Gains from pilotpwr, in linear Q7
+                                0 = 0
+                                1 = dataScale9k6   ( scalar of (dataOffsetNom+dataOffsetxxx) )
+                                2 = dataScale19k2
+                                3 = dataScale38k4
+                                4 = dataScale76k8
+                                5 = dataScale153k6  */
+
+   /* RTM: TODO: RRIgain, dataGains for RTM2/3, in linear Q7 */
+   kal_uint16   dataGainScale_Subtype2;   /* RTM2 */
+
+   /* RTM3: for now, these are used temporarily for testing... */
+   kal_uint16   rriGainScale_Subtype3;     /* RTM3 */
+   kal_uint16   dataGainScale_Subtype3;    /* RTM3 */
+   kal_uint16   dataGainScale0_Subtype3;   /* RTM3 */
+   kal_uint16   dataGainScale1_Subtype3;
+   kal_uint16   dataGainScale2_Subtype3;
+   kal_uint16   dataGainScale3_Subtype3;
+
+
+   /* RTM01/3: Ks0 - Ks without data
+      Ks0 = (1 + Gack^2 + Gdrc^2) */
+   kal_uint16   Ks0;
+
+
+   /* Msg Rx flags */
+   /*--------------*/
+   kal_bool     sessionOpenFlag;  /* KAL_TRUE=Session Opened */
+   kal_bool     cssSearchEndFlag; /* KAL_TRUE=CSS Search Ended */
+} RtmScmT;
+
+
+
+
+/* RTAP Configuration Data */
+typedef struct
+{
+   /* RTAP/RETAP rates */
+   /*------------------*/
+   kal_bool     bTestPktMode;
+
+   kal_uint8    rtapTargetRate;
+   kal_uint8    retapTargetRate;
+
+
+   /* from RTM_RTAP_MODE_MSG */
+   /*------------------------*/
+   /* PHY0/1, RTM0/1/2 */
+   kal_bool     configuredPacketRateMode;
+   kal_uint8    rtapMinRate;  /* def=0 */
+   kal_uint8    rtapMaxRate;  /* def=5 */         /* PHY0/1, RTM0/1/2: Rate: 0-5 */
+
+   /* PHY2, RTM3 */
+   kal_bool     configuredPacketPayloadSizeMode;
+   kal_uint8    rtapMinPayloadSize;  /* def=0  */
+   kal_uint8    rtapMaxPayloadSize;  /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12
+                                                    0 = 0 bits
+                                                    1 = 96 bits
+                                                    2 = 224 bits
+                                                    3 = 480 bits
+                                                    4 = 736 bits
+                                                    5 = 992 bits
+                                                    6 = 1504 bits
+                                                    7 = 2016 bits
+                                                    8 = 3040 bits
+                                                    9 = 4064 bits
+                                                    10 = 6112 bits
+                                                    11 = 8160 bits
+                                                    12 = 12256 bits */
+} RtmRtapT;
+
+
+/* RTM_TXOFF_INIT_BUFFER_MSG */
+typedef struct
+{
+    kal_bool Silent;
+} RtmTxOffInitBufferMsgT;
+
+
+/*--------------*/
+/* OTA Msg Defs */
+/*--------------*/
+typedef enum
+{
+   RTM_RTCACK_MSG                   = 0,
+   RTM_BROADCAST_REV_RATE_LIMIT_MSG = 1,
+   RTM_UNICAST_REV_RATE_LIMIT_MSG   = 2,
+   RTM_GRANT_MSG                    = 3,
+   RTM_SCP_CONFIG_REQ_MSG           = 0x50,
+   RTM_SCP_CONFIG_RSP_MSG           = 0x51,
+   RTM_ATTRIBUTE_UPDATE_REQUEST     = 0x52,
+   RTM_ATTRIBUTE_UPDATE_ACCEPT      = 0x53,
+   RTM_ATTRIBUTE_UPDATE_REJECT      = 0x54
+} RtmOtaMsgIdT;
+
+typedef enum
+{
+   STREAM_CONFIG_REQ_MSG           = 0x50,
+   STREAM_CONFIG_RSP_MSG           = 0x51
+} StrOtaMsgIdT;
+/* RTM: TODO */
+/* same msgId ? */
+#define   RTM_REQUEST_MSG   2
+
+
+
+/* RTM_BROADCAST_REV_RATE_LIMIT_MSG */
+typedef struct
+{
+   kal_uint8  rpcCount;
+   kal_uint8  rateLimit[RTM_MAX_RATELIMIT];   /* rate = 0 to 5 */
+} RtmOtaBroadcastRevRateLimitMsgT;
+
+
+/* RTM_UNICAST_REV_RATE_LIMIT_MSG */
+typedef struct
+{
+   kal_uint8  rateLimit;   /* rate = 0 to 5 */
+} RtmOtaUnicastRevRateLimitMsgT;
+
+
+/*------------------------------------*/
+/* SessCfg: CONFIGREQ, CONFIGRSP msgs */
+/*------------------------------------*/
+
+/* AttributeId */
+typedef enum
+{
+    RTM01_PWRPARM_ATTRIBID = 0,
+    RTM01_RATEPARM_ATTRIBID = 1,
+    RTM01_ATTRIBID_MAX,
+} Rtm01AttribIdT;
+
+//AttributeNN need to be extended if Max Mac Flow extends.
+typedef enum
+{
+    /* simple attributes */
+    RTM3_ARQ_MODE_ATTRIBID = 0xFFFF,
+    RTM3_FRAB_FILTER_TC_ATTRIBID = 0xFFFE,
+    RTM3_FRAB_LOW_ATTRIBID=0xFFFD,
+    RTM3_MERGE_THRESHOLD_ATTRIBID=0xFFFC,
+    RTM3_PAYLOAD_THRESH_ATTRIBID=0xFFFB,
+    RTM3_PILOT_STRENGTH_FILTER_TC_ATTRIBID = 0xFFFA,
+    RTM3_QRAB_FILTER_TC_ATTRIBID = 0xFFF9,
+    RTM3_T2P_NO_TX_FILTER_TC_ATTRIBID=0xFFF7,
+    RTM3_PILOT_STRENGTH_QRAB_THRESHOLD_DRC_LOCK_ATTRIBID = 0xFFF6,
+    RTM3_PILOT_STRENGTH_QRAB_THRESHOLD_DRC_UNLOCK_ATTRIBID = 0xFFF5,
+    RTM3_RATE_1M8_SUPPORTED_ATTRIBID = 0xFFF3,
+    RTM3_SUPPORT_GAUP_MAX_NUM_SUB_PACKETS_ATTRIBID = 0xFFF2,
+    RTM3_BUCKET_LEVEL_MAX_00_ATTRIBID = 0xFE00,
+    RTM3_BUCKET_LEVEL_MAX_01_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_02_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_03_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_04_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_05_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_06_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_07_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_08_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_09_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_10_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_11_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_12_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_13_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_14_ATTRIBID,
+    RTM3_BUCKET_LEVEL_MAX_15_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_00_ATTRIBID = 0xFD00,
+    RTM3_MERGE_THRESHOLD_01_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_02_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_03_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_04_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_05_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_06_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_07_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_08_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_09_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_10_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_11_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_12_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_13_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_14_ATTRIBID,
+    RTM3_MERGE_THRESHOLD_15_ATTRIBID,
+
+    RTM3_TRANSMISSION_MODE_00_ATTRIBID = 0xFC00,
+    RTM3_TRANSMISSION_MODE_01_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_02_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_03_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_04_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_05_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_06_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_07_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_08_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_09_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_10_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_11_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_12_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_13_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_14_ATTRIBID,
+    RTM3_TRANSMISSION_MODE_15_ATTRIBID,
+    RTM3_QRAB_SELECT_00_ATTRIBID = 0xFB00,
+    RTM3_QRAB_SELECT_01_ATTRIBID,
+    RTM3_QRAB_SELECT_02_ATTRIBID,
+    RTM3_QRAB_SELECT_03_ATTRIBID,
+    RTM3_QRAB_SELECT_04_ATTRIBID,
+    RTM3_QRAB_SELECT_05_ATTRIBID,
+    RTM3_QRAB_SELECT_06_ATTRIBID,
+    RTM3_QRAB_SELECT_07_ATTRIBID,
+    RTM3_QRAB_SELECT_08_ATTRIBID,
+    RTM3_QRAB_SELECT_09_ATTRIBID,
+    RTM3_QRAB_SELECT_10_ATTRIBID,
+    RTM3_QRAB_SELECT_11_ATTRIBID,
+    RTM3_QRAB_SELECT_12_ATTRIBID,
+    RTM3_QRAB_SELECT_13_ATTRIBID,
+    RTM3_QRAB_SELECT_14_ATTRIBID,
+    RTM3_QRAB_SELECT_15_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_00_ATTRIBID = 0xFA00,
+    RTM3_BURST_DURATION_FACTOR_01_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_02_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_03_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_04_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_05_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_06_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_07_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_08_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_09_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_10_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_11_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_12_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_13_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_14_ATTRIBID,
+    RTM3_BURST_DURATION_FACTOR_15_ATTRIBID,
+    RTM3_T2P_FILTER_TC_00_ATTRIBID = 0xf900,
+    RTM3_T2P_FILTER_TC_01_ATTRIBID,
+    RTM3_T2P_FILTER_TC_02_ATTRIBID,
+    RTM3_T2P_FILTER_TC_03_ATTRIBID,
+    RTM3_T2P_FILTER_TC_04_ATTRIBID,
+    RTM3_T2P_FILTER_TC_05_ATTRIBID,
+    RTM3_T2P_FILTER_TC_06_ATTRIBID,
+    RTM3_T2P_FILTER_TC_07_ATTRIBID,
+    RTM3_T2P_FILTER_TC_08_ATTRIBID,
+    RTM3_T2P_FILTER_TC_09_ATTRIBID,
+    RTM3_T2P_FILTER_TC_10_ATTRIBID,
+    RTM3_T2P_FILTER_TC_11_ATTRIBID,
+    RTM3_T2P_FILTER_TC_12_ATTRIBID,
+    RTM3_T2P_FILTER_TC_13_ATTRIBID,
+    RTM3_T2P_FILTER_TC_14_ATTRIBID,
+    RTM3_T2P_FILTER_TC_15_ATTRIBID,
+    /* complex attributes */
+    RTM3_ASSOCIATED_FLOWS_00_ATTRIBID = 0x0100,
+    RTM3_ASSOCIATED_FLOWS_01_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_02_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_03_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_04_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_05_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_06_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_07_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_08_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_09_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_10_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_11_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_12_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_13_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_14_ATTRIBID,
+    RTM3_ASSOCIATED_FLOWS_15_ATTRIBID,
+    RTM3_AUX_PILOT_CHAN_PARAMETERS_ATTRIBID = 0x0000,
+    RTM3_BUCKET_FACTOR_00_ATTRIBID = 0x0300,
+    RTM3_BUCKET_FACTOR_01_ATTRIBID,
+    RTM3_BUCKET_FACTOR_02_ATTRIBID,
+    RTM3_BUCKET_FACTOR_03_ATTRIBID,
+    RTM3_BUCKET_FACTOR_04_ATTRIBID,
+    RTM3_BUCKET_FACTOR_05_ATTRIBID,
+    RTM3_BUCKET_FACTOR_06_ATTRIBID,
+    RTM3_BUCKET_FACTOR_07_ATTRIBID,
+    RTM3_BUCKET_FACTOR_08_ATTRIBID,
+    RTM3_BUCKET_FACTOR_09_ATTRIBID,
+    RTM3_BUCKET_FACTOR_10_ATTRIBID,
+    RTM3_BUCKET_FACTOR_11_ATTRIBID,
+    RTM3_BUCKET_FACTOR_12_ATTRIBID,
+    RTM3_BUCKET_FACTOR_13_ATTRIBID,
+    RTM3_BUCKET_FACTOR_14_ATTRIBID,
+    RTM3_BUCKET_FACTOR_15_ATTRIBID,
+    RTM3_COMMON_POWER_PARAMETERS_ATTRIBID=0x0001,
+    RTM3_MAX_NUM_SUB_PACKETS_ATTRIBID = 0x0002,
+    RTM3_PERMITTED_PAYLOAD_ATTRIBID = 0x0003,
+    RTM3_PILOT_STRENGTH_ATTRIBID = 0x0004,
+    RTM3_POWER_PARAMETERS_128_ATTRIBID = 0x0005,
+    RTM3_POWER_PARAMETERS_256_ATTRIBID,
+    RTM3_POWER_PARAMETERS_512_ATTRIBID,
+    RTM3_POWER_PARAMETERS_768_ATTRIBID,
+    RTM3_POWER_PARAMETERS_1024_ATTRIBID,
+    RTM3_POWER_PARAMETERS_1536_ATTRIBID,
+    RTM3_POWER_PARAMETERS_2048_ATTRIBID,
+    RTM3_POWER_PARAMETERS_3072_ATTRIBID,
+    RTM3_POWER_PARAMETERS_4096_ATTRIBID,
+    RTM3_POWER_PARAMETERS_6144_ATTRIBID,
+    RTM3_POWER_PARAMETERS_8192_ATTRIBID,
+    RTM3_POWER_PARAMETERS_12288_ATTRIBID,
+    RTM3_REQUEST_PARAMETERS_ATTRIBID,
+    RTM3_RRI_CHAN_POWER_PARAMETERS_ATTRIBID,
+    RTM3_T2P_INFLOW_RANGE_00_ATTRIBID = 0x1500,
+    RTM3_T2P_INFLOW_RANGE_01_ATTRIBID,
+    RTM3_T2P_INFLOW_RANGE_02_ATTRIBID,
+    RTM3_T2P_INFLOW_RANGE_03_ATTRIBID,
+    RTM3_T2P_TRANSITION_FUNCTION_00_ATTRIBID = 0x1600,
+    RTM3_T2P_TRANSITION_FUNCTION_01_ATTRIBID,
+    RTM3_T2P_TRANSITION_FUNCTION_02_ATTRIBID,
+    RTM3_T2P_TRANSITION_FUNCTION_03_ATTRIBID,
+    RTM3_TX_T2P_MAX_ATTRIBID=0x0013,
+    RTM3_MAX_MAC_FLOWS_ATTRIBID=0x0014,
+} Rtm3AttribIdT;
+
+/* RTM 0/1 */
+/*---------*/
+/* PwrParm Attribute Rec */
+typedef struct
+{
+   kal_uint8              valueId;
+                      /* Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement  */
+   kal_uint8              dataOffsetNom;   /* in 0.5db  */
+   kal_uint8              dataOffset9k6;   /* in 0.25db onwards */
+   kal_uint8              dataOffset19k2;
+   kal_uint8              dataOffset38k4;
+   kal_uint8              dataOffset76k8;
+   kal_uint8              dataOffset153k6;
+   kal_uint8              rpcStep;
+} RtmPwrParmAttrT;
+
+typedef struct
+{
+   kal_uint8              len;
+   Rtm01AttribIdT       attribId;
+   kal_uint8              pwrParmAttrCount;
+   RtmPwrParmAttrT    pwrParmAttr[RTM_MAX_ATTRIB_REC];
+} RtmPwrParmAttrRecT;
+
+
+
+/* RateParm Attribute Rec */
+typedef struct
+{
+   kal_uint8              valueId;
+                      /* Transition Probability for rev rates (units of 1/255) */
+   kal_uint8              trans9k6_19k2;
+   kal_uint8              trans19k2_38k4;
+   kal_uint8              trans38k4_76k8;
+   kal_uint8              trans76k8_153k6;
+   kal_uint8              trans19k2_9k6;
+   kal_uint8              trans38k4_19k2;
+   kal_uint8              trans76k8_38k4;
+   kal_uint8              trans153k6_76k8;
+} RtmRateParmAttrT;
+
+typedef struct
+{
+   Rtm01AttribIdT       attribId;
+   kal_uint8              len;
+   kal_uint8              rateParmAttrCount;
+   RtmRateParmAttrT   rateParmAttr[RTM_MAX_ATTRIB_REC];
+} RtmRateParmAttrRecT;
+
+
+
+
+/* CONFIG_REQ, RSP Msgs */
+/*----------------------*/
+/* RTM_SCP_CONFIG_REQ_MSG */
+/* RTM_SCP_CONFIG_RSP_MSG */
+typedef struct
+{
+   kal_uint8                transId;
+   /* RTM 0/1 */
+   kal_bool                 pwrParmAttrRecIncl;
+   RtmPwrParmAttrRecT   pwrParmAttrRec;
+   kal_bool                 rateParmAttrRecIncl;
+   RtmRateParmAttrRecT  rateParmAttrRec;
+
+   /* RTM 2/3 */
+
+} RtmOtaConfigMsgT;
+
+
+
+
+/*------------------------------*/
+/* ETS, OTTS, Test Data Structs */
+/*------------------------------*/
+/*-----------*/
+/* Test Cmds */
+/*-----------*/
+/* RTM_TEST_CFG_MSG */
+typedef struct
+{
+   kal_uint8  RtmTestMode;   /* 0=Init_RcpSig, 1=Cont_RcpSig, 2=Repeat_RcpSig, 3=AddBytes */
+
+   /* RTM Init */
+   kal_uint8  RcpMode;
+   kal_uint8  RtmSubtype;
+   kal_uint8  RtmState;
+   kal_uint8  RtmCurrInterlace;
+   kal_uint8  RtmCurrSubframeCnt;
+   kal_uint8  RtmCurrTxHistSubframe;
+   kal_uint8  minRateLimAN;
+   kal_uint8  testTxhwRate;           /* RTM0/1: fixed rate for Txhw test */
+   kal_uint8  testTxhwPktSz;          /* RTM2/3: fixed PktSz for Txhw test */
+
+   /* RCP_TASK_SIG */
+   kal_uint8  hlarq;                  /* Hard value of H/L-ARQ */
+   kal_uint8  parq;                   /* Hard value of P-ARQ */
+
+   /* AddBytes() */
+   kal_uint32 addByteSize;
+   kal_uint8  addByteMacFlowId;
+
+   /* Rtap */
+   kal_bool     bTestPktMode;
+
+   kal_uint8    configuredPacketRateMode;
+   kal_uint8    rtapMinRate;  /* def=0 */
+   kal_uint8    rtapMaxRate;  /* def=5 */         /* PHY0/1, RTM0/1/2: Rate: 0-5 */
+   kal_uint8    configuredPacketPayloadSizeMode;
+   kal_uint8    rtapMinPayloadSize;  /* def=0  */
+   kal_uint8    rtapMaxPayloadSize;  /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12 */
+
+   kal_uint8    RtmSpyTxHistInterval;
+   kal_uint8    RpcTestMode;
+} RtmTestCfgMsgT;
+
+/* RtmTestModes */
+typedef enum
+{
+   RTM_TEST_REAL = 0,           /* Not test mode */
+   RTM_TEST_TXHW,
+   RTM_TEST_DEACTIVATE,
+   RTM_TEST_ACTIVATE_RCPSIG,
+   RTM_TEST_INIT_RCPSIG,
+   RTM_TEST_CONT_RCPSIG,
+   RTM_TEST_ADD_BYTES,
+   RTM_TEST_RF_RELEASE,
+   RTM_TEST_RF_READY,
+   RTM_TEST_RTAP,
+   RTM_TEST_PACKETAPP
+} RtmTestModeT;
+
+
+/* RpcTestMode */
+typedef enum
+{
+   RPC_TEST_UP = 0,
+   RPC_TEST_DOWN,
+   RPC_TEST_ALTERNATE,
+   RPC_TEST_REAL
+} RpcTestModeT;
+
+/* RpcBitValue */
+typedef enum
+{
+   RPC_BIT_UP = 0,
+   RPC_BIT_DOWN,
+   RPC_BIT_INVALID
+} RpcBitValueT;
+
+/* RTM_TEST_MBPMACBITSOUTPUT_MSG */
+typedef struct
+{
+   RtmMbpMacBitsT macBits;
+
+} RtmTestMbpMacBitsOutputMsgT;
+
+
+
+/* RTM_TEST_MFCGRANTCAL23_MSG */
+typedef struct
+{
+   PcpAcmRtmGrantAllocationT grant;
+
+} RtmTestMfcGrantCal23MsgT;
+
+
+
+/*-----------------------*/
+/* RTM Parm Get/Set Cmds */
+/*-----------------------*/
+/* RTM_TEST_PARM_GET_CMD */
+typedef struct
+{
+   /* RtmScm Data */
+   /*-------------*/
+   /* from RTM_OMP_SECTORPARMS_MSG */
+   kal_uint8    revlinkSilenceDuration;    /* frames */
+   kal_uint8    revlinkSilencePeriod;
+
+   /* from RTM_RUP_TCHASSIGN_MSG */
+   kal_uint8    frameOffset;               /* slots */
+   kal_uint8    drcLen;                    /* 0=1, 1=2slots, 2=4slots, 3=8slots */
+   kal_int8     drcChanGainBase;           /* 0.5db, valid range (-9dB,+6dB) */
+   kal_int8     dscChanGainBase;           /* 0.5db */
+   kal_int8     ackChanGain;               /* 0.5db, valid range (-9dB,+6dB) */
+
+   /* from RTM_FTM_CFG_DATA_MSG */
+   kal_uint8    drcGating;             /* 0=cont, 1=disc */
+   kal_uint8    dscLen;                /* units = 8 slots */
+   kal_uint8    drcBoostLen;           /* units = 2 slots */
+   kal_uint8    dscBoostLen;           /* units = 8 slots */
+   kal_uint8    drcChanGainBoost;      /* db */
+   kal_uint8    dscChanGainBoost;      /* db */
+   kal_uint8    deltaAckChanGainMUP;   /* units = 0.5db */
+
+
+   /* RTM SessConfig Data */
+   /*---------------------*/
+   kal_uint8  rpcStep;          /* 0=0.5db, 1=1.0db */
+
+   /* RTM0/1: Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement */
+   kal_int8   dataOffNom_01;       /* 0.5db (Q1) */
+   kal_int8   dataOff9k6_01;       /* 0.25db (Q2) */
+   kal_int8   dataOff19k2_01;
+   kal_int8   dataOff38k4_01;
+   kal_int8   dataOff76k8_01;
+   kal_int8   dataOff153k6_01;
+
+   /* RTM3: TxHw config params */
+   kal_int8   auxPilotChanGain;     /* relative to Traffic. In db, from -15 to 0db. */
+   kal_uint8  auxPilotMinPayload;   /* 0 to 0xb, units of 128bits to represent payload bits */
+
+
+   /* RTM3: ChanGains -> fixed for testing purposes, in RtmScm */
+   kal_uint16 rriGainScale_3;  /* Q7 linear */
+   kal_uint16 dataGainScale0_3;
+   kal_uint16 dataGainScale1_3;
+   kal_uint16 dataGainScale2_3;
+   kal_uint16 dataGainScale3_3;
+} RtmTestParmT;
+
+
+typedef struct
+{
+   ExeRspMsgT RspInfo;
+} RtmTestParmGetMsgT;
+
+
+typedef struct
+{
+    RtmTestParmT parm;  /* Get current params */
+} RtmTestParmGetRspMsgT;
+
+
+
+/* RTM_TEST_PARM_SET_CMD */
+typedef struct
+{
+   kal_uint8        type;      /* 0=default, 1=new */
+   RtmTestParmT parm;
+} RtmTestParmSetMsgT;
+
+
+
+/* RTM_TEST_TXCHANSTAT_GET_CMD */
+typedef struct
+{
+   ExeRspMsgT RspInfo;
+} RtmTestTxChanStatGetMsgT;
+
+typedef struct
+{
+    kal_uint16   pilotChanGain;    /* Q6: Pilot Scale uses <9,3,u> format */
+    kal_uint16   drcChanGain;      /* Q7: DRC Scale uses <9,2,u> format */
+    kal_uint16   ackChanGain;      /* Q6: SUP ACK Scale uses <9,3,u> format */
+    kal_uint16   dataChanGain;     /* Q5: Data Scale ACK uses <11,6,u> format */
+    kal_uint16   rriChanGain;      /* Q6: RRI ACK Scale uses <9,3,u> format */
+    kal_uint16   drcLockPeriod;    /* From FTM */
+} RtmTestTxChanStatGetRspMsgT;
+
+
+
+
+/*----------*/
+/* ETS Spys */
+/*----------*/
+/* RtmSpyStatesT */
+typedef struct
+{
+   kal_uint8        RtmSubtype;
+   RcpModeT     RcpMode;
+   RtmRmmStateT RtmState;
+   kal_uint8  RtmSilentState;
+   kal_uint8  currChip;
+   kal_uint8  currSlot;      /* 0-15, in 1 frame */
+   kal_uint8  currSubframe;  /* 0-11, in 80ms count */
+   kal_uint8  RtmCurrSubframeCnt;
+   kal_uint8  RtmCurrInterlace;
+   kal_uint8  RtmPrevInterlace;
+   kal_uint8  RtmPrevPrevInterlace;
+   kal_uint8  RtmCurrTxHistSubframe;
+   kal_uint8  frameOffset;   /* slots */
+   kal_uint8  currRate;         /* RTM0/1: CurrentRate */
+   kal_uint8  prevRate;         /* RTM0/1: Last Rate */
+} RtmSpyStatesT;
+
+/* Rtm3SpyStatesT */
+typedef struct
+{
+   kal_uint8    macFlowIDAck;
+   kal_uint8    macFlowIDNak;
+   kal_uint8    macFlowID;
+   kal_uint16  grantByteSizeAck;
+   kal_uint16  grantByteSizeNak;
+   kal_uint16  grantByteSize;
+} Rtm3FlowSpyStatesT;
+
+typedef struct
+{
+   kal_uint8    maxNumSubPkt;           /* 0~3 */
+   kal_uint8    RtmCurrInterlace;       /* 0~2 */
+   kal_uint8    ArqMode;                /* bit 0 : h/l mode - 1:h, 0:l, bit 1 : p valid - 1:valid */
+   kal_uint8    Arq;                    /* bit 0 : HL Arq, bit1 : Parq */
+   kal_uint32    SubframeCnt;
+   kal_uint8    subPktNum;              /* 0~maxNumSubPkt */
+   kal_uint8    subPktNumAck;               /* 0~maxNumSubPkt */
+   kal_uint8    subPktNumNak;               /* 0~maxNumSubPkt */
+   kal_uint8    pktSzIdxAck;                /* 0~12 */
+   kal_uint8    pktSzIdxNak;                /* 0~12 */
+   kal_uint8    pktSzIdx;               /* 0~12 */
+   kal_uint8    TransmitModeAck;            /* 1-LowLatency, 0-HighCapacity. */
+   kal_uint8    TransmitModeNak;            /* 1-LowLatency, 0-HighCapacity. */
+   kal_uint8    TransmitMode;           /* 1-LowLatency, 0-HighCapacity. */
+
+   Rtm3FlowSpyStatesT Rtm3FlowSpyStates[MAX_MAC_FLOW_NUM];
+
+} Rtm3SpyStatesT;
+
+/* RtmQoSSpyDataT for UTS : EVDORevAReverseLinkT2PStatisticsEvent() */
+typedef struct
+{
+   kal_uint8     macFlowID;                                                                         /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 0 */
+   kal_uint16    grantByteSize;                                                                      /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 1 */
+   kal_int32     t2POutflow;            /* Q8 */  /* 0 ~ 2000 */                                            /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 2 */
+   kal_int32     bucketLevelSat;        /* Q8->Q6 to avoid overflow */    /* -1000000~1000000 : 0 to 63.5 dB */   /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 3 */
+   kal_uint8     qrab;                                                                              /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 4 */
+   kal_int32     deltaT2PInflow;        /* Q8 */ /* -1000~1000 : -32 to 31.75 dB */                         /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 5 */
+   kal_int32     t2PInflow;         /* Q8 */ /* -1000000~1000000 : 0 to 63.5 dB */                      /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 6 */
+   kal_uint8     tT2PHold;                  /* 0 to 15 frames */                                                /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 7 */
+   kal_int32     bucketLevel;       /* Q8->Q6 to avoid overflow */   /* -1000000~1000000 : 0 to 63.5 dB */    /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 8 */
+   kal_int32     bucketFactor;              /* Q8 */             /* 0~1000000 : 0 to 63.5 dB */                     /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 9 */
+} RtmQoSFlowSpyDataT;
+
+
+typedef struct
+{
+   kal_uint16   txT2P;              /* Q8 */  /* 0~1000 */ /* output to Tx Pwr ctrl */       /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 0 */
+   kal_uint8    SubpktId;         /* 0~3 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 1 */
+   kal_uint32    SubframeCnt;       /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 2 */
+   kal_uint16   revPktSzInBits;   /* 0~12288 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 3 */
+   kal_uint16  SumPayload;              /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 4 */
+
+   kal_uint8    HRDStatus;              /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 5 */
+
+   kal_int16    pilotStrength;  /* Q2 dB  */    /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 6 */
+   kal_int8     frab;           /* signed Q7 */ /* Soft value FRABn */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 7 */
+   kal_bool     qrabPs;
+   kal_uint8    activeFlowNo;               /* 1~4 */
+
+   RtmQoSFlowSpyDataT RtmQoSFlowSpyData[MAX_MAC_FLOW_NUM];
+} RtmQoSSpyDataT;
+
+
+/* RtmSpyHarqT */
+typedef struct
+{
+   kal_uint8  revMacPktId;
+   kal_uint8  revRate;
+   kal_uint8  revPktSz;
+
+   kal_uint8  subPktIndex;
+   kal_uint8  maxSubPktReached;
+   kal_uint8  larqPresentFlag;
+   kal_uint8  nextHLarqType;
+
+   kal_uint32 pktListHead;
+   kal_uint32 pktListLen;
+   kal_uint16 dataGainScale;
+   kal_uint16 dataGainScale1;
+   kal_uint16 dataGainScale2;
+   kal_uint16 dataGainScale3;
+   kal_uint16 rriGainScale;
+
+   kal_uint8  grantTxNumFlows;
+   kal_uint8  macFlowID0;
+   kal_uint16 grantByteSize0;
+} RtmSpyHarqT;
+
+
+/* Rtm3PktInfoSpyStatesT  for UTS : EVDORevAReverseLinkPacketInfoEvent() */
+typedef struct
+{
+   kal_uint8    macFlowID;      /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 0 */
+   kal_uint8    NonEmpty;           /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 1 */
+   kal_uint8    eligible;           /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 2 */
+   kal_uint32  InitialQueueSize;        /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 3 */
+   kal_uint32  potentialT2POutflow; /* Q8 */    /* 0~1000000 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 4 */
+   kal_uint32  queueOutflow;        /* in Bytes */  /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 5 */
+   kal_uint16  grantByteSize;   /* in Bytes */  /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 6 */
+   kal_uint16  grantByteSizeSent;   /* in Bytes */  /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 7 */
+} Rtm3SpyPktInfoFlowStatesT;
+
+
+typedef struct
+{
+   kal_uint32    SubframeCnt;           /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 0 */
+   kal_uint16    CandidatePktSzIdxSet;  /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 1 */
+   kal_uint16    pktSzInBits;               /* 0~12288 */   /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 2 */
+   kal_uint8    TransmitMode;           /* 1-LowLatency, 0-HighCapacity. */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 3 */
+   kal_int16    txT2Pmax;               /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */  /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 4 */
+   kal_uint16  smallestDataUnit;            /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 5 */
+   kal_uint8  activeFlowNo;             /* 1~4 */
+
+   Rtm3SpyPktInfoFlowStatesT Rtm3SpyPktInfoFlowStates[MAX_MAC_FLOW_NUM];
+} Rtm3SpyPktInfoStatesT;
+
+
+/* RtmSpyTxHistT */
+typedef struct
+{
+   kal_uint8  revMacId;
+   kal_uint8  firstSubPkt;
+   kal_int16  hlarqPcomb0;
+   kal_int16  hlarqPcomb1;
+   kal_int16  hlarqPcomb2;
+   kal_int16  hlarqPcomb3;
+   kal_int16  hlarqPcomb4;
+   kal_int16  hlarqPcomb5;
+} RtmSpyTxHistT;
+
+/*----------------------------------------------------------------------------
+ Local Typedefs
+----------------------------------------------------------------------------*/
+/*-----*/
+/* RMM */
+/*-----*/
+/* RtmTmrID */
+/* RTM Timers IDs */
+typedef enum
+{
+   RTM_TMR_SETUP_ID=0
+} RtmTmrIdT;
+
+/* RtmTmrStat */
+typedef enum
+{
+   RTM_TMR_NOT_STARTED,
+   RTM_TMR_ACTIVE,
+   RTM_TMR_EXPIRED
+} RtmTmrStatT;
+
+
+/* Harq for each Interlace */
+typedef struct
+{
+   RevMacPktGT      *revMacPkt;     /* The revMacPkt transmitted and saved for this interlace */
+   kal_uint8            subPktIndex;    /* Set to RTM_NEWPKT=0xff in the beginning.
+                                       - reset to 0 when a new pkt is saved.
+                                       - incremented when a pkt is retx due to Nak rx. */
+   kal_bool             maxSubPktReached; /* T=>maxSubpkt reached, subPktIndex reset to 0 */
+
+   kal_bool             larqPresentFlag;/* If T => no Ack was rx yet on an Interlace before
+                                       maxSubpktNum was reached, hence the need to softcombine
+                                       the L-ARQ and P-ARQ bit in the next subframe. */
+
+   kal_uint8            nextHLarqType;  /* Next expected ARQ=H/L. L if maxSubPkt reached. For MAChw */
+                                    /* 0=H, 1=L */
+
+   PcpAcmRtmGrantAllocationT grantTx;   /* The grant that was tx for this pkt. Valid for all subpkts. */
+} RtmRmmHarqT;
+
+
+/* TxHistory */
+typedef struct
+{
+   kal_uint8  revMacId;        /* The revMacId of the revMacPkt that was transmitted */
+   kal_bool   firstSubPkt;     /* Indicates if this is the 1st Subpkt.
+                              This is used for deciding if P-ARQ needs to be processed. */
+
+   kal_int32  hlarqPcomb[SYS_MAX_ACTIVE_LIST_PILOTS];
+   kal_uint32 ciPcomb[SYS_MAX_ACTIVE_LIST_PILOTS];
+   kal_uint8  hlarqTypePcomb;
+                           /* Store the last HARQ & CI (for 6 secs) (ack) for this pkt, if early term.
+                              Or the LARQ. This will then be sent to MBP for P-ARQ combining later */
+} RtmTxHistoryT;
+
+
+/* RMM data structure */
+typedef struct
+{
+   /* RTOS Timers */
+   /*-------------*/
+#if defined (RCP_RI_HRT_DEV)
+   kal_uint32       tmrSetup;
+#else
+   eventid          tmrSetup;        /* T_RTCMPATSETUP */
+#endif
+   RtmTmrStatT      tmrSetupStatus;  /* Tmr Status */
+
+#if (!defined (RCP_RI_HRT_DEV))
+   /* RCP_TASK_SIG actionTime */
+   /*-------------------------*/
+   kal_uint32           rcpTaskSigFrame; /* The action time frame for RCP_TASK_SIG registration. Periodic reg starts at next frame */
+   kal_uint8            rcpTaskSigSlot;  /* The action time slot for RCP_TASK_SIG registration */
+#endif
+
+   /* RevLinkSilentTime */
+   /*-------------------*/
+   kal_uint64           revSilentStart;  /* The next revLink silent start frame */
+   kal_uint64           revSilentEnd;  /* The current revLink silent end frame */
+   kal_uint32           revSilentInt;    /* The revLink silent Interval between 2 start times, in frames */
+
+   /* Harq   */
+   /*--------*/
+   RtmRmmHarqT      txHarq[RTM_MAX_INTERLACE];  /* Harq struct for 3 interlaces. (Phy 2) */
+   kal_uint8        revMacIdCounter; /* Running counter, incremented if new revMacId requested */
+   RtmTxHistoryT    txHistory[RTM_MAX_TXHISTORY];
+                                     /* Contains the RevMacId for the last 14 subframes transmitted */
+
+   /* FuncPtrs */
+   /*----------*/
+   void  (*ProcPhyAckNak)( void );  /* Func ptr to ProcPhyAckNak proc */
+   kal_bool  (*TransmitPkt)( kal_uint32 dummy );    /* Func ptr to TxPkt functions */
+} RtmRmmT;
+
+
+/*-----*/
+/* RRC  */
+/*-----*/
+
+/* RRC data structure (RTM 0/1) */
+typedef struct
+{
+   /* CurrentRate */
+   /*-------------*/
+   kal_uint8    currRate;           /* CurrentRate */
+   kal_uint8    prevRate;           /* Last Rate */
+
+   /* RateLimit (from AN Msg) */
+   /*-------------------------*/
+   kal_uint8    currRateLimitAN;    /* CurrentRateLimit from AN msg */
+   kal_uint8    rateLimitInMsg;     /* The RateLimit value from BC/Uni RevRateLimMsg */
+   kal_bool     dlyRateLimUpdate;   /* KAL_TRUE=delay currRateLim update till 1 frame later */
+
+   /* MaxRate limit (from Transition Prob Table) */
+   /*--------------------------------------------*/
+   kal_uint8    combBusyBit;        /* from RAB. 1=Busy, i.e. RAB is 1 from any Active Sector. */
+   kal_uint8    maxRate;            /* Rate:
+                                        0 = 0kbps
+                                        1 = 9.6kbps
+                                        2 = 19.2kbps
+                                        3 = 38.4kbps
+                                        4 = 76.8kbps
+                                        5 = 153.6kbps */
+} RtmRrcT;
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+extern RtmRmmSubtypeT      RtmInCfgSubtype; /* RTCMAC subtype: 0, 1, 2, 3*/
+extern RtmRmmSubtypeT      RtmSubtype;      /* RTCMAC subtype: 0, 1, 2, 3*/
+extern RtmRmmStateT        RtmState;        /* RMM State */
+extern kal_uint8               RtmSilentState;  /* RLSilent State */
+extern kal_uint8               RtmDrcSilentState; /* RLSilent State due to DRC Supv */
+extern kal_bool                RtmOverlap1x; /* overlap with 1X or not */
+
+extern kal_uint32       RtmQueueSz[ MAX_MAC_FLOW_NUM ];
+extern RtmScmT      RtmScm;         /* Config Data that are not in the SessCfg attrib */
+extern RtmCfgDataT  RtmInUse;       /* InUse Data */
+extern RtmRtapT     RtmRtap;        /* RTAP Data */
+
+extern RtmTestModeT RtmTestMode;
+
+extern RpcTestModeT RtmRpcTestMode;
+
+extern kal_uint32 deadline_slot;
+
+extern RtmCfgDataT  RtmInUse;       /* InUse Data */
+
+/*------*/
+/* RMM  */
+/*------*/
+extern RtmRmmT      RtmRmm;                /* The RMM data struct */
+extern kal_uint8        RtmCurrInterlace;      /* Current interlace (s) */
+extern kal_uint8        RtmPrevInterlace;      /* Prev interlace (s-1) */
+extern kal_uint8        RtmPrevPrevInterlace;  /* Prev interlace (s-2) */
+extern kal_uint8        RtmCurrSubframeCnt;    /* Current subframe counter, from 0-3 */
+extern kal_uint8        RtmCurrTxHistSubframe; /* Current TxHistory subframe counter, from 0-251 */
+extern kal_bool         RtmFwdChanValid;       /* FwdChan valid or not. T=>Valid */
+extern kal_int16        RtmPwrRef;             /* The PwrRef base pwr when TCH is first activated */
+extern RevMacPktGT  *RtmCurrRevMacPkt;     /* The current revMacPkt that is formatted. */
+extern RtmMbpMacBitsT RtmMbpMacBits;       /* The current MAC Bits from MACHw */
+extern PcpAcmRtmGrantAllocationT RtmGrant; /* The grant for each frame/subframe that was serviced by PCP/Upplayer. */
+extern kal_bool         RtmSetupTimerEnable; /* KAL_TRUE=>RTM start setup timer when activate */
+
+
+/*-----*/
+/* RRC */
+/*-----*/
+extern RtmRrcT      RtmRrc;   /* The RRC data struct */
+extern const kal_int16 RtmRrcDataGainBase[ RTM_MAX_REV_RATE ] ;
+
+/*-----*/
+/* Test */
+/*-----*/
+extern kal_uint8    RtmTestBBCapture;
+extern RtmTxStateT RtmTxSt;
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void RtmInit( void );
+extern void RtmHandleRupActivateMsg( void );
+extern void RtmHandleRupDeactivateMsg( void );
+extern void RtmHandleRupTchAssignMsg( RtmRupTchAssignMsgT *pMsg );
+extern void RtmHandleRmcRfReadyMsg( void );
+extern void RtmHandleRmcRfReleaseMsg( void );
+extern void RtmHandleAmpTxAtiUpdateMsg( AcmAmpATIListMsgT *pMsg );
+extern void RtmHandleOmpSectorParmsMsg( RtmOmpSectorParmsMsgT *pMsg );
+extern void RtmHandleFtmCfgDataMsg( RtmFtmCfgDataMsgT *pMsg );
+extern void RtmHandleSmpSessionOpenMsg( RtmSmpSessionOpenMsgT *pMsg );
+extern void RtmHandleCssSearchEndMsg( RtmCssSearchEndMsgT *pMsg );
+extern void RtmHandleRtapModeMsg( RtmRtapModeMsgT *pMsg );
+extern void RtmHandleTmrExpiredMsg( kal_uint32 userId );
+extern void RtmHandleDrcTxControlMsg( RtmDrcTxControlMsgT *pMsg );
+extern void RtmHandleDsafFwdMsg( DsaFwdMsgT *pMsg );
+extern void RtmTimerCallBack(kal_uint32 id);
+extern kal_bool RtmProcPhyAckNak( void );
+extern kal_bool RtmTransmitPkt( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT *pktList, kal_uint32 totalPadSize);
+extern kal_bool RtmCalculateGrant( PcpAcmRtmGrantAllocationT *grant );
+extern kal_uint8 RtmGetCurrRevRate( void );
+extern kal_uint8 RtmGetCurrRevPktSz( void );
+extern void RtmHandleTxOffInitBufferMsg(kal_bool isSilent);
+extern void RtmTxhProgNullDataPhy(void);
+extern void RtmMbpSectorInfoUpdata(RcpUpdateSectorInfoMsg *pUpdataSectorInfoMsg);
+
+#ifdef MTK_DEV_ENGINEER_MODE
+extern void RtmHandleRfTstPowerControlMsg(RcpRfTstPowerControlMsgT *pMsg);
+#endif
+
+extern void Rtm23SpyStates( void );
+
+
+/* RMM */
+extern void  RtmRmmHarqInit( void );
+extern void  RtmRmmAbortHarq( void );
+extern void  RtmRmmProcAckNakPhy2( void );
+extern void  RtmRmmProcAckNakPhy01( void );
+extern kal_bool  RtmRmmTransmitPktPhy2( kal_uint32 dummy );
+extern kal_bool  RtmRmmTransmitPktPhy01( kal_uint32 dummy );
+extern void  RtmRmmSilentChk( kal_uint8 callerID );
+extern void  RtmRmmSilentEntry( void );
+extern void  RtmRmmSilentExit( void );
+extern void  RtmRmmStartTimer( RtmTmrIdT tmrId );
+extern void  RtmRmmRtcInitialSetChanScale(void);
+extern void  RtmRmmCloseTxPath (void);
+
+
+/* Test Msgs */
+extern void RtmHandleTestCfgMsg( RtmTestCfgMsgT *pMsg );
+#if defined (MTK_PLT_ON_PC)
+extern void RtmHandleTestMbpMacBitsOutputMsg( RtmTestMbpMacBitsOutputMsgT *pMsg );
+extern void RtmHandleTestMfcGrant23Msg( RtmTestMfcGrantCal23MsgT *pMsg );
+extern void RtmHandleTestParmGetMsg( RtmTestParmGetMsgT *MsgPtr );
+extern void RtmHandleTestParmSetMsg( RtmTestParmSetMsgT *MsgPtr );
+extern void RtmHandleTestTxChanStatGetMsg( RtmTestTxChanStatGetMsgT *MsgPtr );
+extern void StreamHandleEtsCfgAppMsg(EtsAppCfgT* pData);
+#endif
+
+extern void RtmHandleTestTxhw( kal_uint8 rtmSubtype, kal_uint8 testRate, kal_uint8 testPktSz, kal_int16 pwrRef, kal_uint8 RpcTestMode );
+
+extern void RtmSetMaxNumSubPkt( kal_uint8  maxNumSubPkt);
+
+extern void RcpPerfDataReset( void );
+
+extern void RtmHandleTxChanSweepActivateCmd (void);
+extern void RtmHandleTxChanSweepDeactivateCmd (void);                                          
+extern void RtmTransmitPktForTxChanSweepMode (void);
+extern void RtmStateHandle(kal_uint32 event);
+extern kal_uint8 RtmRmmGetRevMacId( void );
+extern void RtmOpenTxSettleDownStHandleRcpTaskSig(void);
+#if defined (RCP_RI_HRT_DEV)
+extern void RcpRiAlignCurTime (kal_uint64 *curTimePtr);
+#endif
+extern kal_uint8 RtmReturnNextArqMode (void);
+/*---------------------------------------------------------------*/
+/* RTM: TODO */
+/* temporary declarations */
+
+
+/* MsgEnc/Dec functions */
+/*----------------------*/
+extern kal_bool RtmRmmDecConfigRspMsg
+(
+   kal_uint8  *pData,
+   kal_uint16 offset,
+   kal_uint16 len,
+   RtmOtaConfigMsgT *pDecMsg );
+
+extern kal_bool RtmRmmDecConfigReqMsg
+(
+   kal_uint8  *pData,
+   kal_uint16 offset,
+   kal_uint16 len,
+   RtmOtaConfigMsgT *pDecMsg );
+
+
+
+extern kal_uint32 RtmSubFrameNumber;
+extern kal_uint8 RtmDummyMacPktId;
+extern kal_bool RtmT2pBoostMode;
+
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rtmqos.h b/mcu/interface/protocol/l2_c2k/evdo/rtmqos.h
new file mode 100644
index 0000000..122929a
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rtmqos.h
@@ -0,0 +1,187 @@
+/*****************************************************************************
+*  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) 2008-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   :   rtmqos.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the RCP RTM QOS component
+*
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#ifndef  _RTM_QOS_H_
+#define  _RTM_QOS_H_
+
+#include "rtm.h"
+#include "sysdefs.h"
+#include "do_rcpapi.h"
+#include "do_rtmapi.h"
+#define RTM_QOS_SPY_SUBFR_NO           3
+
+/* Internal Data for each MAC flow */
+typedef struct 
+{
+  kal_int32    t2POutflow;              /* Q8 */  /* 0 ~ 2000 */
+  kal_int32    deltaT2PInflow;          /* Q8 */ /* -1000~1000 : -32 to 31.75 dB */
+  kal_uint32   potentialT2POutflowHC;   /* Q8 */  /* 0~1000000 */
+  kal_uint32   potentialT2POutflowLL;   /* Q8 */  /* 0~1000000 */
+  kal_uint16   queueOutflowHC;          /* suppose max 32788 bytes */
+  kal_uint16   queueOutflowLL;          /* suppose max 32788 bytes */
+  kal_bool      setF;
+    /* for real time mode selection */
+  kal_bool      setFLL[(RTM_MAX_REV_RATE_PHY2-1)];
+  kal_uint8    qrab;
+} MfcFlowDataT;
+
+/* Internal common Data for MAC flow - temporal parameter in RTM QOS module */
+typedef struct 
+{ 
+  kal_int8      rN;                                                                                          /* -255~255 (-1 to 1) signed Q7 */
+  kal_uint8      TMmin;
+  kal_uint32    txT2P;                                        /* Q8 */     /* 0~1000 */ /* output to Tx Pwr ctrl */
+  kal_uint32    sumQueueOutflow;          /* 32 * max 32788 bytes */
+  kal_int16     pilotStrength[SYS_CP_MAX_NUM_TC_ACTIVE_PILOTS];  /* Q2 dB  */
+  kal_int8    frab;         /* signed Q7 */ /* Soft value FRABn */
+} MfcCommonDataT;
+
+/* Stored Data - data should be saved for next packet calculation */
+typedef struct 
+{
+  kal_uint8     lastBucketLevelMax[MAX_MAC_FLOW_NUM];                    /* 0:NULL, 1~255: 0 to 63.5 dB per 0.25dB unit */
+  kal_int32     t2PInflow[MAX_MAC_FLOW_NUM];    /* Q8 */ /* -1000000~1000000 : 0 to 63.5 dB */
+  kal_int32     bucketLevel[MAX_MAC_FLOW_NUM];      /* Q8->Q6 to avoid overflow */   /* -1000000~1000000 : 0 to 63.5 dB */
+  kal_int32     bucketLevelSat[MAX_MAC_FLOW_NUM];       /* Q8->Q6 to avoid overflow */    /* -1000000~1000000 : 0 to 63.5 dB */
+  kal_uint8     tT2PHold[MAX_MAC_FLOW_NUM];                         /* 0 to 15 frames for n-1 */
+
+  /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+  kal_uint8    txT2PHiCap[(RTM_MAX_REV_RATE_PHY2-1)][ MAX_SUB_PACKET_NUM]; /* Q2 */
+  /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x3,0xf¡¦. */
+  kal_uint8    txT2PLoLat[(RTM_MAX_REV_RATE_PHY2-1)][ MAX_SUB_PACKET_NUM];  /* Q2 */
+  /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x3,0xf¡¦. */
+  kal_uint8    txT2PHiCapNominal[(RTM_MAX_REV_RATE_PHY2-1)];    /* Q2 */
+  /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+  kal_uint8    txT2PLoLatNominal[(RTM_MAX_REV_RATE_PHY2-1)];     /* Q2 */
+  /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+  kal_uint16    t2PConversionFactorHC;                             /* Q8 */                          /* 0~1536 */
+  kal_uint16    t2PConversionFactorLL;                              /* Q8 */                          /* 0~1536 */
+  kal_int32    bucketFactor[MAX_MAC_FLOW_NUM];           /* Q8 */        /* 0~1000000 : 0 to 63.5 dB */
+              /* bucketFactor_interpolation(linearTodB10(MfcStoredData.t2PInflow[i]), MfcIn->frab, i) * MfcStoredData.t2PInflow[i]) ); */
+  kal_uint32    txT2PHiCapNominalLinear[(RTM_MAX_REV_RATE_PHY2-1)];    /* Q8 */
+  /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+  kal_uint32    txT2PLoLatNominalLinear[(RTM_MAX_REV_RATE_PHY2-1)];     /* Q8 */
+  /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+  kal_uint8       t2PHiCapNominalTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+  /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+  kal_uint8       t2PLoLatNominalTransition[(RTM_MAX_REV_RATE_PHY2-1)];  /* Q2 */
+  /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+  kal_int32       t2PHiCapNominalAuxTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+  /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+  kal_int32       t2PLoLatNominalAuxTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+  /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+
+  kal_int16    maxTxT2P;                           
+  /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+
+  kal_int16 availableTxPwr; /* Q7 */
+} MfcStoredDataT;
+
+
+/* Pre-calculated (dB to Linear conversion) Linear Attribute table */
+typedef struct 
+{ 
+  /* T2PInflowRangeNN */
+  kal_uint32    t2PInflowmax[MAX_MAC_FLOW_NUM];      /* Q8 */
+  /* 255:infinite, 0~255 (0~63.5dB/ 0.25dB), unsigned Q2, default :00:0x10,else:0x07 */
+  kal_uint32    t2PInflowmin[MAX_MAC_FLOW_NUM];     /* Q8 */
+  /* 255:infinite, 0~255 (0~63.5dB/ 0.25dB), unsigned Q2, default :00:0x10,else:0x07 */
+  /* BucketLevelMax00/01/NN */
+  kal_int32    bucketLevelMax[MAX_MAC_FLOW_NUM];      /* Q8 */
+  /* 0: NULL, 1~255 (0~63.5 dB per 0.25 dB), unsigned Q2 ; default 00:0x50,01:0x6c,NN:0x00 */
+  /* AuxiliaryPilotChannelParameters */
+  kal_uint32        auxPilotChannelGain;                /* Q8 */                                 /* 4bits, 0 to -15dB per -1dB; default: 0x0c */
+  /* CommonPowerParameters */
+  kal_uint32      txT2Pmin;                       /* Q8 */    /* 8bits unsigned Q2, 0~255(0~63.75dB per0.25dB); default:0xf */
+  /* RRIChannelPowerParameters */
+  kal_uint32        rRIChannelGainPreTransition[MAX_SUB_PACKET_NUM];   /* Q8 */
+  /* 2'comp 4 bit (-8¡¦7 per 1 dB); default: 0x0,0x0,0xa,0xa */
+  kal_uint32        rRIChannelGainPostTransition[MAX_SUB_PACKET_NUM-1];   /* Q8 */  
+   /* 2'comp 4 bit (-8¡¦7 per 1 dB); default: 0xa,0xa,0xa */
+
+  /* prepared data for interpolation */
+  kal_int16   pilotStrengthStrengthAxisSlope[14];           /* Q6 */
+  kal_int16   txT2PmaxPilotStrengthT2PAxisSlope[6];         /* Q7 */
+  kal_int8    pilotStrengthStrengthAxis[15];              /* -8~7 dB per 1dB */
+  kal_int8        T2PTransitionFunctionT2PDnT2PAxisFRABAxis[MAX_MAC_FLOW_NUM][128];                   
+  /* -128~127(-32¡¦31.75 dB per 0.25 dB), signed Q2 */
+  kal_int8        T2PTransitionFunctionT2PUpT2PAxisFRABAxis[MAX_MAC_FLOW_NUM][128];                   
+  /* -128~127(-32¡¦31.75 dB per 0.25 dB), signed Q2 */
+  kal_int8      T2PTransitionFunctionFRABAxis[MAX_MAC_FLOW_NUM][8];                   
+  /* -8~7(-1¡¦7/8), signed Q3 */ 
+  kal_int8      BucketFactorFRABAxis[MAX_MAC_FLOW_NUM][8];                   
+  /* -8~7(-1¡¦7/8), signed Q3 */
+
+  kal_int16      T2PTransitionFunctionT2PAxisSlopeConst[MAX_MAC_FLOW_NUM][15];        /* Q12 */           
+  /* (1<<16)/T2PTransitionFunctionT2PAxis[index][i]-T2PTransitionFunctionT2PAxis[index][i-1] */
+  kal_int16      T2PTransitionFunctionFRABAxisSlopeConst[MAX_MAC_FLOW_NUM][7];        /* Q11 */
+  /* (1<<16)/T2PTransitionFunctionFRABAxis[index][i]-T2PTransitionFunctionFRABAxis[index][i-1] */
+
+  kal_int16      BucketFactorT2PAxisSlopeConst[MAX_MAC_FLOW_NUM][15];        /* Q12 */           
+  /* (1<<16)/BucketFactorT2PAxis[index][i]-BucketFactorT2PAxis[index][i-1] */
+  kal_int16      BucketFactorFRABAxisSlopeConst[MAX_MAC_FLOW_NUM][7];       /* Q11 */            
+  /* (1<<16)/BucketFactorFRABAxis[index][i]-BucketFactorFRABAxis[index][i-1] */
+
+} MfcAttributeLinearDataT;
+
+
+#define RAB_UNLOADED_PERIOD 60000 /* 20 sec */ //for signaling conformance test variable
+
+#endif
+