[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
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
+