[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_