[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_api.h b/mcu/interface/protocol/lte/l2tps/l2tps_api.h
new file mode 100644
index 0000000..acbec63
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_api.h
@@ -0,0 +1,4 @@
+#ifndef L2TPS_API_H
+#include "kal_public_api.h"
+void l2tps_rcv_ilm(ilm_struct* pIlm);
+#endif
\ No newline at end of file
diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_msg.h b/mcu/interface/protocol/lte/l2tps/l2tps_msg.h
new file mode 100644
index 0000000..c8626bf
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_msg.h
@@ -0,0 +1,262 @@
+#ifndef L2TPS_MSG_H
+#define L2TPS_MSG_H
+
+#define L2TPS_GEN_TC_ID (0xFFFF)
+
+/* For Gemini CFG */
+#define L2TPS_MAX_GEMINI_GAP_PATTERN_NUM 5
+#define L2TPS_MAX_GEMINI_VAR_DURN_NUM 5
+#define L2TPS_MAX_GEMINI_DURN_SEQ_NUM 10
+
+typedef unsigned char  uint8;
+typedef unsigned short uint16;
+typedef unsigned int   uint32;
+
+typedef struct
+{
+		uint16 tc_id;
+		uint16 cmd_id;
+} l2tps_cmd_hdr_t;
+
+enum
+{
+	L2TPS_MSG_ID_DL_POLLING,
+	L2TPS_MSG_ID_UL_POLLING_RES,
+	L2TPS_MSG_ID_DL_TEST_START,
+	L2TPS_MSG_ID_DL_TEST_END,
+	L2TPS_MSG_ID_DL_UL_DATA_REQ,
+	L2TPS_MSG_ID_DL_EST_DRB,
+	L2TPS_MSG_ID_DL_ULDL_LB_START,
+	L2TPS_MSG_ID_DL_DLUL_LB_START,
+	L2TPS_MSG_ID_DL_INITIAL_ACCESS_REQ,
+	L2TPS_MSG_ID_DL_ACTIVATE_SRB,
+	L2TPS_MSG_ID_DL_HO_RA_REQ,
+	L2TPS_MSG_ID_DL_HO_RA_CNF,
+	L2TPS_MSG_ID_DL_TA_TIMER_CFG,
+	L2TPS_MSG_ID_UL_TA_TIMER_CFG_CNF,
+	L2TPS_MSG_ID_DL_DRX_CFG,
+	L2TPS_MSG_ID_UL_DRX_CNF,
+	L2TPS_MSG_ID_DL_SPS_CFG,
+	L2TPS_MSG_ID_UL_SPS_CNF,
+	L2TPS_MSG_ID_DL_TTI_BUNDLE_CFG,
+	L2TPS_MSG_ID_UL_TTI_BUNDLE_CNF,
+	L2TPS_MSG_ID_DL_TTI_BUNDLE_DISABLE_CFG,
+	L2TPS_MSG_ID_UL_TTI_BUNDLE_DISABLE_CNF,
+	L2TPS_MSG_ID_DL_RA_CFG,
+	L2TPS_MSG_ID_UL_RA_CFG_CNF,
+	L2TPS_MSG_ID_DL_SR_CFG,
+	L2TPS_MSG_ID_UL_SR_CFG_CNF,
+	L2TPS_MSG_ID_DL_BSR_CFG,
+	L2TPS_MSG_ID_UL_BSR_CFG_CNF,
+	L2TPS_MSG_ID_DL_SRB2_DLUL_LB_START,
+	L2TPS_MSG_ID_DL_RLF_REPORT_ENABLE,
+	L2TPS_MSG_ID_UL_RLF_REPORT,
+	L2TPS_MSG_ID_DL_SRB_DATA_REQ,
+	L2TPS_MSG_ID_UL_SRB_DATA_CNF,
+	L2TPS_MSG_ID_DL_MEAS_GAP_CFG,
+	L2TPS_MSG_ID_UL_MEAS_GAP_CFG_CNF,
+	L2TPS_MSG_ID_DL_GEMINI_GAP_CFG,
+	L2TPS_MSG_ID_UL_GEMINI_GAP_CFG_CNF,
+	L2TPS_MSG_ID_DL_PRACH_CFG,
+	L2TPS_MSG_ID_UL_PRACH_CFG_CNF
+};
+
+typedef struct
+{
+    uint16 tdd_cfg;
+    uint16 special_sf_idx;
+} l2tps_cmd_dl_polling_t;
+
+typedef struct
+{
+	uint16 tc_id;
+    uint8   rsv0;
+    uint8   rsv1;
+} l2tps_cmd_dl_test_start_t;
+
+typedef struct
+{
+    uint32 pkt_num;
+    uint32 pkt_size;
+    uint32 rb_idx;
+} l2tps_cmd_dl_ul_data_req_t;
+
+typedef struct
+{
+    uint32  rb_cfg;
+    uint8   lcid;
+    uint8   rb_id;
+    uint8   rb_idx;
+    uint8   rsv0;
+} l2tps_add_rb_info_t;
+
+typedef struct
+{
+    uint8   est_num;
+    uint8   rsv0;
+    uint8   rsv1;
+    uint8   rsv2;
+    l2tps_add_rb_info_t est_rb[8];
+} l2tps_cmd_dl_est_drb_t;
+
+typedef struct
+{
+    uint16  tdd_cfg;
+    uint16  special_sf_idx;
+	uint8   ueid[6];
+    uint8   rsv0;
+    uint8   rsv1;
+} l2tps_cmd_dl_initial_access_req;
+
+typedef struct
+{
+    uint32  offset;
+
+    uint8   drx_release;
+    uint8   long_cycle;
+    uint8   on_timer;
+    uint8   inact_timer;
+
+    uint8   retx_timer;
+    uint8   short_cycle_valid;
+    uint8   short_cycle;
+    uint8   short_timer;
+} l2tps_cmd_dl_drx_cfg;
+
+typedef struct
+{
+    uint8                  rapid;
+    uint8                  ra_mask;
+    uint8                  rsv0;
+    uint8                  drx_enable;    // bool: TRUE = with DRX config, to verify HO cmd + DRX config scenario
+    l2tps_cmd_dl_drx_cfg   drx_cfg;
+} l2tps_cmd_dl_ho_ra_req;
+
+typedef struct
+{
+    uint16    send_delay;
+} l2tps_cmd_dl_srb_data_req;
+
+typedef struct
+{
+    uint32   ta_timer_idx;
+} l2tps_cmd_dl_ta_timer_cfg;
+
+typedef struct
+{
+    uint16 sps_crnti;
+    uint8 ul_sps_valid;
+    uint8 dl_sps_valid;
+
+    uint16 dl_sps_interval;
+    uint16 ul_sps_interval;
+    uint8 dl_sps_proc_num;
+    uint8 ul_sps_imp_rel;
+    uint8 two_interval;
+    uint8   rsv0;
+} l2tps_cmd_dl_sps_cfg;
+
+typedef struct
+{
+    uint8 ra_preamble_nb_index; //enum 0-15
+    uint8 ra_pow_ramping_index; //enum 0-3
+    uint8 ra_preamble_init_pow_index; //enum 0-15
+    uint8 ra_preamble_tx_max_index; //enum 0-10
+    uint8 ra_rar_wnd_sz_index; //enum 0-7
+    uint8 ra_cr_timer_index; //enum 0-7
+
+    uint8 ra_msg3_tx_max; //uint8
+
+    uint8 group_a_valid; //bool
+    uint8 ra_group_a_sz_index; //enum 0-14
+    uint8 ra_msg_sz_group_a_index; //enum 0-3
+    uint8 ra_msg_pow_offset_group_b_index; //enum 0-7
+
+    uint8 ra_dedicated_valid; //bool
+    uint8 rapid; //uint8
+    uint8 prach_mask; //uint8
+
+    uint8 rsv0;
+    uint8 rsv1;
+}l2tps_cmd_dl_ra_cfg;
+
+typedef struct
+{
+    uint8    config_index;    // 0~63
+    uint8    zero_corr_zone;  // 0~15
+    uint8    freq_offset;     // 0~94
+    uint8    high_speed;      // true or false
+    uint32   root_index;      // 0~837
+}l2tps_cmd_dl_prach_cfg;
+
+typedef struct
+{
+    //EmacCfgReq
+    uint16 sr_prohibit_timer;//uint8
+    uint16 rsv;
+    //CphyCfgReq
+    uint16 sr_enable; //bool
+    uint16 pucch_resource; //uint16
+    uint16 config_index; //uint8
+    uint16 dsr_max; //uint8
+}l2tps_cmd_dl_sr_cfg;
+
+typedef struct
+{
+    //EmacCfgReq
+    uint16 periodic_bsr_timer_index; //enum0-14
+    uint16 retx_bsr_timer_index; //enum0-5
+
+}l2tps_cmd_dl_bsr_cfg;
+
+typedef struct
+{
+    uint8  rb_idx;    //RB index
+    uint8  rbid;      //RB ID
+    uint16 is_old_rb; //old RB RLF or not
+
+}l2tps_cmd_ul_rlf_report;
+
+typedef struct
+{
+    uint8  meas_gap_setup;    //bool
+    uint8  gap_pattern;      //0 or 1
+    uint8  gap_offset; //0-39 for gp0, 0-79 for gp1
+
+}l2tps_cmd_dl_meas_gap_cfg;
+
+typedef struct
+{
+    uint8 gap_var_durn;
+    uint8 gap_var_durn_prob;
+
+}l2tps_cmd_dl_gemini_var_durn_t;
+
+typedef struct
+{
+    uint16 gap_offset;
+    uint16 gap_cycle;
+    uint8 gap_duration;        //Original gap duration
+    uint8 gap_durn_mode;       //0: always apply gap_duration, 1: var_durn, 2: durn_seq
+    uint8 rsrv0;               //To make 4-byte align
+    uint8 gap_var_durn_num;    //Config if gap shrinking is wanted.(MAX 3 var_durn) If sum of var_durn_prob < 1, the rest probability remains as gap_duration.
+    l2tps_cmd_dl_gemini_var_durn_t gap_var_durn[L2TPS_MAX_GEMINI_VAR_DURN_NUM];
+    uint8 gap_durn_seq_num;
+    uint8 gap_durn_seq[L2TPS_MAX_GEMINI_DURN_SEQ_NUM];
+    uint8 rsrv1;               //To make 4-byte align
+    uint8 rsrv2;               //To make 4-byte align
+    uint8 rsrv3;               //To make 4-byte align
+
+}l2tps_cmd_dl_gemini_gap_pattern_t;
+
+typedef struct
+{
+    uint8 need_cnf_flag;       //bool, true->need UE reply GEMINI_GAP_CNF
+    uint8 gemini_gap_setup;    //bool, true->enable gemini gap, false->disable gemini gap
+    uint8 gap_pattern_num;     //At most config 3 gap pattern
+    uint8 rsrv0;               //To make 4-byte align
+    l2tps_cmd_dl_gemini_gap_pattern_t gap_pattern[L2TPS_MAX_GEMINI_GAP_PATTERN_NUM];
+
+}l2tps_cmd_dl_gemini_gap_cfg;
+
+#endif
diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_rb_db.cfg b/mcu/interface/protocol/lte/l2tps/l2tps_rb_db.cfg
new file mode 100644
index 0000000..447300b
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_rb_db.cfg
@@ -0,0 +1,249 @@
+L2TPS_RB_CFG_BEGIN()

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_am_001, L2TPS_RB_CFG_AM_001)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(0)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(1)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(3)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(4)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(2)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(1)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_am_002, L2TPS_RB_CFG_AM_002)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(0)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(1)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(5)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(4)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(3)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(1)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_am_003, L2TPS_RB_CFG_AM_003)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(0)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(1)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(6)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(4)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(1)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(1)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_am_004, L2TPS_RB_CFG_AM_004)

+ 

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(0)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(1)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(5)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(4)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(0)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(1)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_um_001, L2TPS_RB_CFG_UM_001)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(1)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(1)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(3)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(4)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(2)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(1)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_um_002, L2TPS_RB_CFG_UM_002)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(1)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(0)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(4)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(2)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(1)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(2)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_um_003, L2TPS_RB_CFG_UM_003)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(1)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(0)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(3)

+L2TPS_RB_RLC_STUS_PROH_TMR(3)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(15)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(0)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(2)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(4)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_um_004, L2TPS_RB_CFG_UM_004)

+

+L2TPS_RB_DIRECTION(3)			/*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(1)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(0)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)				

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(4)

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(10)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(7)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(1)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(5)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+/******************************************************************/

+L2TPS_RB_CFG_START(l2tps_rb_cfg_um_005, L2TPS_RB_CFG_UM_005)

+

+L2TPS_RB_DIRECTION(3)    /*1: UL, 2: DL 3: Bidirection*/

+L2TPS_RB_RLC_MODE(1)  			/*AM: 0 UM: 1 TM: 2*/

+L2TPS_RB_RLC_SN_LEN(1)			/*5bit: 0 10bits: 1*/

+L2TPS_RB_RLC_INI_SN(0)

+L2TPS_RB_RLC_POLL_PDU(2)

+L2TPS_RB_RLC_POLL_BYTE(4)

+L2TPS_RB_RLC_UL_RETX_MAX(4)

+L2TPS_RB_RLC_POLL_RETX_TMR(3)

+L2TPS_RB_RLC_T_REODER_TMR(30)    /*longest*/

+L2TPS_RB_RLC_STUS_PROH_TMR(5)

+

+L2TPS_RB_PDCP_SN_SZ(1)			/*short SN: 0 long SN: 1*/

+L2TPS_RB_PDCP_ROHC(0)

+L2TPS_RB_PDCP_DISC_TMR(7)       /*enum{50, 100, 150, 300, 500, 750, 1500, INF}*/

+

+L2TPS_RB_MAC_PRI(3)  			/*1~16*/  

+L2TPS_RB_MAC_PBR(4)				/*enum{0, 8, 16, 32, 64, 128, 256, inf}*/

+L2TPS_RB_MAC_LCG(2)				/*enum{0, 1, 2, 3, not use}*/

+L2TPS_RB_MAC_BSD(1)				/*enum{50, 100, 150, 300, 500, 1000}*/

+

+L2TPS_RB_CFG_END()

+/******************************************************************/

+

+//===========================================================================//
+//================================ L2TPS RLC ================================//
+//===========================================================================//
+
+#include "l2tps_rlc_ue_rb_cfg_db.cfg"

+
+//===========================================================================//
+//=============================== end of file ===============================//
+//===========================================================================//
+

+L2TPS_RB_CFG_FINISH()

+

+

diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_rlc_ue_rb_cfg_db.cfg b/mcu/interface/protocol/lte/l2tps/l2tps_rlc_ue_rb_cfg_db.cfg
new file mode 100644
index 0000000..ed4490a
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_rlc_ue_rb_cfg_db.cfg
@@ -0,0 +1,1039 @@
+
+//===========================================================================//
+//================================ L2TPS RLC ================================//
+//===========================================================================//
+
+//--
+//[case]
+//  l2tps_rlc_am_loopback_01_basic
+//  l2tps_rlc_am_loopback_02_segmentation
+//  l2tps_rlc_am_loopback_03_concatenation
+//  l2tps_rlc_am_loopback_04_reasm_segmentation
+//  l2tps_rlc_am_loopback_05_reasm_concatenation
+//  l2tps_rlc_am_loopback_99_random
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_loopback, L2TPS_RLC_AM_LOOPBACK)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_reordering_01_basic
+//  l2tps_rlc_am_reordering_02_duplication
+//  l2tps_rlc_am_reordering_03_t_reordering
+//  l2tps_rlc_am_reordering_05_out_of_window_discard
+//  l2tps_rlc_am_reordering_06_duplication_partial
+//  l2tps_rlc_am_reordering_99_random
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_reordering, L2TPS_RLC_AM_REORDERING)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_reordering_04_t_reordering_zero
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_reordering_zero, L2TPS_RLC_AM_REORDERING_ZERO)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(0)      //0ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_discard_01_full_discard
+//  l2tps_rlc_am_discard_02_partial_discard
+//  l2tps_rlc_am_discard_03_unable_discard
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_discard, L2TPS_RLC_AM_DISCARD)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(1)         //100ms
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_poll_01_basic
+//  l2tps_rlc_am_poll_02_data_starvation
+//  l2tps_rlc_am_poll_03_window_stalling
+//  l2tps_rlc_am_poll_07_poll_expiry_retx_pdu
+//  l2tps_rlc_am_poll_08_poll_expiry_poll_nack
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_poll, L2TPS_RLC_AM_POLL)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(7)          //infinity
+L2TPS_RB_RLC_POLL_BYTE(14)        //infinity
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_poll_04_pdu_without_poll
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_poll_pdu, L2TPS_RLC_AM_POLL_PDU)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(14)        //infinity
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(54)    //500ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_poll_05_byte_without_poll
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_poll_byte, L2TPS_RLC_AM_POLL_BYTE)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(7)          //infinity
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(54)    //500ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_poll_06_poll_expiry_new_data
+//  l2tps_rlc_am_poll_09_timer_stop_data
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_poll_expiry, L2TPS_RLC_AM_POLL_EXPIRY)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(0)          //4 PDUs
+L2TPS_RB_RLC_POLL_BYTE(14)        //infinity
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_status_01_basic
+//  l2tps_rlc_am_status_02_t_status_prohibit
+//  l2tps_rlc_am_status_09_limit_report
+//  l2tps_rlc_am_status_10_large_report
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_status, L2TPS_RLC_AM_STATUS)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(7)          //infinity
+L2TPS_RB_RLC_POLL_BYTE(14)        //infinity
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(54)    //500ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_status_03_t_status_prohibit_zero
+//  l2tps_rlc_am_status_04_data_lost
+//  l2tps_rlc_am_status_05_delay_report
+//  l2tps_rlc_am_status_06_direct_report
+//  l2tps_rlc_am_status_07_partial_report
+//  l2tps_rlc_am_status_08_force_report
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_status_zero, L2TPS_RLC_AM_STATUS_ZERO)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(7)          //infinity
+L2TPS_RB_RLC_POLL_BYTE(14)        //infinity
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(54)    //500ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(0)     //0ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_retx_01_basic
+//  l2tps_rlc_am_retx_02_data_lost
+//  l2tps_rlc_am_retx_03_resegmentation
+//  l2tps_rlc_am_retx_05_handle_large_report
+//  l2tps_rlc_am_retx_06_radio_link_failure
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_retx, L2TPS_RLC_AM_RETX)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(6)          //256 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(3)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(50)    //300ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_retx_04_nack_combine
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_retx_combine, L2TPS_RLC_AM_RETX_COMBINE)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(6)          //256 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(3)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(50)    //300ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_retx_07_rlf_by_poll_back
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_retx_rlf, L2TPS_RLC_AM_RETX_RLF)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(7)          //infinity
+L2TPS_RB_RLC_POLL_BYTE(14)        //infinity
+L2TPS_RB_RLC_UL_RETX_MAX(3)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_schedule_01_rlc_sched_rule
+//  l2tps_rlc_am_schedule_02_fully_sched_new_pdu
+//  l2tps_rlc_am_schedule_03_fully_sched_retx_pdu
+//  l2tps_rlc_am_schedule_04_fully_sched_ctrl_pdu
+//  l2tps_rlc_am_schedule_05_fully_sched_mixed_pdu
+//  l2tps_rlc_mixed_schedule_05_fully_sched_mixed_pdu
+//  l2tps_rlc_mixed_schedule_06_lch_priority
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_schedule, L2TPS_RLC_AM_SCHEDULE)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_mixed_schedule_07_lch_bucket_size
+//  l2tps_rlc_mixed_schedule_08_lch_bj_refilling
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_schedule_lch, L2TPS_RLC_AM_SCHEDULE_LCH)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(17)    //90ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(1)               //8kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(1)               //100ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um5_loopback_01_basic
+//  l2tps_rlc_um5_loopback_02_segmentation
+//  l2tps_rlc_um5_loopback_03_concatenation
+//  l2tps_rlc_um5_loopback_04_reasm_segmentation
+//  l2tps_rlc_um5_loopback_05_reasm_concatenation
+//  l2tps_rlc_um5_loopback_99_random
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_loopback, L2TPS_RLC_UM5_LOOPBACK)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um5_reordering_01_basic
+//  l2tps_rlc_um5_reordering_02_duplication
+//  l2tps_rlc_um5_reordering_03_t_reordering
+//  l2tps_rlc_um5_reordering_05_in_window_discard
+//  l2tps_rlc_um5_reordering_98_suboptimal_random
+//  l2tps_rlc_um5_reordering_99_random
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_reordering, L2TPS_RLC_UM5_REORDERING)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um5_reordering_04_t_reordering_zero
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_reordering_zero, L2TPS_RLC_UM5_REORDERING_ZERO)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(0)      //0ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um5_discard_01_full_discard
+//  l2tps_rlc_um5_discard_02_partial_discard
+//  l2tps_rlc_um5_discard_03_unable_discard
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_discard, L2TPS_RLC_UM5_DISCARD)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(1)         //100ms
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um5_schedule_02_fully_sched_new_pdu
+//  l2tps_rlc_mixed_schedule_05_fully_sched_mixed_pdu
+//  l2tps_rlc_mixed_schedule_06_lch_priority
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_schedule, L2TPS_RLC_UM5_SCHEDULE)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(10)              //10
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(3)               //3
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_mixed_schedule_07_lch_bucket_size
+//  l2tps_rlc_mixed_schedule_08_lch_bj_refilling
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_schedule_lch, L2TPS_RLC_UM5_SCHEDULE_LCH)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(10)              //10
+L2TPS_RB_MAC_PBR(2)               //16kBps
+L2TPS_RB_MAC_LCG(3)               //3
+L2TPS_RB_MAC_BSD(1)               //100ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um10_loopback_01_basic
+//  l2tps_rlc_um10_loopback_02_segmentation
+//  l2tps_rlc_um10_loopback_03_concatenation
+//  l2tps_rlc_um10_loopback_04_reasm_segmentation
+//  l2tps_rlc_um10_loopback_05_reasm_concatenation
+//  l2tps_rlc_um10_loopback_99_random
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_loopback, L2TPS_RLC_UM10_LOOPBACK)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um10_reordering_01_basic
+//  l2tps_rlc_um10_reordering_02_duplication
+//  l2tps_rlc_um10_reordering_03_t_reordering
+//  l2tps_rlc_um10_reordering_05_in_window_discard
+//  l2tps_rlc_um10_reordering_98_suboptimal_random
+//  l2tps_rlc_um10_reordering_99_random
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_reordering, L2TPS_RLC_UM10_REORDERING)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um10_reordering_04_t_reordering_zero
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_reordering_zero, L2TPS_RLC_UM10_REORDERING_ZERO)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(0)      //0ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um10_discard_01_full_discard
+//  l2tps_rlc_um10_discard_02_partial_discard
+//  l2tps_rlc_um10_discard_03_unable_discard
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_discard, L2TPS_RLC_UM10_DISCARD)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(1)         //100ms
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_um10_schedule_02_fully_sched_new_pdu
+//  l2tps_rlc_mixed_schedule_05_fully_sched_mixed_pdu
+//  l2tps_rlc_mixed_schedule_06_lch_priority
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_schedule, L2TPS_RLC_UM10_SCHEDULE)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(8)               //8
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(1)               //1
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_mixed_schedule_07_lch_bucket_size
+//  l2tps_rlc_mixed_schedule_08_lch_bj_refilling
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_schedule_lch, L2TPS_RLC_UM10_SCHEDULE_LCH)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(8)               //8
+L2TPS_RB_MAC_PBR(1)               //8kBps
+L2TPS_RB_MAC_LCG(1)               //1
+L2TPS_RB_MAC_BSD(0)               //50ms
+
+L2TPS_RB_CFG_END()
+
+//--
+//[case]
+//  l2tps_rlc_am_loopback_07_sdu_len_valid
+//  l2tps_rlc_am_loopback_08_sdu_len_invalid
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_am_loopback_sdu_len, L2TPS_RLC_AM_LOOPBACK_SDU_LEN)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(37)    //180ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+
+//--
+//[case]
+//  l2tps_rlc_um5_loopback_10_invalid_sn7_sdu
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um5_loopback_sn7, L2TPS_RLC_UM5_LOOPBACK_SN7)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(0)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(0)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+
+//--
+//[case]
+//  l2tps_rlc_um10_loopback_10_invalid_sn7_sdu
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_um10_loopback_sn7, L2TPS_RLC_UM10_LOOPBACK_SN7)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(0)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+
+//--
+//[case]
+//  l2tps_rlc_am_errorhandle_01_error_hdr
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_tm_error_hdr, L2TPS_RLC_TM_ERROR_HDR)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(37)    //180ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+
+//--
+//[case]
+//  l2tps_rlc_am_errorhandle_03_error_hdr
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_tm_error_hdr_um10, L2TPS_RLC_TM_ERROR_HDR_UM10)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(1)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(-1)         //reserved
+L2TPS_RB_RLC_POLL_BYTE(-1)        //reserved
+L2TPS_RB_RLC_UL_RETX_MAX(-1)      //reserved
+L2TPS_RB_RLC_POLL_RETX_TMR(-1)    //reserved
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(-1)    //reserved
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+
+//--
+//[case]
+//  l2tps_rlc_am_error_handling_05_status_report
+//--
+
+L2TPS_RB_CFG_START(l2tps_rlc_tm_error_hdr_longpoll, L2TPS_RLC_TM_ERROR_HDR_LONGPOLL)
+
+L2TPS_RB_DIRECTION(3)             //UL = 1, DL = 2, BI = 3
+L2TPS_RB_RLC_MODE(0)              //AM = 0, UM = 1, TM = 2
+L2TPS_RB_RLC_SN_LEN(1)            //short = 0, long = 1
+L2TPS_RB_RLC_INI_SN(0)            //0
+L2TPS_RB_RLC_POLL_PDU(4)          //64 PDUs
+L2TPS_RB_RLC_POLL_BYTE(3)         //100kB
+L2TPS_RB_RLC_UL_RETX_MAX(4)       //4 times
+L2TPS_RB_RLC_POLL_RETX_TMR(54)    //500ms
+L2TPS_RB_RLC_T_REODER_TMR(9)      //45ms
+L2TPS_RB_RLC_STUS_PROH_TMR(12)    //60ms
+
+L2TPS_RB_PDCP_SN_SZ(1)            //short = 0, long = 1
+L2TPS_RB_PDCP_ROHC(0)             //disable = 0, enable = 1
+L2TPS_RB_PDCP_DISC_TMR(7)         //infinity
+
+L2TPS_RB_MAC_PRI(9)               //9
+L2TPS_RB_MAC_PBR(4)               //64kBps
+L2TPS_RB_MAC_LCG(2)               //2
+L2TPS_RB_MAC_BSD(2)               //150ms
+
+L2TPS_RB_CFG_END()
+
+//===========================================================================//
+//=============================== end of file ===============================//
+//===========================================================================//
+
+
diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_tc_enum.h b/mcu/interface/protocol/lte/l2tps/l2tps_tc_enum.h
new file mode 100644
index 0000000..5e3ce50
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_tc_enum.h
@@ -0,0 +1,16 @@
+#ifndef L2TPS_TC_ENUM_H
+#define L2TPS_TC_ENUM_H
+
+#define L2TPS_TC_TABLE_START()   enum{
+#define L2TPS_TC_REG1(_t)             _t,
+#define L2TPS_TC_REG2(_t,_func)       _t,
+#define L2TPS_TC_TABLE_END()     L2TPS_TC_NUM};
+
+#include "l2tps_tc_list.cfg"
+
+#undef L2TPS_TC_TABLE_START
+#undef L2TPS_TC_REG1 
+#undef L2TPS_TC_REG2
+#undef L2TPS_TC_TABLE_END
+
+#endif
\ No newline at end of file
diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_tc_list.cfg b/mcu/interface/protocol/lte/l2tps/l2tps_tc_list.cfg
new file mode 100644
index 0000000..2329360
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_tc_list.cfg
@@ -0,0 +1,12 @@
+L2TPS_TC_TABLE_START()
+L2TPS_TC_REG1(L2TPS_TC_LB_001)
+L2TPS_TC_REG1(L2TPS_TC_LB_002)
+L2TPS_TC_REG1(L2TPS_TC_LB_003)
+L2TPS_TC_REG1(L2TPS_TC_MAC_001)
+L2TPS_TC_REG1(L2TPS_TC_MAC_002)
+L2TPS_TC_REG1(L2TPS_TC_MAC_003)
+L2TPS_TC_REG1(L2TPS_TC_MAC_004)
+L2TPS_TC_REG1(L2TPS_TC_MAC_005)
+L2TPS_TC_REG1(L2TPS_TC_MAC_006) 
+L2TPS_TC_REG1(L2TPS_TC_MAC_007)
+L2TPS_TC_TABLE_END()
\ No newline at end of file
diff --git a/mcu/interface/protocol/lte/l2tps/l2tps_undef_rb_cfg.h b/mcu/interface/protocol/lte/l2tps/l2tps_undef_rb_cfg.h
new file mode 100644
index 0000000..d444b80
--- /dev/null
+++ b/mcu/interface/protocol/lte/l2tps/l2tps_undef_rb_cfg.h
@@ -0,0 +1,28 @@
+
+#undef L2TPS_RB_CFG_BEGIN
+#undef L2TPS_RB_CFG_START
+
+#undef L2TPS_RB_DIRECTION
+
+#undef L2TPS_RB_RLC_MODE
+#undef L2TPS_RB_RLC_SN_LEN
+#undef L2TPS_RB_RLC_INI_SN
+#undef L2TPS_RB_RLC_POLL_PDU
+#undef L2TPS_RB_RLC_POLL_BYTE 
+#undef L2TPS_RB_RLC_UL_RETX_MAX
+#undef L2TPS_RB_RLC_POLL_RETX_TMR
+#undef L2TPS_RB_RLC_T_REODER_TMR
+#undef L2TPS_RB_RLC_STUS_PROH_TMR
+
+#undef L2TPS_RB_PDCP_SN_SZ
+#undef L2TPS_RB_PDCP_ROHC
+#undef L2TPS_RB_PDCP_DISC_TMR
+
+#undef L2TPS_RB_MAC_PRI
+#undef L2TPS_RB_MAC_PBR
+#undef L2TPS_RB_MAC_LCG
+#undef L2TPS_RB_MAC_BSD
+
+#undef L2TPS_RB_CFG_END
+#undef L2TPS_RB_CFG_FINISH
+