[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/el2/errc_epdcp_msg.h b/mcu/protocol/interface/el2/errc_epdcp_msg.h
new file mode 100644
index 0000000..ced76fa
--- /dev/null
+++ b/mcu/protocol/interface/el2/errc_epdcp_msg.h
@@ -0,0 +1,812 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ *   errc_epdcp_msg.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   eRRC-ePDCP SAP message structure definition
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 07 24 2018 cammie.yang
+ * [MOLY00341790] [MT6295] UDC feature patch back
+ * [UDC][95FPB][Phase 3] UDC feature patch back -- common structures and interfaces
+ *
+ * 07 18 2018 steve.kao
+ * [MOLY00339307] The handling of energy depletion attack by STMSI paging from fake cell
+ * Inactivity Detection Timer 2
+ *
+ * 02 06 2018 yi-shing.liou
+ * [MOLY00299866] [UMOLYE][ERRC/El2][R13]FeMDT UL PDCP delay measurement report
+ * [EPDCP] PDCP queuing delay (EMDT), common part.
+ *
+ * 10 31 2017 mazi.yu
+ * [MOLY00286412] [MT6293] Change EPDCP ERRC RB add/mod interface
+ * Change epdcp_rb_addmod_struct interface and support new qci value
+ *
+ * 09 18 2017 timothy.yao
+ * [MOLY00274939] patch back bugfix of RoHC-TCP IOT
+ * for UL-ROHC:
+ * 1) RoHC TCP bugfix patch
+ * 2) UL-ROHC interface
+ *
+ * 07 13 2017 steve.kao
+ * [MOLY00264004] [6293] EPDCP R-SIM code changes and UT with bugfixes
+ * 	
+ * 	[UMOLYA][TRUNK] EPDCP changes for L+L, R-SIM, UT, and bugfixes.
+ *
+ * 02 10 2017 steve.kao
+ * [MOLY00228972] [UMOLYA][EPDCP][R-SIM] Interface with ERRC for Remote SIM
+ * [EPDCP][R-SIM] Interface with ERRC for Remote SIM.
+ *
+ * 11 15 2016 cammie.yang
+ * [MOLY00211938] [UMOLYA][EM][AT&T] EUTRA air message
+ * [TRUNK][EPDCP]
+ * 1. Modification of ERRC-EPDCP interface for change of RRC buffer type (non-cachable AFM will be used)
+ * 2. Add handling for NULL Alogrithm in EPDCP UL
+ *
+ * 11 10 2016 steve.kao
+ * [MOLY00195563] [6293][EL2][UPCM][RATDM][EPDCP] Initial feature integrations
+ * [UMOLYA_TRUNK][EPDCP] Fix MCCH delivery interface.
+ *
+ * 09 26 2016 cammie.yang
+ * [MOLY00195563] [6293][EL2][UPCM][RATDM][EPDCP] Initial feature integrations
+ * [TRUNK] UPCM/RATDM/EPDCP feature integrations from PS.DEV
+ *
+ * 01 21 2016 mingtsung.sun
+ * [MOLY00160421] [MT6292] ePDCP CE RAM Optimization
+ * [EPDCP] CE RAM OPT
+ *
+ * 01 04 2016 tero.miettinen
+ * [MOLY00155820] ERRC UMOLY updates
+ * NVRAM IF, ERRC - EL2 IF and ERRC update for 15 bit RLC LI field length.
+ *
+ * 06 03 2015 mingtsung.sun
+ * [MOLY00118161] [MT6291] EPDCP CR Sync - Early reestablishment to prevent certain kind of VoLTE call drop
+ * LTE domain
+ *
+ * 02 05 2015 cooper.lin
+ * [MOLY00090532] [MT6291] Change Feature Check-in
+ * Code sync from MOLY (W15.06)
+ * 1. Not check in C2K related code because 91 C2K is under implementation and not checked in yet
+ * 2. Not check in VSIM related code, need to further discuss
+ * 3. Comment some DETECTION_TIMER related code, will confirm soon and patch it
+ *
+ * 11 12 2014 chi-chung.lin
+ * [MOLY00068710] [MT6291_DEV] Sync MOLY to MT6291_DEV
+ * [CHM] code sync from MT6291_DEV to UMOLY
+ *
+ * 11 11 2014 andrew.wu
+ * [MOLY00084096] [UMOLY]MT6291_DEV sync to UMOLY TRUNK
+ * MT6291_DEV sync to UMOLY
+ *
+ * 02 25 2013 timothy.yao
+ * [MOLY00007127] [MT7208] EL2 enhancement in MOLY
+ * [merged from L1SL2S-IT CBr]
+ * 1. modify the MACROs checking SIT index in ePDCP.
+ * 2. [bugfix] update BD chksum after removing PDCP header.
+ * 3. [bugfix] fix assert when deactivating loopback test mode
+ *   -> also fix UT cases.
+ * 4. [bugfix] cache flush for the scaled data 
+ * 5. [modify] patch the random method in freerun.
+ * 6. [modify] set the padding enums as 0x7fffffff for cgen.
+ ****************************************************************************/
+
+/*
+*	mtk02353, 2011/07/28
+*
+*   eRRC-ePDCP SAP message structure definition
+*
+*   - the file only defines the message structure.
+*       - naming rule : similar to message id 
+*           (a) exclude the prefix "MSG_ID_"
+*           (b) add the postfix "_struct"
+*   - message id is defined in epdcp_sap.h
+*       MSG_ID_ERRC_EPDCP_DCCH_DATA_REQ,
+*       MSG_ID_ERRC_EPDCP_DCCH_DATA_CNF,
+*       MSG_ID_ERRC_EPDCP_DCCH_DATA_IND,
+*       MSG_ID_ERRC_EPDCP_DCCH_DATA_RES,
+*       MSG_ID_ERRC_EPDCP_TEST_REQ,
+*       MSG_ID_ERRC_EPDCP_TEST_CNF,
+*       MSG_ID_ERRC_EPDCP_CONFIG_REQ,
+*       MSG_ID_ERRC_EPDCP_CONFIG_CNF,
+*       MSG_ID_ERRC_EPDCP_CNTINFO_REQ,
+*       MSG_ID_ERRC_EPDCP_CNTINFO_CNF,
+*       MSG_ID_ERRC_EPDCP_EXCESS_DELAY_IND
+*
+*   history:
+*   2011/11/16 - timothy
+*       seperate the configuration array of CONFIG_REQ into 2 arrays,
+*       one is for add_and_modify, and the other is for deletion.
+*/
+#ifndef _LTE_ERRC_EPDCP_SAP_STRUCT_DEF_H_
+#define _LTE_ERRC_EPDCP_SAP_STRUCT_DEF_H_
+
+#include "kal_public_api.h"
+
+#include "qmu_bm.h"
+#include "el2_sap_common.h"
+#include "common_def.h"
+
+/*****************************************************************************
+*   constants 
+*****************************************************************************/
+
+/* numbers */
+#define EPDCP_SAP_MAX_NUM_CFG_RB    (10) //2 //2 SRB + 8 DRBs
+#define EPDCP_SAP_MAX_NUM_DRB       (8)  //8 DRBs
+#define EPDCP_SAP_MAX_NUM_ROHC_PROF (9)
+#define EPDCP_SAP_MAX_NUM_QUEUING_DELAY_RSLT    (6)
+
+
+/* RB types */
+//#define EPDCP_SAP_DRB_TYPE_DRB_AM   (1)
+//#define EPDCP_SAP_DRB_TYPE_DRB_UM   (2)
+
+
+/*****************************************************************************
+*   enum types
+*****************************************************************************/
+
+/*
+*   dcch_data_req flag_bmp bit index definition 
+*/
+typedef enum
+{
+    EPDCP_SAP_DATAREQ_FLAG_SMC           = 0,
+    EPDCP_SAP_DATAREQ_FLAG_DRX_NO_WAKEUP = 1,
+    EPDCP_SAP_DATAREQ_FLAG_TIME_BOUND    = 2
+} epdcp_datareq_flag_enum;
+
+/*
+*   dcch_data_req result 
+*/
+typedef enum
+{
+    EPDCP_SAP_DATAREQ_OK = 0,
+    EPDCP_SAP_DATAREQ_FAILURE,
+    EPDCP_SAP_DATAREQ_UNSENT,
+    
+    EPDCP_SAP_DATAREQ_PAD = 0x7fffffff
+}epdcp_datareq_result_enum;
+
+
+/*
+*   integrity check result
+*/
+typedef enum
+{
+    EPDCP_SAP_INTCHK_OK = 0,
+    EPDCP_SAP_INTCHK_FAILURE,          //integrity check failure
+    EPDCP_SAP_INTCHK_SKIPPED,          //integrity check is not applied
+
+    EPDCP_SAP_INTCHK_PAD = 0x7fffffff
+} epdcp_intchk_result_enum;
+
+
+/* QoS label of RB */
+typedef enum
+{
+    EPDCP_SAP_RB_QOS_0 = 0, //none      (SRB)
+    EPDCP_SAP_RB_QOS_1,     //high      (DRB)
+    EPDCP_SAP_RB_QOS_2,     //middle    (DRB)
+    EPDCP_SAP_RB_QOS_3,     //low       (DRB)
+
+    EPDCP_SAP_RB_QOS_NUM,
+    EPDCP_SAP_RB_QOS_PAD = 0x7fffffff
+} epdcp_rb_qos_enum;
+
+
+/* command for RB */
+typedef enum
+{
+    EPDCP_SAP_RB_CMD_ESTABLISH = 0,
+    EPDCP_SAP_RB_CMD_EST_N_SUSP,
+    EPDCP_SAP_RB_CMD_SUSPEND,
+    EPDCP_SAP_RB_CMD_RECONFIG,
+    EPDCP_SAP_RB_CMD_HO_IND,
+    EPDCP_SAP_RB_CMD_RESUME,
+    EPDCP_SAP_RB_CMD_RELEASE,
+    EPDCP_SAP_RB_CMD_RELEASE_FROM_LTE,      //inter-RAT (from LTE)
+
+    EPDCP_SAP_RB_CMD_NUM,
+    EPDCP_SAP_RB_CMD_PAD = 0x7fffffff
+} epdcp_rb_cmd_enum;
+
+
+/* LB command for PDCP */
+typedef enum
+{
+    EPDCP_SAP_LB_CMD_MODE_A_DEACTIVATE = 0,
+    EPDCP_SAP_LB_CMD_MODE_A_ACTIVATE,
+    EPDCP_SAP_LB_CMD_MODE_B_DEACTIVATE,
+    EPDCP_SAP_LB_CMD_MODE_B_ACTIVATE,
+    EPDCP_SAP_LB_CMD_MODE_C_DEACTIVATE,
+    EPDCP_SAP_LB_CMD_MODE_C_ACTIVATE,
+    
+    EPDCP_SAP_LB_CMD_NUM,
+    EPDCP_SAP_LB_CMD_PAD = 0x7fffffff
+} epdcp_lb_cmd_enum;
+
+
+/* integrity algorithm enum */
+typedef enum
+{
+    EPDCP_SAP_INT_ALG_EIA0 = 0,
+    EPDCP_SAP_INT_ALG_EIA1,
+    EPDCP_SAP_INT_ALG_EIA2,
+    EPDCP_SAP_INT_ALG_EIA3, // ZUC algorithm
+
+    EPDCP_SAP_INT_ALG_NUM,
+    EPDCP_SAP_INT_ALG_PAD = 0x7fffffff
+} epdcp_int_alg_enum;
+
+
+/* cipher algorithm enum */
+typedef enum
+{
+    EPDCP_SAP_CIP_ALG_EEA0 = 0,
+    EPDCP_SAP_CIP_ALG_EEA1, // SNOW 3G
+    EPDCP_SAP_CIP_ALG_EEA2, // AES-based
+    EPDCP_SAP_CIP_ALG_EEA3, // ZUC algorithm
+
+    EPDCP_SAP_CIP_ALG_NUM,
+    EPDCP_SAP_CIP_ALG_PAD = 0x7fffffff
+} epdcp_cip_alg_enum;
+
+
+typedef enum
+{
+    EPDCP_SAP_MEASUREMENT_OFF = 0, 
+    EPDCP_SAP_MEASUREMENT_ON, 
+    EPDCP_SAP_MEASUREMENT_MODIFY
+} epdcp_delay_measurement_enum;
+
+
+typedef enum
+{
+    EPDCP_SAP_DELAY_THRESH_MS_30 = 0, 
+    EPDCP_SAP_DELAY_THRESH_MS_40, 
+    EPDCP_SAP_DELAY_THRESH_MS_50, 
+    EPDCP_SAP_DELAY_THRESH_MS_60, 
+    EPDCP_SAP_DELAY_THRESH_MS_70, 
+    EPDCP_SAP_DELAY_THRESH_MS_80, 
+    EPDCP_SAP_DELAY_THRESH_MS_90, 
+    EPDCP_SAP_DELAY_THRESH_MS_100, 
+    EPDCP_SAP_DELAY_THRESH_MS_150, 
+    EPDCP_SAP_DELAY_THRESH_MS_300, 
+    EPDCP_SAP_DELAY_THRESH_MS_500, 
+    EPDCP_SAP_DELAY_THRESH_MS_750, 
+    EPDCP_SAP_DELAY_THRESH_MS_PAD = 0x7fffffff
+} epdcp_delay_thresh_enum; 
+
+
+typedef enum
+{
+    EPDCP_SAP_DELAY_RPT_INTV_MS_1024 = 0, 
+    EPDCP_SAP_DELAY_RPT_INTV_MS_2048, 
+    EPDCP_SAP_DELAY_RPT_INTV_MS_5120, 
+    EPDCP_SAP_DELAY_RPT_INTV_MS_10240,
+    EPDCP_SAP_DELAY_RPT_INTV_PAD = 0x7fffffff
+} epdcp_delay_rpt_intv_enum;
+
+
+/* UDC enum */
+typedef enum
+{
+    EPDCP_SAP_UDC_BUF_SZ_KBYTE_2 = 0,
+    EPDCP_SAP_UDC_BUF_SZ_KBYTE_4,
+    EPDCP_SAP_UDC_BUF_SZ_KBYTE_8,
+
+    EPDCP_SAP_UDC_BUF_SZ_KBYTE_PAD = 0x7fffffff
+} epdcp_udc_buf_sz_enum;
+
+typedef enum
+{
+    EPDCP_SAP_UDC_DIC_INVALID = 0,
+    EPDCP_SAP_UDC_DIC_STANDARD,
+    EPDCP_SAP_UDC_DIC_OPERATOR,
+
+    EPDCP_SAP_UDC_DIC_PAD = 0x7fffffff
+} epdcp_udc_dic_enum;
+
+
+/* discard timer enum */
+typedef enum
+{
+    EPDCP_SAP_DISC_TMR_MS_50 = 0,
+    EPDCP_SAP_DISC_TMR_MS_100,
+    EPDCP_SAP_DISC_TMR_MS_150,
+    EPDCP_SAP_DISC_TMR_MS_300,
+    EPDCP_SAP_DISC_TMR_MS_500,
+    EPDCP_SAP_DISC_TMR_MS_750,
+    EPDCP_SAP_DISC_TMR_MS_1500,
+    EPDCP_SAP_DISC_TMR_MS_INFINITY,
+    
+    EPDCP_SAP_DISC_TMR_MS_PAD = 0x7fffffff
+} epdcp_disc_tmr_enum;
+
+typedef enum
+{
+    EPDCP_SAP_ROHC_EN_DISABLED = 0,
+    EPDCP_SAP_ROHC_EN_ENABLED_BIDIR,
+    EPDCP_SAP_ROHC_EN_ENABLED_UL_ONLY
+} epdcp_rohc_en_enum;
+
+typedef enum
+{
+    EPDCP_SAP_DRB_TYPE_LTE = 0,
+    EPDCP_SAP_DRB_TYPE_LWA
+} epdcp_drb_type_enum;
+
+typedef enum
+{
+    EPDCP_SAP_STUS_PDU_ON_POLL_TYPE_1 = 0,
+    EPDCP_SAP_STUS_PDU_ON_POLL_TYPE_2
+} epdcp_stus_rpt_type_on_poll_enum;
+
+/* DRB direction definition */
+#define EPDCP_DRB_DIR_UL    (0x01)
+#define EPDCP_DRB_DIR_DL    (0x02)
+#define EPDCP_DRB_DIR_ULDL  (EPDCP_DRB_DIR_UL | EPDCP_DRB_DIR_DL)
+
+/*****************************************************************************
+*   structures
+*****************************************************************************/
+
+typedef struct
+{
+    /* polling param */
+    kal_bool                            type_on_poll_valid;
+    epdcp_stus_rpt_type_on_poll_enum    type_on_poll;
+
+    /* periodic param */
+    kal_bool                            type1_periodicity_valid;
+    kal_bool                            type2_periodicity_valid;
+    kal_bool                            offset_valid;
+    kal_bool                            type1_periodicity_recfg;
+    kal_bool                            type2_periodicity_recfg;
+    kal_uint32                          type1_periodicity;
+    kal_uint32                          type2_periodicity;
+    kal_uint32                          offset;
+} epdcp_stus_rpt_param_struct;
+
+/* PDCP-config (RB property) */
+typedef struct
+{
+    epdcp_drb_type_enum             drb_type;
+    kal_uint8                       flag_rlc_um;
+    kal_uint8                       flag_um_long_sn;    // UM only
+    kal_uint8                       bmp_um_dir;         // UM only : bit#0:UL, bit#1:DL
+
+
+    kal_uint8                       flag_am_stus_rpt;   // AM only
+    kal_uint8                       flag_am_long_sn;    // AM only    
+    kal_bool                        flag_am_rlc_li_field_15_bit; // AM only
+    kal_uint8                       pad1;
+
+    epdcp_rohc_en_enum              rohc_enabled;
+    kal_uint16                      rohc_max_cid;
+    kal_uint8                       rohc_profs[EPDCP_SAP_MAX_NUM_ROHC_PROF];
+
+    kal_bool                        udc_enabled;
+    epdcp_udc_buf_sz_enum           udc_buf_sz;
+    epdcp_udc_dic_enum              udc_dic;
+
+    kal_bool                        reorder_tmr_is_valid;
+    kal_uint32                      reorder_tmr;
+    epdcp_disc_tmr_enum             disc_tmr;           // spec-enum
+
+    epdcp_stus_rpt_param_struct     stus_rpt_param;
+} epdcp_drb_attr_struct;
+
+
+/* RB addition/modification config structure */
+typedef struct
+{
+    kal_uint8                   rb_idx;     //primary index
+    kal_uint8                   rb_id;
+    kal_uint8                   eps_br_id;
+    kal_uint8                   qci;
+    kal_bool                    is_gbr_bearer;
+    
+    epdcp_rb_cmd_enum           cmd;
+    epdcp_drb_attr_struct       drb_attr;
+} epdcp_rb_addmod_struct;
+
+
+/* RB deletion config */
+typedef struct
+{
+    kal_uint8                   rb_idx;
+    kal_uint8                   rb_id;
+    kal_uint8                   ho_failure;   //if failure, remove the new RB.
+    kal_uint8                   pad;
+
+    epdcp_rb_cmd_enum           cmd;
+} epdcp_rb_del_struct;
+
+
+/* PDCP security config structure */
+typedef struct
+{
+    kal_uint8               valid;
+    kal_uint8               cip_key_up_idx;
+    kal_uint8               cip_key_cp_idx;
+    kal_uint8               int_key_idx;
+    epdcp_int_alg_enum      int_alg;        //integrity algorithm 
+    epdcp_cip_alg_enum      cip_alg;        //cipher algorithm
+} epdcp_sec_cfg_struct;
+
+
+/* queuing delay result structure */
+typedef struct
+{
+    kal_uint8               qci;
+    kal_uint32              excess_delay_num;
+    kal_uint32              total_num;
+} epdcp_delay_result_struct;
+
+
+/* PDCP queuing delay config structure */
+typedef struct{
+    kal_bool                        valid;
+    epdcp_delay_measurement_enum    measurement_status;                                                                                                                                            // if valid=false,  delay_theshold and delay_report_interval should be ignored
+    epdcp_delay_thresh_enum         threshold;
+    epdcp_delay_rpt_intv_enum       report_interval;
+} epdcp_delay_cfg_struct;
+
+
+/* RB loopback config structure */
+typedef struct
+{
+    kal_uint8               rb_idx;         //RB index
+    kal_uint8               rb_id;
+    kal_uint8               pad;
+
+    kal_uint8               scaling;        //need scaling or not?
+    kal_uint16              size;           //scaling size
+} epdcp_rb_lbcfg_struct;
+
+
+/* RB COUNT info structure */
+typedef struct
+{
+    kal_uint8               rb_idx;         //RB index
+    kal_uint8               rb_id;
+    kal_uint16              pad;
+
+    kal_uint32              rx_count;       //HFN + SN
+    kal_uint32              tx_count;       //HFN + SN
+} epdcp_rb_cntinfo_struct;
+
+typedef struct
+{
+    kal_uint8               mbsfn_area_id; // 0~255
+    kal_uint8               mcch_idx;   //numbered by eRRC(not from NW), range 0~7
+}epdcp_mcch_add_struct;
+
+typedef struct
+{
+    kal_uint8               mbsfn_area_id;  // 0~255, currently for debug purpose only
+    kal_uint8               mcch_idx;
+}epdcp_mcch_del_struct;
+
+typedef struct
+{
+    kal_uint8               mbsfn_area_id;
+    kal_uint8               pmch_id; //0~15	
+    kal_uint16              sessionId;  // 0xFFFF means no configure session id
+    kal_uint8               TMGI[6];
+    kal_uint8               lc_id; //0~28
+    kal_uint8               mrb_idx;     //numbered by eRRC(not from NW), range depends on L2 HW capability
+}epdcp_mrb_add_struct;
+
+typedef struct
+{
+    kal_uint8               mbsfn_area_id; //currently for debug usage only
+    kal_uint8               pmch_id; //0~15, currently for debug usage only
+    kal_uint16              sessionId; //currently for debug usage only
+    kal_uint8               TMGI[6]; //currently for debug usage only
+    kal_uint8               lc_id; //0~28, currently for debug usage only
+    kal_uint8               mrb_idx;
+}epdcp_mrb_del_struct;
+
+/*****************************************************************************
+*   message structure
+*****************************************************************************/
+
+//MSG_ID_ERRC_EPDCP_CONFIG_REQ,
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   add_num;
+    kal_uint8                   mod_num;
+    kal_uint8                   del_num;
+    kal_bool                    drb_continue_rohc;
+
+    epdcp_rb_addmod_struct      rb_add[EPDCP_SAP_MAX_NUM_CFG_RB];
+    epdcp_rb_addmod_struct      rb_mod[EPDCP_SAP_MAX_NUM_CFG_RB];
+    epdcp_rb_del_struct         rb_del[EPDCP_SAP_MAX_NUM_CFG_RB];
+
+    epdcp_sec_cfg_struct        sec_cfg;
+    epdcp_delay_cfg_struct      delay_cfg;
+
+    //for eMBMS related
+    kal_uint8                   mcch_add_num[MAX_EMBMS_FREQ_SUPPORT];
+    kal_uint8                   mcch_del_num[MAX_EMBMS_FREQ_SUPPORT];
+    epdcp_mcch_add_struct       mcch_add[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MCCH_SUPPORT];
+    epdcp_mcch_del_struct       mcch_del[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MCCH_SUPPORT];
+
+    kal_uint8                   mrb_add_num[MAX_EMBMS_FREQ_SUPPORT];
+    kal_uint8                   mrb_del_num[MAX_EMBMS_FREQ_SUPPORT];
+    epdcp_mrb_add_struct        mrb_add[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MRB_SUPPORT];
+    epdcp_mrb_del_struct        mrb_del[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MRB_SUPPORT];
+} errc_epdcp_config_req_struct;
+
+
+//MSG_ID_ERRC_EPDCP_CONFIG_CNF,
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    errc_el2_cfg_result_enum    result;
+} errc_epdcp_config_cnf_struct;
+
+//MSG_ID_ERRC_EPDCP_SWITCH_VIRTUAL_CONNECTED_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    errc_el2_switch_virtual_connected_enum status;
+} errc_epdcp_switch_virtual_connected_req_struct;
+
+/*
+*   MSG_ID_ERRC_EPDCP_DCCH_DATA_REQ
+*
+*   note: read peer_buffer_pointer to get tgpd pointer.
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   rb_id;
+    kal_uint8                   rb_idx;
+    kal_uint16                  trans_id;
+    kal_uint16                  flag_bmp;
+
+    void                        *p_addr;
+    kal_uint32                  data_len;
+
+    // this is used during buffer release
+    KAL_AFM_ID                  afm_id;
+    
+} errc_epdcp_dcch_data_req_struct;
+
+
+//MSG_ID_ERRC_EPDCP_DCCH_DATA_CNF,
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   rb_id;
+    kal_uint8                   rb_idx;
+    kal_uint16                  trans_id;
+    epdcp_datareq_result_enum   result;
+} errc_epdcp_dcch_data_cnf_struct;
+
+
+/*
+*   MSG_ID_ERRC_EPDCP_DCCH_DATA_IND,
+*
+*   note: read peer_buffer_pointer to get rgpd pointer
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   rb_id;
+    kal_uint8                   rb_idx;
+    kal_uint16                  pad02;
+    epdcp_intchk_result_enum    result;
+    kal_uint32                  pdcp_count; // XXX: not needed if DL security is activated?
+    void                        *p_data;
+    kal_uint32                  data_len; // including RRC message & MAC-I
+
+    qbm_gpd                     *p_rgpd; //TODO: to be removed
+} errc_epdcp_dcch_data_ind_struct;
+
+/*
+ * MSG_ID_ERRC_EPDCP_MCCH_DATA_IND,
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   ci; //0~MAX_EMBMS_FREQ_SUPPORT-1
+    kal_uint8                   mcch_idx;
+    kal_uint8                   mcch_mp_id;
+    kal_uint8                   pad0;
+    void                        *p_data;
+    kal_uint32                  data_len; // including RRC message & MAC-I
+} errc_epdcp_mcch_data_ind_struct;
+
+//MSG_ID_ERRC_EPDCP_DCCH_DATA_RES,
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   rb_id;
+    kal_uint8                   rb_idx;
+    kal_uint16                  pad02;
+} errc_epdcp_dcch_data_res_struct;
+
+
+//MSG_ID_ERRC_EPDCP_TEST_REQ,
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   rb_num;  // only valid for mode A
+    kal_uint8                   pad0;
+    kal_uint16                  pad1;
+    epdcp_rb_lbcfg_struct       rb_cfg[EPDCP_SAP_MAX_NUM_DRB];  // only valid for mode A
+    kal_uint8                   mbsfn_area_id; //0~255, only valid for mode C
+    kal_uint8                   pmch_id; //0~15, only valid for mode C
+    kal_uint8                   lcid; //0~28, only valid for mode C
+    kal_uint8                   ci; //0~MAX_EMBMS_FREQ_SUPPORT-1, only valid for mode C
+    epdcp_lb_cmd_enum           cmd;
+} errc_epdcp_test_req_struct;
+
+
+//MSG_ID_ERRC_EPDCP_TEST_CNF,
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    errc_el2_cfg_result_enum    result;
+} errc_epdcp_test_cnf_struct;
+
+
+/*
+*   MSG_ID_ERRC_EPDCP_CNTINFO_REQ
+*
+*   - null message
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    /* nothing */
+    
+} errc_epdcp_cntinfo_req_struct;
+
+
+
+/*
+*   MSG_ID_ERRC_EPDCP_CNTINFO_CNF
+*
+*   - return the PDCP COUNT of each DRB
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint8                   rb_num;
+    kal_uint8                   pad01;
+    kal_uint16                  pad02;
+    epdcp_rb_cntinfo_struct     rb_cntinfo[EPDCP_SAP_MAX_NUM_DRB];
+} errc_epdcp_cntinfo_cnf_struct;
+
+/*
+ *   MSG_ID_ERRC_EPDCP_DETECTION_TIMER_START_REQ,
+ *
+ *   note: ERRC configure EPDPC detection timer value
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint32                   detection_time_value; // in seconds
+} errc_epdcp_detection_timer_start_req_struct;
+
+/*
+ *   MSG_ID_ERRC_EPDCP_DETECTION_TIMER_2_START_REQ,
+ *
+ *   note: ERRC configure EPDPC detection timer value
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint32                   detection_time_value; // in seconds
+} errc_epdcp_detection_timer_2_start_req_struct;
+
+
+/*
+ *   MSG_ID_ERRC_EPDCP_PS_DATA_INACTIVE_TIME_IND,
+ *
+ *   note: EPDCP response ERRC the inactive time of last PS data
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint32                   inactive_time;
+} errc_epdcp_ps_data_inactive_time_ind_struct;
+
+
+/*
+*   MSG_ID_ERRC_EPDCP_MTCH_PC_CNF
+*
+*   - return the PDCP COUNT of each DRB
+*/
+typedef struct
+{
+    LOCAL_PARA_HDR
+    
+    kal_uint32                  packet_count;
+} errc_epdcp_mtch_pc_cnf_struct;
+
+
+/*
+ *  MSG_ID_ERRC_EPDCP_EXCESS_DELAY_IND
+ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint8                       list_num;
+    epdcp_delay_result_struct       result_list[EPDCP_SAP_MAX_NUM_QUEUING_DELAY_RSLT];
+    epdcp_delay_thresh_enum         threshold;
+    epdcp_delay_rpt_intv_enum       report_interval;
+} errc_epdcp_excess_delay_ind_struct;
+
+#endif //_LTE_ERRC_EPDCP_SAP_STRUCT_DEF_H_