[Feature][T8TSK-212][Modem]Update MTK modem version to MOLY.NR15.R3.MD700.MP.V75.P8.T800.L1.1215_20240425

MTK modem version: MOLY01242766_AUTO00283601(For_MOBILETEK35_IVT_T800_MOLY.NR15.R3.MD700.MP.V75.P8).tar.gz
RF  modem version: T800/l1-1215.rar

Change-Id: Ibf34a0a7101d7678d03aeebf38e6dfd7d281cf61
diff --git a/mcu/protocol/interface/ddm/atp_ursp_struct.h b/mcu/protocol/interface/ddm/atp_ursp_struct.h
old mode 100755
new mode 100644
index 1fc10c1..a56f38a
--- a/mcu/protocol/interface/ddm/atp_ursp_struct.h
+++ b/mcu/protocol/interface/ddm/atp_ursp_struct.h
@@ -1,9 +1,22 @@
+/*****************************************************************************
+ * 
+ * Copyright (c) 2021, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc. 
+ * and/or its licensors, any reproduction, modification, use or disclosure of 
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited. 
+ * 
+ *****************************************************************************/
+ 
 #ifndef  _ATP_URSP_STRUCT_H
 #define  _ATP_URSP_STRUCT_H
 
 #include "kal_general_types.h"
 #include "kal_public_defs.h"
-#include "mcd_l3_inc_struct.h"
+#include "d2_public_defs.h"
 #include "atcmd_struct.h"
 #include "ursp_public_defs.h"
 #include "ursp_struct.h"
@@ -40,6 +53,7 @@
     kal_char dnn[URSP_DNN_SIZE];    // by default a NULL string
     pdp_addr_type_enum pdx_type;    // by default NULL_PDP_ADDR_TYPE in ps_public_enum_public.h
     atcmd_Access_type_enum access_type;    // by default ATCMD_ACCESS_TYPE_MAX
+    atcmd_request_type_enum multi_access;    // by default ATCMD_REQUEST_TYPE_MAX
 }ursp_at_ue_local_conf_struct;
 typedef ursp_at_ue_local_conf_struct ursp_at_est_req_param_struct;
 
diff --git a/mcu/protocol/interface/ddm/d2_public_defs.h b/mcu/protocol/interface/ddm/d2_public_defs.h
old mode 100755
new mode 100644
index 2358226..d1d61e6
--- a/mcu/protocol/interface/ddm/d2_public_defs.h
+++ b/mcu/protocol/interface/ddm/d2_public_defs.h
@@ -1,3 +1,16 @@
+/*****************************************************************************
+ * 
+ * Copyright (c) 2019, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc. 
+ * and/or its licensors, any reproduction, modification, use or disclosure of 
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited. 
+ * 
+ *****************************************************************************/
+ 
 #ifndef __D2_PUBLIC_DEFS_H__
 #define __D2_PUBLIC_DEFS_H__
 
@@ -32,6 +45,31 @@
     D2_EVENT_MAX = 0x7FFFFFFF
 }d2_event_enum;
 
+typedef enum
+{
+    D2_PARAM_PERM_IGNORE = 0,    // D2 should ignore the corresponding paramameters
+    D2_PARAM_PERM_READ_ONLY,    // D2 should not modify the corresponding paramameters
+    D2_PARAM_PERM_MERGEABLE,    // D2 may fill in values for some absent paramameters
+    D2_PARAM_PERM_OVERWRITABLE,    // D2 may overwrite some given paramameters
+    D2_PARAM_PERM_MAX = 0x7FFFFFFF
+}d2_param_perm_enum;
+
+#ifdef __L1_STANDALONE__
+#ifndef _MCD_L3_INC_STRUCT_H
+typedef struct
+{
+    kal_uint8 mcc1;
+    kal_uint8 mcc2;
+    kal_uint8 mcc3;
+    kal_uint8 mnc1;
+    kal_uint8 mnc2;
+    kal_uint8 mnc3;
+}plmn_id_struct;
+#endif
+#else
+#include "mcd_l3_inc_struct.h"
+#endif
+
 // Macros
 // N/A
 
diff --git a/mcu/protocol/interface/ddm/d2apn_public_api.h b/mcu/protocol/interface/ddm/d2apn_public_api.h
old mode 100755
new mode 100644
index 162e311..32e5247
--- a/mcu/protocol/interface/ddm/d2apn_public_api.h
+++ b/mcu/protocol/interface/ddm/d2apn_public_api.h
@@ -1,26 +1,37 @@
+/*****************************************************************************
+ * 
+ * Copyright (c) 2020, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc. 
+ * and/or its licensors, any reproduction, modification, use or disclosure of 
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited. 
+ * 
+ *****************************************************************************/
+ 
 #ifndef __D2APN_PUBLIC_API_H__
 #define __D2APN_PUBLIC_API_H__
 
 #include "kal_public_defs.h"
+#include "d2apn_public_defs.h"
+#include "d2apn_struct.h"
 /*
 #include "ddm_utility.h"
 #include "custom_d2_config.h"
-#include "d2apn_public_defs.h"
-#include "d2apn_struct.h"
 */
 
 // Compiler flag, NEED_TO_BE_NOTICED, set by the compiler
 // N/A
 
 // Type definition
-/*
 typedef enum
 {
     D2APN_API_RES_FAIL = D2APN_RES_FAIL,
     D2APN_API_RES_NONE = D2APN_RES_NONE, 
     D2APN_API_RES_SUCC = D2APN_RES_SUCC,
 }d2apn_api_res_enum;
-*/
 
 // Macros
 // N/A
@@ -31,9 +42,8 @@
 extern kal_uint32 d2apn_get_max_apn_idx_by_owner (kal_uint8 ps_id, module_type owner);
 */
 extern module_type d2apn_get_owner_by_apn_idx (kal_uint8 ps_id, kal_uint32 apn_idx);
-/*extern d2apn_api_res_enum d2apn_init_set_apns_info_req (kal_uint8 ps_id, module_type owner, d2apn_set_apns_info_req_struct *req_ptr);
+extern d2apn_api_res_enum d2apn_init_set_apns_info_req (kal_uint8 ps_id, module_type owner, d2apn_set_apns_info_req_struct *req_ptr);
 extern d2apn_api_res_enum d2apn_init_set_apns_req (kal_uint8 ps_id, module_type owner, d2apn_set_apns_req_struct *req_ptr);
-*/
 
 /*******************************************************************************
  * ILM-equivalent API                                                          *
@@ -68,4 +78,4 @@
 // N/A
 */
 
-#endif
+#endif    /* D2APN_PUBLIC_API_H */
diff --git a/mcu/protocol/interface/ddm/d2apn_public_defs.h b/mcu/protocol/interface/ddm/d2apn_public_defs.h
old mode 100755
new mode 100644
index 8d2b8e0..a6c5a1a
--- a/mcu/protocol/interface/ddm/d2apn_public_defs.h
+++ b/mcu/protocol/interface/ddm/d2apn_public_defs.h
@@ -1,84 +1,97 @@
+/*****************************************************************************
+ *
+ * Copyright (c) 2019, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc.
+ * and/or its licensors, any reproduction, modification, use or disclosure of
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited.
+ *
+ *****************************************************************************/
+
 #ifndef __D2APN_PUBLIC_DEFS_H__
 #define __D2APN_PUBLIC_DEFS_H__
 
 // Type denifitions
 typedef enum
 {
-    D2APN_RES_FAIL = -1, 
-    D2APN_RES_NONE, 
-    D2APN_RES_SUCC, 
+    D2APN_RES_FAIL = -1,
+    D2APN_RES_NONE,
+    D2APN_RES_SUCC,
     D2APN_RES_MAX = 0x7FFFFFFF
 }d2apn_res_enum;
 
 // => MSG_ID_D2APN_SET_APNS_INFO_REQ
 typedef enum
 {
-    D2APN_SET_APNS_INFO_REQ_TYPE_NONE = 0x00, 
-    D2APN_SET_APNS_INFO_REQ_TYPE_WR_THRU, 
-    D2APN_SET_APNS_INFO_REQ_TYPE_CACHE, 
-    D2APN_SET_APNS_INFO_REQ_TYPE_WR_BACK, 
+    D2APN_SET_APNS_INFO_REQ_TYPE_NONE = 0x00,
+    D2APN_SET_APNS_INFO_REQ_TYPE_WR_THRU,
+    D2APN_SET_APNS_INFO_REQ_TYPE_CACHE,
+    D2APN_SET_APNS_INFO_REQ_TYPE_WR_BACK,
     D2APN_SET_APNS_INFO_REQ_TYPE_MAX = 0x7F
 }d2apn_set_apns_info_req_type_enum;
 
 // => MSG_ID_D2APN_SET_APNS_REQ
 typedef enum
 {
-    D2APN_SET_APNS_REQ_TYPE_NONE = 0x00, 
-    D2APN_SET_APNS_REQ_TYPE_WR_THRU, 
-    D2APN_SET_APNS_REQ_TYPE_CACHE, 
-    D2APN_SET_APNS_REQ_TYPE_WR_BACK, 
+    D2APN_SET_APNS_REQ_TYPE_NONE = 0x00,
+    D2APN_SET_APNS_REQ_TYPE_WR_THRU,
+    D2APN_SET_APNS_REQ_TYPE_CACHE,
+    D2APN_SET_APNS_REQ_TYPE_WR_BACK,
     D2APN_SET_APNS_REQ_TYPE_MAX = 0x7F
 }d2apn_set_apns_req_type_enum;
 
 // => MSG_ID_D2APN_RESET_APNS_INFO_REQ
 typedef enum
 {
-    D2APN_RESET_APNS_INFO_REQ_TYPE_NONE = 0x00, 
-    D2APN_RESET_APNS_INFO_REQ_TYPE_WR_THRU, 
-    D2APN_RESET_APNS_INFO_REQ_TYPE_CACHE, 
-    D2APN_RESET_APNS_INFO_REQ_TYPE_WR_BACK, 
+    D2APN_RESET_APNS_INFO_REQ_TYPE_NONE = 0x00,
+    D2APN_RESET_APNS_INFO_REQ_TYPE_WR_THRU,
+    D2APN_RESET_APNS_INFO_REQ_TYPE_CACHE,
+    D2APN_RESET_APNS_INFO_REQ_TYPE_WR_BACK,
     D2APN_RESET_APNS_INFO_REQ_TYPE_MAX = 0x7F
 }d2apn_reset_apns_info_req_type_enum;
 
 // => MSG_ID_D2APN_RESET_APNS_REQ
 typedef enum
 {
-    D2APN_RESET_APNS_REQ_TYPE_NONE = 0x00, 
-    D2APN_RESET_APNS_REQ_TYPE_WR_THRU, 
-    D2APN_RESET_APNS_REQ_TYPE_CACHE, 
-    D2APN_RESET_APNS_REQ_TYPE_WR_BACK, 
-    D2APN_RESET_APNS_REQ_TYPE_WR_THRU_ALL,  
-    D2APN_RESET_APNS_REQ_TYPE_CACHE_ALL, 
-    D2APN_RESET_APNS_REQ_TYPE_WR_BACK_ALL, 
+    D2APN_RESET_APNS_REQ_TYPE_NONE = 0x00,
+    D2APN_RESET_APNS_REQ_TYPE_WR_THRU,
+    D2APN_RESET_APNS_REQ_TYPE_CACHE,
+    D2APN_RESET_APNS_REQ_TYPE_WR_BACK,
+    D2APN_RESET_APNS_REQ_TYPE_WR_THRU_ALL,
+    D2APN_RESET_APNS_REQ_TYPE_CACHE_ALL,
+    D2APN_RESET_APNS_REQ_TYPE_WR_BACK_ALL,
     D2APN_RESET_APNS_REQ_TYPE_MAX = 0x7F
 }d2apn_reset_apns_req_type_enum;
 
 // => MSG_ID_D2APN_GET_APNS_INFO_REQ
 typedef enum
 {
-    D2APN_GET_APNS_INFO_REQ_TYPE_NONE = 0x00, 
-    D2APN_GET_APNS_INFO_REQ_TYPE_CACHE, 
+    D2APN_GET_APNS_INFO_REQ_TYPE_NONE = 0x00,
+    D2APN_GET_APNS_INFO_REQ_TYPE_CACHE,
     D2APN_GET_APNS_INFO_REQ_TYPE_MAX = 0x7F
 }d2apn_get_apns_info_req_type_enum;
 
 // => MSG_ID_D2APN_GET_APNS_REQ
 typedef enum
 {
-    D2APN_GET_APNS_REQ_TYPE_NONE = 0x00, 
-    D2APN_GET_APNS_REQ_TYPE_APN_IDX, 
-    D2APN_GET_APNS_REQ_TYPE_OWNER, 
-    D2APN_GET_APNS_REQ_TYPE_APN, 
-    D2APN_GET_APNS_REQ_TYPE_CACHE, 
-    D2APN_GET_APNS_REQ_TYPE_CACHE_APN_IDX = D2APN_GET_APNS_REQ_TYPE_CACHE, 
-    D2APN_GET_APNS_REQ_TYPE_CACHE_OWNER, 
-    D2APN_GET_APNS_REQ_TYPE_CACHE_APN, 
+    D2APN_GET_APNS_REQ_TYPE_NONE = 0x00,
+    D2APN_GET_APNS_REQ_TYPE_APN_IDX,
+    D2APN_GET_APNS_REQ_TYPE_OWNER,
+    D2APN_GET_APNS_REQ_TYPE_APN,
+    D2APN_GET_APNS_REQ_TYPE_CACHE,
+    D2APN_GET_APNS_REQ_TYPE_CACHE_APN_IDX = D2APN_GET_APNS_REQ_TYPE_CACHE,
+    D2APN_GET_APNS_REQ_TYPE_CACHE_OWNER,
+    D2APN_GET_APNS_REQ_TYPE_CACHE_APN,
     D2APN_GET_APNS_REQ_TYPE_MAX = 0x7F
 }d2apn_get_apns_req_type_enum;
 
 // => MSG_ID_D2APN_APNS_CHG_IND
 typedef enum
 {
-    D2APN_APNS_CHG_IND_TYPE_NONE = 0x00, 
+    D2APN_APNS_CHG_IND_TYPE_NONE = 0x00,
     D2APN_APNS_CHG_IND_TYPE_INFO,    // when D2APN_SET_APNS_INFO_REQ_TYPE_WR_THRU and D2APN_RESET_APNS_INFO_REQ_TYPE_WR_THRU
     D2APN_APNS_CHG_IND_TYPE_APN_IDX,    // when D2APN_SET_APNS_REQ_TYPE_WR_THRU and D2APN_RESET_APNS_REQ_TYPE_WR_THRU
     D2APN_APNS_CHG_IND_TYPE_OWNER,    // when xxx_WR_BACK_xxx and D2APN_RESET_APNS_REQ_TYPE_WR_THRU_ALL
diff --git a/mcu/protocol/interface/ddm/d2apn_struct.h b/mcu/protocol/interface/ddm/d2apn_struct.h
old mode 100755
new mode 100644
index 6a33b37..fa18454
--- a/mcu/protocol/interface/ddm/d2apn_struct.h
+++ b/mcu/protocol/interface/ddm/d2apn_struct.h
@@ -1,3 +1,16 @@
+/*****************************************************************************
+ * 
+ * Copyright (c) 2019, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc. 
+ * and/or its licensors, any reproduction, modification, use or disclosure of 
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited. 
+ * 
+ *****************************************************************************/
+ 
 #ifndef  __D2APN_STRUCT_H__
 #define  __D2APN_STRUCT_H__
 
@@ -5,7 +18,7 @@
 #include "kal_public_defs.h"
 #include "atcmd_enum.h"
 #include "atcmd_struct.h"
-#include "mcd_l3_inc_struct.h"
+#include "d2_public_defs.h"
 #include "ddm_enum.h"
 #include "d2apn_public_defs.h"
 
@@ -167,7 +180,7 @@
             kal_uint32 apn_idx;
         }apn_idx;
 
-        // querying a group of APN setting by owner 
+        // querying a group of APN setting by owner
         struct
         {
             module_type owner;
@@ -316,7 +329,7 @@
 
 
 /*******************************************************************************
-* User to D2APN RSP                                                             *
+* User to D2APN RSP                                                            *
 *******************************************************************************/
 
 // N/A
diff --git a/mcu/protocol/interface/ddm/d2cm_public_defs.h b/mcu/protocol/interface/ddm/d2cm_public_defs.h
old mode 100755
new mode 100644
index 12e949f..0448596
--- a/mcu/protocol/interface/ddm/d2cm_public_defs.h
+++ b/mcu/protocol/interface/ddm/d2cm_public_defs.h
@@ -33,34 +33,6 @@
 *
 *****************************************************************************/
 
-/*****************************************************************************
- *
- * Filename:
- * ---------
- * d2cm_public_defs.h
- *
- * Project:
- * --------
- * 
- *
- * Description:
- * ------------
- *   
- *
- * Author:
- * -------
- * 
- *
- *============================================================================
- *             HISTORY
- * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
- *------------------------------------------------------------------------------
- * removed!
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
 
 #ifndef __D2CM_PUBLIC_DEFS_H__
 #define __D2CM_PUBLIC_DEFS_H__
@@ -217,7 +189,7 @@
 // APIs, NEED_TO_BE_NOTICED, uint32-based, just a quick solution, To-Do later
 #define d2cm_sign_ext(x, shift, mask, len)    (((x) & (1 << ((len) - 1))) ? (x) | ~((mask) >> (shift)) : (x))
 #define d2cm_reset_normal_res(res)    ((res) &= ~D2CM_NORMAL_RES_MASK)
-#define d2cm_set_normal_res(res, x)    ((res) = ((res) & ~D2CM_NORMAL_RES_MASK) | (((x) << D2CM_NORMAL_RES_SHIFT) & D2CM_NORMAL_RES_MASK))
+#define d2cm_set_normal_res(res, x)    ((res) = ((res) & ~D2CM_NORMAL_RES_MASK) | (kal_int32)(((kal_uint32)(x) << D2CM_NORMAL_RES_SHIFT) & D2CM_NORMAL_RES_MASK))
 #define d2cm_get_normal_res(res)    (d2cm_sign_ext(((res) & D2CM_NORMAL_RES_MASK) >> D2CM_NORMAL_RES_SHIFT, D2CM_NORMAL_RES_SHIFT, D2CM_NORMAL_RES_MASK, D2CM_NORMAL_RES_LEN))
 #define d2cm_reset_nw_cause(res)    ((res) &= ~D2CM_NW_CAUSE_MASK)
 #define d2cm_set_nw_cause(res, x)    ((res) = ((res) & ~D2CM_NW_CAUSE_MASK) | (((x) << D2CM_NW_CAUSE_SHIFT) & D2CM_NW_CAUSE_MASK))
diff --git a/mcu/protocol/interface/ddm/d2cm_struct.h b/mcu/protocol/interface/ddm/d2cm_struct.h
old mode 100755
new mode 100644
index 7a864c0..df70524
--- a/mcu/protocol/interface/ddm/d2cm_struct.h
+++ b/mcu/protocol/interface/ddm/d2cm_struct.h
@@ -39,12 +39,15 @@
 #include "kal_general_types.h"
 #include "kal_public_defs.h"
 #include "ps_public_enum.h"
+#include "ps_public_struct.h"
 #include "pdn_public_defs.h"
+#include "atp_d2at_struct.h"
 #include "custom_d2_config.h"
 #include "d2pm_ddm_struct.h"    // NEED_TO_BE_NOTICED, to review it
 #include "d2pm_d2rm_struct.h"    // NEED_TO_BE_NOTICED, to review it
 #include "ursp_public_defs.h"
 #include "d2rm_public_defs.h"
+#include "d2_public_defs.h"
 #include "n3epc_public_defs.h"
 #include "iwlan_public_defs.h"
 
@@ -235,6 +238,7 @@
         kal_uint8 dnn[URSP_TDC_LEN_DNN];    // APN in TS 23.003
         kal_uint8 pdu_session_type;
         kal_uint8 pref_access_type;
+        kal_bool multi_access_pref;
     }ue_local_conf;
     kal_uint32 ursp_eval_flag;
 
diff --git a/mcu/protocol/interface/ddm/d2pm_public_defs.h b/mcu/protocol/interface/ddm/d2pm_public_defs.h
old mode 100755
new mode 100644
index e2eb52b..0a2e094
--- a/mcu/protocol/interface/ddm/d2pm_public_defs.h
+++ b/mcu/protocol/interface/ddm/d2pm_public_defs.h
@@ -33,35 +33,6 @@
 *
 *****************************************************************************/
 
-/*****************************************************************************
- *
- * Filename:
- * ---------
- * d2pm_public_defs.h
- *
- * Project:
- * --------
- * 
- *
- * Description:
- * ------------
- *   
- *
- * Author:
- * -------
- * 
- *
- *============================================================================
- *             HISTORY
- * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
- *------------------------------------------------------------------------------
- * removed!
- * removed!
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
 
 #ifndef __D2PM_PUBLIC_DEFS_H__
 #define __D2PM_PUBLIC_DEFS_H__
@@ -104,6 +75,10 @@
 #define D2PM_CID_BITMAP_SIZE (((D2PM_MAX_CID - D2PM_MIN_CID) >> 3) + 1)
 #define D2PM_INVAL_APN_IDX    (-1)
 #define D2PM_NW_ASSIGNED_APN_IDX    (0x0001FE00)
+// => Internal
+#define d2pm_macro_cat(x, y)    x ## y
+#define d2pm_macro_postfix(x, postfix)    d2pm_macro_cat(x, postfix)
+#define d2pm_macro_var(var)    d2pm_macro_postfix(var, __LINE__)
 
 // Functions
 // => Fundamental prototype
@@ -113,6 +88,11 @@
                                                        (*(((kal_uint8*)(bitmap_ptr)) + ((bit_num) >> 3)) &= ~(1 << ((bit_num) & 7)), (bitmap_ptr)))
 #define vl_bitmap_get(bitmap_ptr, size, bit_num)    ((size) < ((bit_num) >> 3) + 1 ? 0 != 0 : \
                                                      ((*(((kal_uint8*)(bitmap_ptr)) + ((bit_num) >> 3)) & (1 << ((bit_num) & 7))) == 0 ? 0 != 0 : 0 == 0))
+#define vl_bitmap_is_empty(bitmap_ptr, size)    ({ \
+										        size_t d2pm_macro_var(i); \
+										        for(d2pm_macro_var(i) = 0; d2pm_macro_var(i) < (size) && *((uint8_t*)(bitmap_ptr) + d2pm_macro_var(i)) == 0; d2pm_macro_var(i)++); \
+										        d2pm_macro_var(i) >= (size) ? true : false; \
+										        })
 #define cid_bitmap_set(bitmap_ptr, size, cid)    ((cid) < D2PM_MIN_CID || (cid) > D2PM_MAX_CID || (size) < (((cid) - D2PM_MIN_CID) >> 3) + 1 ? NULL : \
                                                   (vl_bitmap_set((bitmap_ptr), (size), (cid) - D2PM_MIN_CID)))
 #define cid_bitmap_reset(bitmap_ptr, size, cid)    ((cid) < D2PM_MIN_CID || (cid) > D2PM_MAX_CID || (size) < (((cid) - D2PM_MIN_CID) >> 3) + 1 ? NULL : \
diff --git a/mcu/protocol/interface/ddm/ursp_public_defs.h b/mcu/protocol/interface/ddm/ursp_public_defs.h
old mode 100755
new mode 100644
index ef63ef3..94b35f9
--- a/mcu/protocol/interface/ddm/ursp_public_defs.h
+++ b/mcu/protocol/interface/ddm/ursp_public_defs.h
@@ -1,3 +1,16 @@
+/*****************************************************************************
+ * 
+ * Copyright (c) 2019, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc. 
+ * and/or its licensors, any reproduction, modification, use or disclosure of 
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited. 
+ * 
+ *****************************************************************************/
+ 
 #ifndef __URSP_PUBLIC_DEFS_H__
 #define __URSP_PUBLIC_DEFS_H__
 
@@ -35,38 +48,6 @@
 }ursp_reeval_event_enum;
 
 // => Internal
-typedef enum {
-    TD_TYPE_MATACH_ALL = 0x00,
-    TD_TYPE_OS_APP_ID = 0x08,
-    TD_TYPE_IPV4_REMOTE_ADDR = 0x10,
-    TD_TYPE_IPV6_REMOTE_ADDR = 0x21,
-    TD_TYPE_PROTOCOL_ID = 0x30,
-    TD_TYPE_SINGLE_REMOTE_PORT = 0x50,
-    TD_TYPE_REMOTE_PORT_RANGE = 0x51,
-    TD_TYPE_SPI = 0x60,
-    TD_TYPE_TOS = 0x70,
-    TD_TYPE_FLOW_LABEL = 0x80,
-    TD_TYPE_DEST_MAC = 0x81,
-    TD_TYPE_C_TAG_VID = 0x83,
-    TD_TYPE_S_TAG_VID = 0x84,
-    TD_TYPE_C_TAG_PCP = 0x85,
-    TD_TYPE_S_TAG_PCP = 0x86,
-    TD_TYPE_ETHER_TYPE = 0x87,
-    TD_TYPE_DNN = 0x88,
-    TD_TYPE_CONN_CAPA = 0x90,
-    TD_TYPE_DEST_FQDN = 0x91,
-    TD_TYPE_APP_ID = 0xa0,
-} traffic_descriptor_component_type_enum;
-
-typedef enum {
-    RS_TYPE_SSC = 0x01,
-    RS_TYPE_SNSSAI = 0x02,
-    RS_TYPE_DNN = 0x04,
-    RS_TYPE_PDU_SESSION_TYPE = 0x08,
-    RS_TYPE_PREFER_ACCESS_TYPE = 0x10,
-    RS_TYPE_NON_SEAMLESS = 0x20,
-} route_selection_descriptor_component_type_enum;
-
 #if 0
 /* under construction !*/
 /* under construction !*/
@@ -77,12 +58,34 @@
 /* under construction !*/
 /* under construction !*/
 /* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
 #endif
 
 // Macro
 #define URSP_CID_BITMAP_SIZE    (D2PM_CID_BITMAP_SIZE)
-#define URSP_UE_POLICY_MAX_RULE_LIST_SIZE    (8)    // 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices
-#define URSP_RULE_MAX_ROUTE_SEL_DESC_LIST_SIZE    (8)    // 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices
+#define URSP_UE_POLICY_MAX_RULE_LIST_SIZE    (16)    // NEED_TO_BE_NOTICED, should be configured by MCF, 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices, however, changed to sixteen due to ALPS07656683
+#define URSP_RULE_MAX_ROUTE_SEL_DESC_LIST_SIZE    (16)    // NEED_TO_BE_NOTICED, should be configured by MCF, 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices, however, changed to sizteen due to ALPS07656683
 // => LADN
 #define URSP_MAX_LADN_DNN_NUM    (8)
 #define URSP_LADN_DNN_DELIM    "\x1F"
@@ -105,7 +108,7 @@
 #define URSP_TDC_TYPE_IPV6_NEXT_HDR    (0x30)
 #define URSP_TDC_TYPE_SINGLE_REMOTE_PORT    (0x50)
 #define URSP_TDC_TYPE_REMOTE_PORT_RANGE    (0x51)
-#define URSP_TDC_TYPE_IP_3_TUPLE    (0x52)    // max{(IPV4_REMOTE_ADDR, IPV4_REMOTE_MASK), (IPV6_REMOTE_ADDR, IPV6_PREFIX_LEN)} + IPV4_PROT_ID/IPV6_NEXT_HDR  + max{SINGLE_REMOTE_PORT, (PORT_RANGE_LOW_LIMIT, PORT_RANGE_HIGH_LIMIT)}
+#define URSP_TDC_TYPE_IP_3_TUPLE    (0x52)
 #define URSP_TDC_TYPE_SEC_PARAM_IDX    (0x60)
 #define URSP_TDC_TYPE_TYPE_OF_SVC    (0x70)
 #define URSP_TDC_TYPE_TFC_CLASS    (0x70)
@@ -165,6 +168,7 @@
 #define URSP_RSDC_LEN_DNN    (URSP_DNN_SIZE)
 #define URSP_RSDC_LEN_PDU_SESSION_TYPE    (1)
 #define URSP_RSDC_LEN_PREF_ACCESS_TYPE    (1)
+#define URSP_RSDC_LEN_MULTI_ACCESS_PREF    (0)
 #define URSP_RSDC_LEN_NON_SEAMLESS_NON_3GPP_OFFLOAD_IND    (0)
 
 // APIs
diff --git a/mcu/protocol/interface/ddm/ursp_struct.h b/mcu/protocol/interface/ddm/ursp_struct.h
old mode 100755
new mode 100644
index c97db98..b29478c
--- a/mcu/protocol/interface/ddm/ursp_struct.h
+++ b/mcu/protocol/interface/ddm/ursp_struct.h
@@ -1,9 +1,22 @@
+/*****************************************************************************
+ * 
+ * Copyright (c) 2019, MediaTek Inc. All rights reserved.
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Except as
+ * otherwise provided in  the applicable licensing terms with MediaTek Inc. 
+ * and/or its licensors, any reproduction, modification, use or disclosure of 
+ * MediaTek Software, and information contained herein, in whole or in part,
+ * shall be strictly prohibited. 
+ * 
+ *****************************************************************************/
+ 
 #ifndef  __URSP_STRUCT_H__
 #define  __URSP_STRUCT_H__
 
 #include "kal_general_types.h"
 #include "kal_public_defs.h"
-#include "mcd_l3_inc_struct.h"
+#include "d2_public_defs.h"
 #include "atcmd_enum.h"
 #include "ursp_public_defs.h"
 
@@ -65,20 +78,6 @@
     kal_uint16 min_remote_port;
     kal_uint16 max_remote_port;
 }tdc_81_t;
-typedef struct tdc_82
-{
-    union
-    {
-        tdc_16_t ipv4;
-        tdc_33_t ipv6;
-    }remote_addr;
-    tdc_48_t prot_id_next_hdr;
-    union
-    {
-        kal_uint16 single;
-        tdc_81_t range;
-    }remote_port;
-}tdc_82_t;
 typedef struct
 {
     union
@@ -129,6 +128,7 @@
     kal_uint8 dnn[URSP_TDC_LEN_DNN];    // APN in TS 23.003
     kal_uint8 pdu_session_type;
     kal_uint8 pref_access_type;
+    kal_bool multi_access_pref;
 }ursp_route_sel_desc_struct;
 
 typedef struct
@@ -148,6 +148,7 @@
     kal_uint8 dnn[URSP_TDC_LEN_DNN];    // APN in TS 23.003
     kal_uint8 pdu_session_type;
     kal_uint8 pref_access_type;
+    kal_bool multi_access_pref;
 }ursp_ue_local_conf_struct;
 typedef ursp_ue_local_conf_struct ursp_est_req_param_struct;
 
@@ -412,7 +413,8 @@
     kal_uint8 rsd_dnn[URSP_RSDC_LEN_DNN];
     kal_uint8 pdu_session_type;
     kal_uint8 pref_access_type;
-    kal_bool is_nsn3_offload;    
+    kal_bool is_multi_access_pref;
+    kal_bool is_nsn3_offload;
 }ursp_rule_tbl_dump_ind_struct;
 
 
diff --git a/mcu/protocol/interface/general/5g/vgsm_msg_unpack.h b/mcu/protocol/interface/general/5g/vgsm_msg_unpack.h
old mode 100755
new mode 100644
index a256cd5..a9f8531
--- a/mcu/protocol/interface/general/5g/vgsm_msg_unpack.h
+++ b/mcu/protocol/interface/general/5g/vgsm_msg_unpack.h
@@ -383,6 +383,9 @@
     kal_uint16 max_num_of_supported_pf;
     kal_uint8  always_on_pdu_session_reqP;
     vgsm_mcddll_always_on_pdu_session_requested_struct always_on_pdu_session_req;
+	kal_uint8 sm_pdu_dn_req_containerP;
+	kal_uint8 no_sm_pdu_dn_req_container;
+	kal_uint8 *sm_pdu_dn_req_container;
     kal_uint8 epcoP;
     kal_uint16 no_epco;
     kal_uint8 epco[D_NO_EPCO];
diff --git a/mcu/protocol/interface/general/gmss_nwsel_struct.h b/mcu/protocol/interface/general/gmss_nwsel_struct.h
old mode 100755
new mode 100644
index b77a0ef..daf381f
--- a/mcu/protocol/interface/general/gmss_nwsel_struct.h
+++ b/mcu/protocol/interface/general/gmss_nwsel_struct.h
@@ -1104,6 +1104,9 @@
     /**< indicate the current cell info trx id, used by VDM/GMSS/NWSEL to distinguish the emergency call cell used  */
     kal_uint16               camping_info_id;
 
+    /**< indicate the 3GPP current cell id  */    
+    kal_uint64               cell_id;
+       
 } gmss_nwsel_camping_info_ind_struct;
 
 // new primitive for AS IRAT stage 1 success
diff --git a/mcu/protocol/interface/general/vdm_gmss_struct.h b/mcu/protocol/interface/general/vdm_gmss_struct.h
old mode 100755
new mode 100644
index 63705de..202bd49
--- a/mcu/protocol/interface/general/vdm_gmss_struct.h
+++ b/mcu/protocol/interface/general/vdm_gmss_struct.h
@@ -94,7 +94,8 @@
     kal_uint16          channel;  /* used for rat is 3GPP2 only */
     kal_bool            is_registered; /*indicate if the record is registered or not*/
     kal_bool            is_ims_emergency_support; /*indicate if the cell support ims emergency call, only applicable when LTE cell*/
-    kal_uint16           camping_info_id; /*indicate the camping info id, only used for 3GPP */    
+    kal_uint16          camping_info_id; /*indicate the camping info id, only used for 3GPP */  
+    kal_uint64          cell_id;  /* used for rat is 3GPP only */
 } vdm_gmss_camping_info_ind_struct;
 
 typedef struct
diff --git a/mcu/protocol/interface/ims/atp_d2at_struct.h b/mcu/protocol/interface/ims/atp_d2at_struct.h
old mode 100755
new mode 100644
index 4c352ed..d086667
--- a/mcu/protocol/interface/ims/atp_d2at_struct.h
+++ b/mcu/protocol/interface/ims/atp_d2at_struct.h
@@ -33,29 +33,6 @@
 *
 *****************************************************************************/
 
-/*******************************************************************************
- * Filename:
- * ---------
- *   atp_d2at_struct.h
- *
- * Project:
- * --------
- *   
- *
- * Description:
- * ------------
- *
- *
- * Author:
- * -------
- *  
- *   
- *
- * ==========================================================================
- * 	
- * 	.
- *
- ****************************************************************************/
 
 #ifndef  _ATP_D2AT_STRUCT_H
 #define  _ATP_D2AT_STRUCT_H
@@ -113,59 +90,8 @@
 /*******************************************************************************
 * Internal                                                                     *
 *******************************************************************************/
-#if 0
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-/* under construction !*/
-#endif
+// N/A
+
 /*******************************************************************************
 * ATP to DAST request and DAST to ATP confrim                                  *
 *******************************************************************************/
@@ -307,7 +233,7 @@
     kal_bool                                apn_idx_present;
     kal_int32                               apn_idx;
     kal_bool                                s_nssai_present;
-    at_s_nssai_struct                       s_nssai; 
+    at_s_nssai_struct                       s_nssai;
 } atp_d2at_enssai_req_struct;
 
 
@@ -355,19 +281,19 @@
     kal_bool                                Local_Addr_Ind_present;
     atcmd_Local_Addr_Ind_enum               Local_Addr_Ind;                                                     // integer type
     */
-    
+
 } atp_d2at_cgdcont_ind_struct1;
 
 
 
 //AT+CGDCONT CNF
 
-typedef struct {    
-    ATP_D2AT_CNF_LOCAL_PARA_HDR 
+typedef struct {
+    ATP_D2AT_CNF_LOCAL_PARA_HDR
 }atp_d2at_cgdcont_cnf_struct;
 
-typedef struct {    
-    ATP_D2AT_CNF_LOCAL_PARA_HDR 
+typedef struct {
+    ATP_D2AT_CNF_LOCAL_PARA_HDR
 }atp_d2at_cgauth_cnf_struct;
 
 /*******************/
@@ -380,7 +306,7 @@
     ATP_D2AT_REQ_LOCAL_PARA_HDR
 
     kal_uint32                              sim_id;
-    atcmd_state_enum                        state;  
+    atcmd_state_enum                        state;
     kal_uint8                               iccid[USERID_STRING_LEN];                                          // string type
 }atp_d2at_eapnlock_req_struct;
 
@@ -410,8 +336,8 @@
     at_s_nssai_struct                       S_NSSAI;                                                            // string type
     at_token_parse_result_enum              SSC_mode_parse_result;
     atcmd_SSC_mode_enum                     SSC_mode;                                                           // integer type
-    at_token_parse_result_enum              Access_type_parse_result; 
-    atcmd_Access_type_enum                  Access_type;                                                        // integer type 
+    at_token_parse_result_enum              Access_type_parse_result;
+    atcmd_Access_type_enum                  Access_type;                                                        // integer type
 } at_eapnset_UE_local_config_struct;
 */
 
@@ -423,13 +349,13 @@
     kal_uint32                              sim_id;
     kal_bool                                apn_present;
     kal_uint8                               apn[APN_STRING_LEN];                                                // string type
-    kal_bool                                cmd_present;                                                        
+    kal_bool                                cmd_present;
     kal_uint32                              cmd;                                                                // integer type
 
     union
     {
-    	kal_uint8                           apn_parameter[APN_PARAMETER_STRING_LEN]; 
-        at_eapnset_up_struct                user_passwd;       
+    	kal_uint8                           apn_parameter[APN_PARAMETER_STRING_LEN];
+        at_eapnset_up_struct                user_passwd;
         at_eapnset_UE_local_config_struct   UE_local_config;
     } param;
 }atp_d2at_eapnset_req_struct;
@@ -735,7 +661,7 @@
     ATP_D2AT_REQ_LOCAL_PARA_HDR
 
     at_token_parse_result_enum cid_parse_result;
-    kal_uint32 cid; 
+    kal_uint32 cid;
 }atp_d2at_cgcontrdp_req_struct;
 
 typedef struct
@@ -754,7 +680,7 @@
 
 
 // AT+ESIMMAP, NEED_TO_BE_NOTICED, monitoring only
-typedef struct 
+typedef struct
 {
     ATP_D2AT_REQ_LOCAL_PARA_HDR
 
@@ -764,7 +690,7 @@
 
 
 // AT+EPSMAP, NEED_TO_BE_NOTICED, monitoring only
-typedef struct 
+typedef struct
 {
     ATP_D2AT_REQ_LOCAL_PARA_HDR
 
@@ -830,7 +756,7 @@
                     kal_uint32                      pdp_type;
                     kal_int32                       if_id;
                     kal_uint32                      ap_if_status;
-                    kal_uint32                      md_if_status;              
+                    kal_uint32                      md_if_status;
                     kal_uint32                      usr_list;
                     kal_uint32                      flag;
                 }deact;
@@ -869,7 +795,7 @@
 } atp_d2at_eif_addr_type_enum;
 
 typedef struct {
-    kal_uint32                              type; 
+    kal_uint32                              type;
     kal_uint32                              num;
     kal_uint8                               v4[4];
     kal_uint8                               v6[16];
@@ -911,7 +837,7 @@
 typedef struct {
     ATP_D2AT_REQ_LOCAL_PARA_HDR
 
-    atcmd_state_enum                        state;  
+    atcmd_state_enum                        state;
     kal_uint8                               apn[APN_STRING_LEN];
     kal_uint8                               type[APN_TYPE_LIST_STRING_LEN];
 } atp_d2at_eaid_req_struct;
@@ -1027,7 +953,7 @@
 typedef struct {
     ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR
 
-    atcmd_state_enum                        state;  
+    atcmd_state_enum                        state;
 } atp_d2at_l4_cmd_cgatt_ind_struct;
 //AT+CGATT RSP
 typedef struct {
@@ -1053,7 +979,7 @@
 //+ICCID RSP
 typedef struct {
     ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR
-    kal_uint8   iccid[20];  
+    kal_uint8   iccid[20];
 } atp_d2at_l4_cmd_iccid_rsp_struct;
 
 //AT+EGREA IND
@@ -1125,7 +1051,7 @@
     kal_uint8                           edretry;
     atp_cgerep_config_context_struct    cgerep;
     atp_cgpiaf_config_context_struct    cgpiaf;
-} atp_d2at_report_mode_struct;  
+} atp_d2at_report_mode_struct;
 
 typedef struct
 {
diff --git a/mcu/protocol/interface/ims/d2pm_d2rm_struct.h b/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
old mode 100755
new mode 100644
index 01264e8..2ca1076
--- a/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
+++ b/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
@@ -186,10 +186,7 @@
 
     /* common part */
     kal_uint32 cid;
-
-    /* private part */
-    d2pm_ddm_mod_data_call_req_prv_struct d2pm_ddm_prv;
-    d2pm_n3epc_mod_data_call_req_prv_struct d2pm_n3epc_prv;
+    kal_uint32 src_id;
 }d2pm_d2rm_mod_data_call_req_struct;
 
 
@@ -459,13 +456,11 @@
 {
     LOCAL_PARA_HDR
 
-    /* common part */
-    d2pm_d2rm_res_enum res;
+    kal_uint32 cid;
+    kal_uint32 src_id;
 
-    /* private part */
-    d2pm_d2rm_mod_data_call_cnf_prv_struct d2pm_d2rm_prv;
-    d2pm_ddm_mod_data_call_cnf_prv_struct d2pm_ddm_prv;
-    d2pm_n3epc_mod_data_call_cnf_prv_struct d2pm_n3epc_prv;
+    d2pm_d2rm_res_enum res;
+    kal_uint16 ps_cause;
 }d2pm_d2rm_mod_data_call_cnf_struct;
 
 
@@ -671,7 +666,11 @@
     kal_uint8   is_succ;
     atcmd_request_type_enum   req_type;
     d2pm_d2rm_res_enum res;
-    
+
+    kal_int32 ps_errcause;
+    n3epc_pdn_reject_enum epdg_errcause;
+    n3epc_ike_error_notify_enum epdg_sub_errcause;
+
     ip_info_struct ip_info;    //for H.O end update    
     d2pm_d2rm_net_info_struct net_info;
     d2pm_d2rm_ims_info_struct ims_info;
diff --git a/mcu/protocol/interface/ims/imcb_imc_struct.h b/mcu/protocol/interface/ims/imcb_imc_struct.h
old mode 100755
new mode 100644
index 3fb5502..7cc3f5f
--- a/mcu/protocol/interface/ims/imcb_imc_struct.h
+++ b/mcu/protocol/interface/ims/imcb_imc_struct.h
@@ -2878,6 +2878,9 @@
     imcf_uint8  if_name[IMC_MAX_IF_NAME_LENGTH];
     imcf_uint8  acct_id;
     imcf_uint8  pad[3];
+    imcf_int32  ps_errcause;
+    imcf_int32  epdg_errcause; // n3epc_pdn_reject_enum
+    imcf_int32  epdg_sub_errcause; // n3epc_ike_error_notify_enum
 } imcb_imc_handover_end_req_struct;
 
 typedef struct {
diff --git a/mcu/protocol/interface/ims/ims_common_def.h b/mcu/protocol/interface/ims/ims_common_def.h
old mode 100755
new mode 100644
index ccf2d74..1b75933
--- a/mcu/protocol/interface/ims/ims_common_def.h
+++ b/mcu/protocol/interface/ims/ims_common_def.h
@@ -2443,6 +2443,12 @@
     IMCB_PCSCF_LIST_NO_CHANGE_AT_FIRST_PLACE
 } imcb_pcscf_list_change_enum;
 
+enum IMS_ADD_PANI_IN_ACK_e {
+    IMS_ADD_PANI_IN_ACK_NONE               = 0,
+    IMS_ADD_PANI_IN_ACK_ALL                = 1,
+    IMS_ADD_PANI_IN_ACK_ONLY_FOR_200OK     = 2
+};
+
 /******************************************************************************
  *                         Basic type definitions
  *****************************************************************************/
diff --git a/mcu/protocol/interface/ims/imsm_imcb_struct.h b/mcu/protocol/interface/ims/imsm_imcb_struct.h
old mode 100755
new mode 100644
index f4544b4..dd64dc0
--- a/mcu/protocol/interface/ims/imsm_imcb_struct.h
+++ b/mcu/protocol/interface/ims/imsm_imcb_struct.h
@@ -128,6 +128,7 @@
 #include "ps_public_enum.h"
 #include "sim_public_enum.h"
 #include "ims_common_def.h"
+#include "n3epc_public_defs.h"
 //#include "imcb_imc_struct.h"
 
 #define IMC_IPV4V6_ADDR_LEN   0x14
@@ -630,7 +631,9 @@
     imc_access_rat_type_enum     target_rat_type;
     imcf_uint8            is_success;
     imc_emergency_ind_enum emergency_indication;
-    imcf_uint8            pad[3];
+    kal_int32 ps_errcause;
+    n3epc_pdn_reject_enum epdg_errcause;
+    n3epc_ike_error_notify_enum epdg_sub_errcause;
 } imsm_imcb_handover_stop_notify_req_struct,
 imsa_imcb_handover_stop_notify_req_struct;
 
diff --git a/mcu/protocol/interface/ims/vdm_imc_struct.h b/mcu/protocol/interface/ims/vdm_imc_struct.h
old mode 100755
new mode 100644
index b88527a..9a110fc
--- a/mcu/protocol/interface/ims/vdm_imc_struct.h
+++ b/mcu/protocol/interface/ims/vdm_imc_struct.h
@@ -575,6 +575,11 @@
 typedef struct
 {
     LOCAL_PARA_HDR
+} vdm_imc_ims_emc_session_end_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
 } vdm_imc_ims_cc_mt_call_ring_ind_struct;
 
 typedef struct
diff --git a/mcu/protocol/interface/l4/l4c2rac_struct.h b/mcu/protocol/interface/l4/l4c2rac_struct.h
old mode 100755
new mode 100644
index 084b1b5..173e133
--- a/mcu/protocol/interface/l4/l4c2rac_struct.h
+++ b/mcu/protocol/interface/l4/l4c2rac_struct.h
@@ -888,5 +888,11 @@
 typedef rac_gmss_set_allowed_mcc_list_req_struct l4crac_set_allowed_mcc_list_req_struct;
 
 typedef rac_gmss_set_allowed_mcc_list_cnf_struct l4crac_set_allowed_mcc_list_cnf_struct;
+
+#ifdef __ECALL_SUPPORT__
+typedef rac_nas_sv_get_t10_status_req_struct l4crac_get_t10_status_req_struct;
+typedef rac_nas_sv_get_t10_status_cnf_struct l4crac_get_t10_status_cnf_struct;
+#endif
+
 #endif /* _L4C2RAC_STRUCT_H */
 
diff --git a/mcu/protocol/interface/l4/mm2mmi_struct.h b/mcu/protocol/interface/l4/mm2mmi_struct.h
old mode 100755
new mode 100644
index 61b756a..0bb5166
--- a/mcu/protocol/interface/l4/mm2mmi_struct.h
+++ b/mcu/protocol/interface/l4/mm2mmi_struct.h
@@ -311,7 +311,7 @@
     nw_time_zone_time_struct nw_time_zone_time;
     kal_bool lsa_idP;
     kal_uint8 lsa_id_len;
-    kal_uint8 lsa_id[3];
+    kal_uint8 lsa_id[MAX_LSA_LENGTH];
     kal_bool nw_day_light_saving_timeP;
     kal_uint8 nw_day_light_saving_time;
     /* MAUI_01664028, mtk02118: added for MMI to exactly know which PLMN the NITZ comes from  */
diff --git a/mcu/protocol/interface/l4/nas_sv_struct.h b/mcu/protocol/interface/l4/nas_sv_struct.h
old mode 100755
new mode 100644
index 9884921..aa9baec
--- a/mcu/protocol/interface/l4/nas_sv_struct.h
+++ b/mcu/protocol/interface/l4/nas_sv_struct.h
@@ -1582,6 +1582,8 @@
 typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_emm_broadcast_regn_result_ind_struct;
 typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_mm_broadcast_regn_result_ind_struct;
 typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_any_broadcast_regn_result_ind_struct;
+typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_vgmm_emc_rel_dereg_ind_struct;
+typedef nas_sv_xmm_broadcast_regn_result_struct nas_sv_emm_emc_rel_dereg_ind_struct;
 
 typedef struct
 {
@@ -1667,9 +1669,17 @@
 
 typedef nas_sv_vgsm_persistent_pdu_session_ind_struct nwsel_nas_sv_vgsm_persistent_pdu_session_ind_struct;
 
-typedef struct
+typedef struct 
 {
     LOCAL_PARA_HDR
+	kal_bool is_persistent_epsb_ctxt_exist;
+} nas_sv_emm_persistent_epsb_ctxt_ind_struct;
+
+typedef nas_sv_emm_persistent_epsb_ctxt_ind_struct nwsel_nas_sv_emm_persistent_epsb_ctxt_ind_struct;
+	
+typedef struct
+{
+	LOCAL_PARA_HDR
     kal_bool is_roaming;
     nwsel_capability_disabled_reason_enum disabled_reason;
 } nwsel_nas_sv_disable_info_update_ntf_struct;
@@ -1694,6 +1704,22 @@
     kal_bool is_emc_info_valid;
 } nwsel_nas_sv_nr_emc_service_availability_rsp_struct;
 
+#ifdef __ECALL_SUPPORT__
+typedef struct
+{
+    LOCAL_PARA_HDR
+} nas_sv_any_get_t10_status_req_struct;
+
+typedef nas_sv_any_get_t10_status_req_struct rac_nas_sv_get_t10_status_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+	kal_uint8 t10_status;
+} nas_sv_any_get_t10_status_cnf_struct;
+
+typedef nas_sv_any_get_t10_status_cnf_struct rac_nas_sv_get_t10_status_cnf_struct;
+#endif
 #if 0
 /* under construction !*/
 /* under construction !*/
@@ -1843,6 +1869,15 @@
 
 
 
+/* MSG_ID_NWSEL_NAS_SV_NRRC_EMC_FORBIDDEN_NW_LIST_UPDATE_REQ */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   emc_fplmn_count;
+    plmn_id_struct              emc_fplmn_list[MAX_FORBIDDEN_NETWORK_NUM];
+    kal_uint16                  emc_fplmn_band[MAX_FORBIDDEN_NETWORK_NUM];
+} nwsel_nas_sv_nrrc_emc_forbidden_nw_list_update_req_struct;
+
 #endif
 
 
diff --git a/mcu/protocol/interface/l4/tcm2sm_struct.h b/mcu/protocol/interface/l4/tcm2sm_struct.h
old mode 100755
new mode 100644
index a144faa..4dd32eb
--- a/mcu/protocol/interface/l4/tcm2sm_struct.h
+++ b/mcu/protocol/interface/l4/tcm2sm_struct.h
@@ -251,6 +251,26 @@
     req_processing_info_struct req_processing_info;
 } smreg_pdp_activate_req_struct;
 
+#if defined(__SM_UT__)
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   sim_idx;
+    smreg_pdp_activate_req_struct      pdp_act_req;
+    kal_bool    rslt;
+} sm_ut_compose_pdp_act_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8   sim_idx;
+    kal_uint8   pdu_len;
+    kal_uint8   pdu_data[100];
+    kal_bool    rslt;
+} sm_ut_decode_pdp_act_req_struct;
+
+typedef sm_ut_decode_pdp_act_req_struct  sm_ut_compose_pdp_act_req_result_struct;
+typedef sm_ut_compose_pdp_act_req_struct sm_ut_decode_pdp_act_req_result_struct;
+#endif
+
 typedef struct {
     LOCAL_PARA_HDR
     smreg_pdp_activate_req_struct trace;
diff --git a/mcu/protocol/interface/l4/tcm_pam_struct.h b/mcu/protocol/interface/l4/tcm_pam_struct.h
old mode 100755
new mode 100644
index 8f500c2..bfc4aba
--- a/mcu/protocol/interface/l4/tcm_pam_struct.h
+++ b/mcu/protocol/interface/l4/tcm_pam_struct.h
@@ -56,6 +56,7 @@
 typedef struct {
     LOCAL_PARA_HDR
     kal_uint8                       psi;
+    kal_uint8                       sat_pti;
     kal_bool                        is_pdu_session_type_present;
     pdp_addr_type_enum              pdu_session_type;
 
@@ -86,6 +87,9 @@
     req_processing_info_struct  	req_processing_info;
 
     kal_bool                        is_ladn_dnn;
+
+    kal_bool                        is_sm_pdu_dn_req_container_present;
+    sm_pdu_dn_req_container_struct  sm_pdu_dn_req_container;
 } tcm_pam_pdu_session_est_req_struct;
 
 /* MSG_ID_TCM_PAM_PDU_SESSION_EST_CNF */
diff --git a/mcu/protocol/interface/l4misc/l3_inc_enums.h b/mcu/protocol/interface/l4misc/l3_inc_enums.h
old mode 100755
new mode 100644
index 888c89c..f3d2001
--- a/mcu/protocol/interface/l4misc/l3_inc_enums.h
+++ b/mcu/protocol/interface/l4misc/l3_inc_enums.h
@@ -2483,7 +2483,8 @@
     PLMN_LOSS,    /* For report PLMN_LOSS when control by GMSS */
     ABORTED_BY_UPPER_LAYER,
     MM_IN_VIRTUAL_MODE,
-    MM_CAUSE_ENUM_END = MM_IN_VIRTUAL_MODE
+	GPRS_SERV_SUSPENDED_DUE_TO_CS,	/* MM will report this cause to NAS_SV/RAC PS Suspend due to MO CS call after LAU(triggered due to IRAT 4to2G )  */
+	MM_CAUSE_ENUM_END = GPRS_SERV_SUSPENDED_DUE_TO_CS
 }mm_cause_enum;
 
 typedef enum
@@ -2741,6 +2742,15 @@
     NWSEL_PLMN_TIMER_VZW_VGMM_T3502,
     NWSEL_PLMN_TIMER_VZW_VGMM_T3525,
     NWSEL_PLMN_TIMER_VZW_VGMM_SR_THROTTLING,
+    /* Customize PLMN base timer. Provide 8 cause for customization. */
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE0,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE1,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE2,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE3,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE4,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE5,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE6,
+    NWSEL_PLMN_TIMER_CUSTOMIZE_TIMER_CAUSE7,
 
     NWSEL_PLMN_TIMER_N1_MAX_PDU_EST_TIMEOUT_REACHED, /* ATT LTE-N37-1-3706 step 5 */
 	NWSEL_PLMN_TIMER_N1_DISABLE_4G5_IRAT_FAIL_FTA,
@@ -2808,6 +2818,8 @@
     /* VzW VGMM NAS not allow cause */
     NWSEL_NAS_NOT_ALLOW_VGMM_N1_MODE_NOT_ALLOWED_TG, /* Removed VZW_ as its converted as generic feature */
     NWSEL_N1_DISABLED_BY_NR_EMC_AVAILABILITY,
+	/* common reason*/
+	NWSEL_CUSTOMIZE_PLMN_BASE_TIMER,
 } nwsel_capability_disabled_reason_enum;
 
 typedef enum {
diff --git a/mcu/protocol/interface/l4misc/l4_trc_mod_l4c_utmd.json b/mcu/protocol/interface/l4misc/l4_trc_mod_l4c_utmd.json
old mode 100755
new mode 100644
index 9c7f4fc..bf01f9f
--- a/mcu/protocol/interface/l4misc/l4_trc_mod_l4c_utmd.json
+++ b/mcu/protocol/interface/l4misc/l4_trc_mod_l4c_utmd.json
@@ -2971,6 +2971,13 @@
       }
     },
     {
+      "INFO_L4C_ENQUEUE_PENDING_ACTION_AT_REAR": {
+        "apiType": "index",
+        "format": "[L4C] Enqueue pending action at rear: %Ml4c_pending_action_enum",
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
       "INFO_L4C_DEQUEUE_PENDING_ACTION": {
         "apiType": "index",
         "format": "[L4C] Dequeue pending action: %Ml4c_pending_action_enum",
@@ -5146,8 +5153,22 @@
         "format": "[L4C_NW] skip duplicate CSCON !!",
         "traceClass": "TRACE_INFO"
       }
+    },
+    {
+      "WARNING_RAT_MODE_CONFLICT_WITH_VGOPT": {
+        "apiType": "index",
+        "format": "[L4C_NW]Warning: RAT mode : %d, VGOPT : %d",
+        "traceClass": "TRACE_WARNING"
+      }
+	},
+    {
+      "RAC_UPDATE_VDP_FOR_23G_DISABLED_RAT_MODE": {
+        "apiType": "index",
+        "format": "[RAC] Change VDP to %Ml4_voice_domain_preference_enum for OP50 when 3G disabled",
+        "traceClass": "TRACE_INFO"
+      }
     }
   ],
   "traceFamily": "PS",
   "userModule": ""
-}
\ No newline at end of file
+}
diff --git a/mcu/protocol/interface/l4misc/l5_l4c_struct.h b/mcu/protocol/interface/l4misc/l5_l4c_struct.h
old mode 100755
new mode 100644
index ddb0528..bc08606
--- a/mcu/protocol/interface/l4misc/l5_l4c_struct.h
+++ b/mcu/protocol/interface/l4misc/l5_l4c_struct.h
@@ -66,6 +66,7 @@
 #include "rac2l4c_struct.h"
 #include "mmrf_msg_interface.h"
 #include "l4c_upds_struct.h"
+#include "sim_ps_struct.h"
 
 #ifdef __MBIM_MS_NETWORK_BLACKLIST__
 
@@ -186,6 +187,20 @@
 typedef l4crac_get_nssai_req_struct            l5_l4c_get_nssai_req_struct;
 typedef l4crac_get_nssai_cnf_struct            l5_l4c_get_nssai_cnf_struct;
 typedef l4crac_vgmm_nw_params_ind_struct       l5_l4c_vgmm_nw_params_ind_struct;
+
+#ifdef __ECALL_SUPPORT__
+typedef l4c_sim_set_ecall_mode_req_struct   l5_l4c_set_ecall_mode_req_struct;
+typedef l4c_sim_set_ecall_mode_cnf_struct   l5_l4c_set_ecall_mode_cnf_struct;
+typedef l4c_sim_get_ecall_mode_req_struct   l5_l4c_get_ecall_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 seq_id;
+    sim_ecall_mode_enum ecall_mode;
+    kal_uint8  t10_status;  /* 0: not run, 1: running */
+} l5_l4c_get_ecall_mode_cnf_struct;
+#endif
+
 #endif
 typedef l4c_upds_os_id_update_req_struct       l5_l4c_os_id_update_req_struct;
 
diff --git a/mcu/protocol/interface/lte/tcm_eval_struct.h b/mcu/protocol/interface/lte/tcm_eval_struct.h
old mode 100755
new mode 100644
index 9896f79..2819fe7
--- a/mcu/protocol/interface/lte/tcm_eval_struct.h
+++ b/mcu/protocol/interface/lte/tcm_eval_struct.h
@@ -529,6 +529,11 @@
 
 typedef ia_apn_change_req_struct pam_esm_ia_apn_change_req_struct;
 
+typedef struct
+{
+    LOCAL_PARA_HDR
+} esm_attach_abort_dereg_ind_struct;
+
 #if 0 /*(!defined(__EVAL_ENABLE__)) && (!defined(__ESM_ENABLE__))*/
 /* under construction !*/
 /* under construction !*/