Merge "[Feature][T106][task-view-1101][audio] Add audio exception exit to clean up resources"
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F000.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F400.bin
similarity index 100%
rename from allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F000.bin
rename to allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x0004F400.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini
index da1591a..6496bf2 100755
--- a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref.ini
@@ -14,14 +14,14 @@
 ../allbins_dc_ref/phycom_nvrwo_0x0002C400.bin

 ../allbins_dc_ref/phycom_nvrwo_0x00037C00.bin

 ../allbins_dc_ref/phycom_nvrwo_0x00043400.bin

-;../allbins_dc_ref/phycom_nvrwo_0x0004EC00.bin

+../allbins_dc_ref/phycom_nvrwo_0x0004EC00.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x00003400.bin

 ;xf.li@20230927 add for DRDI start

 ../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x0002CC00.bin

 ../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin

 ../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x00043C00.bin

-;../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x0004F000.bin

+../allbins_dc_ref/phyGgeAmtUser_nvrwo_0x0004F400.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref/phyGgeCom_nvrwo_0x0000EC00.bin

 ../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00007800.bin

@@ -29,18 +29,18 @@
 ../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00031000.bin

 ../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin

 ../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00048000.bin

-;../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00053800.bin

+../allbins_dc_ref/phyLteaAmtUser_nvrwo_0x00053800.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref/phyLteaCom_nvrwo_0x00012C00.bin

 ../allbins_dc_ref/phyLtetxtable_nvrwo_0x0001BC00.bin

 ../allbins_dc_ref/phyTdsAmtUser_nvrwo_0x00002800.bin

 ../allbins_dc_ref/phyTdsCom_nvrwo_0x0000E400.bin

-;../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00005000.bin

+../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00005000.bin

 ;xf.li@20230927 add for DRDI start

 ../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x0002E800.bin

 ../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin

 ../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00045800.bin

-;../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00051000.bin

+../allbins_dc_ref/phyWcdmaAmtUser_nvrwo_0x00051000.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref/phyWcdmaCom_nvrwo_0x00012400.bin

 ../allbins_dc_ref/zxRfM0_nvrwo_0x00016C00.bin

diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
index d05e783..5543462 100755
--- a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
@@ -14,14 +14,14 @@
 ../allbins_dc_ref_M22/phycom_nvrwo_0x0002C400.bin

 ../allbins_dc_ref_M22/phycom_nvrwo_0x00037C00.bin

 ../allbins_dc_ref_M22/phycom_nvrwo_0x00043400.bin

-;../allbins_dc_ref_M22/phycom_nvrwo_0x0004EC00.bin

+../allbins_dc_ref_M22/phycom_nvrwo_0x0004EC00.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00003400.bin

 ;xf.li@20230927 add for DRDI start

 ../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0002CC00.bin

 ../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00038400.bin

 ../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00043C00.bin

-;../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0004F000.bin

+../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0004F400.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref_M22/phyGgeCom_nvrwo_0x0000EC00.bin

 ../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00007800.bin

@@ -29,18 +29,18 @@
 ../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00031000.bin

 ../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x0003C800.bin

 ../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00048000.bin

-;../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00053800.bin

+../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00053800.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref_M22/phyLteaCom_nvrwo_0x00012C00.bin

 ../allbins_dc_ref_M22/phyLtetxtable_nvrwo_0x0001BC00.bin

 ../allbins_dc_ref_M22/phyTdsAmtUser_nvrwo_0x00002800.bin

 ../allbins_dc_ref_M22/phyTdsCom_nvrwo_0x0000E400.bin

-;../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00005000.bin

+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00005000.bin

 ;xf.li@20230927 add for DRDI start

 ../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x0002E800.bin

 ../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x0003A000.bin

 ../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00045800.bin

-;../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00051000.bin

+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00051000.bin

 ;xf.li@20230927 add for DRDI end

 ../allbins_dc_ref_M22/phyWcdmaCom_nvrwo_0x00012400.bin

 ../allbins_dc_ref_M22/zxRfM0_nvrwo_0x00016C00.bin

diff --git a/ap/app/Script/scripts/psext_down_ipv6.sh b/ap/app/Script/scripts/psext_down_ipv6.sh
index c738a77..9c32c71 100755
--- a/ap/app/Script/scripts/psext_down_ipv6.sh
+++ b/ap/app/Script/scripts/psext_down_ipv6.sh
@@ -3,7 +3,7 @@
 if [ "$test_log" == "" ]; then
 	test_log=`nv get path_log`"te.log"
 fi
-echo "Info: psext_updown_ipv6.sh $ps_if $eth_if $br_if start" >> $test_log
+echo "Info: psext_down_ipv6.sh $1 start" >> $test_log
 
 c_id=$1
 ps_if=`nv get pswan`$c_id
@@ -15,7 +15,7 @@
 {
     br_ip=`nv get $br_if"_ipv6_ip"`
     ps_ip=`nv get $ps_if"_ipv6_ip"`
-    pdp_ip=`nv get ipv6_wan_ipaddr`
+    pdp_ip=`nv get $ps_if"_ipv6_pdp"`
 
     ip6tables -t filter -D FORWARD -p icmpv6 --icmpv6-type 135 -j DROP
 	
@@ -67,7 +67,7 @@
     nv set $ps_if"_dhcpv6_end"="::"
 
     #适配页面等其他地方使用老NV
-    nv set ipv6_wan_ipaddr="::"
+    nv set $ps_if"_ipv6_pdp"="::"
 	nv set $ps_if"_ipv6_state"="dead"
 	
 	local_ipv6_addr_nv="$ps_if""_local_ipv6_addr"
diff --git a/ap/app/Script/scripts/psext_updown_ipv6.sh b/ap/app/Script/scripts/psext_updown_ipv6.sh
index 06bee36..9207f11 100755
--- a/ap/app/Script/scripts/psext_updown_ipv6.sh
+++ b/ap/app/Script/scripts/psext_updown_ipv6.sh
@@ -142,7 +142,7 @@
         #pdp 激活的ipv6地址
         pdp_ip=$prefix_info_temp$interface_id_temp
         #pdp激活地址,适配页面使用
-        nv set ipv6_wan_ipaddr="$pdp_ip"
+        nv set $ps_if"_ipv6_pdp"="$pdp_ip"
         
         ipv6_addr_conver $pdp_ip "$ps_if"
         
@@ -364,7 +364,7 @@
 {
     br_ip=`nv get $br_if"_ipv6_ip"`
     ps_ip=`nv get $ps_if"_ipv6_ip"`
-    pdp_ip=`nv get ipv6_wan_ipaddr`
+    pdp_ip=`nv get $ps_if"_ipv6_pdp"`
 
     ip6tables -t filter -D FORWARD -p icmpv6 --icmpv6-type 135 -j DROP
 	
@@ -416,7 +416,7 @@
     nv set $ps_if"_dhcpv6_end"="::"
 
     #适配页面等其他地方使用老NV
-    nv set ipv6_wan_ipaddr="::"
+    nv set $ps_if"_ipv6_pdp"="::"
 	nv set $ps_if"_ipv6_state"="dead"
 	
 	local_ipv6_addr_nv="$ps_if""_local_ipv6_addr"
diff --git a/ap/app/zte_comm/zte_mainctrl/netdev_proc.c b/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
index 4a4ae9b..2533625 100755
--- a/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
+++ b/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
@@ -874,17 +874,26 @@
 			(actinfo->act_info.ip46flag & V4_VALID))
 		{
 			char nat_enable[4] = {0};
-			
+			/*add lynq nv config support & merge changes for sihai@cz.li on 2024/10/11 start*/
+			int rndis_ip_map = !system("cat /sys/class/lynq_nv_cfg/cdev_lynq_nv_cfg/rndis_ip_map | grep 1");
 			system_cmd_ex("iptables -P INPUT ACCEPT");
 			system_cmd_ex("iptables -P OUTPUT ACCEPT");
 			system_cmd_ex("iptables -P FORWARD ACCEPT");
-			system_cmd_ex("iptables -t nat -F");
+			if (rndis_ip_map == 0)
+				system_cmd_ex("iptables -t nat -F");
 			system_cmd_ex("iptables -t nat -X port_forward");
 			system_cmd_ex("iptables -t nat -X DMZ");
 			system_cmd_ex("iptables -t nat -X port_mapping");
 			system_cmd_ex("iptables -t nat -N port_forward");
 			system_cmd_ex("iptables -t nat -N DMZ");
 			system_cmd_ex("iptables -t nat -N port_mapping");
+			if (rndis_ip_map == 1)
+			{
+				system_cmd_ex("iptables -t nat -D PREROUTING -j port_forward");
+				system_cmd_ex("iptables -t nat -D PREROUTING -j DMZ");
+				system_cmd_ex("iptables -t nat -D PREROUTING -j port_mapping");
+			}
+			/*add lynq nv config support & merge changes for sihai@cz.li on 2024/10/11 end*/
 			system_cmd_ex("iptables -t nat -I PREROUTING 1 -j port_forward");
 			system_cmd_ex("iptables -t nat -I PREROUTING 1 -j DMZ");
 			system_cmd_ex("iptables -t nat -I PREROUTING 1 -j port_mapping");
diff --git a/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c b/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c
index b5ffada..07db9aa 100755
--- a/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c
+++ b/ap/os/linux/linux-3.4.x/drivers/net/psnet/psnet_io.c
@@ -94,6 +94,8 @@
 
 int ra_mtu_enable;
 module_param(ra_mtu_enable, int, 0644);
+int rs_send_flag;
+module_param(rs_send_flag, int, 0644);
 extern struct psnet *global_psnet[DDR_DEV_MAX];
 
 void psnet_parse_RA_pkt(unsigned char cid, unsigned char* pkt, int len)
@@ -187,7 +189,7 @@
 
 int psnet_get_prefix(unsigned char cid, int len, unsigned char *prefix, unsigned char *prefix_len)
 {
-	if(cid > 0 && cid <= DDR_DEV_MAX){
+	if(cid > 0 && cid <= DDR_DEV_MAX && rs_send_flag == 0){
 		if(g_psnet_ipv6_prefix[cid-1].flag == 0){
 			int ret = down_timeout(&g_psnet_ipv6_prefix[cid-1].sem, 3*HZ);
 			if(ret != 0)//cov
diff --git a/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c b/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c
index 426b9ed..d059496 100755
--- a/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c
+++ b/ap/os/linux/linux-3.4.x/drivers/net/zvnet/zvnet_dev.c
@@ -399,6 +399,7 @@
 	if (!skb)

 	{

 		write_free_capbuf(pbuf_temp->buff);

+		if(printk_ratelimit())

 		zv_err("skb=%d alloc fail tops=%d fromps=%d\n",atomic_read(&skb_used),atomic_read(&skb_tops),atomic_read(&skb_fromps));

 		return NULL;

 	}

@@ -992,6 +993,9 @@
 							.chID = channel_20,

 							.flag = 0};

 	struct T_zvnet_rpmsg buff[ZVNET_XMIT_BUFF_NUM];

+	struct sched_param param = { .sched_priority = 1 };

+	param.sched_priority = 36;

+	sched_setscheduler(current, SCHED_FIFO, &param);

     //struct zvp_header hzvp;

 /*

     if(IS_ERR(zvnetdev)) {

@@ -1027,6 +1031,7 @@
 		for(i = 0; i < num; i++){

 			skb = skb_build_capbuf(&buff[i]);

 			if (unlikely(!skb)) {

+				if(printk_ratelimit())

 				zv_err("skb_build_capbuf fail,len=%d i=%d",ret_len,i);

 				continue;

 			}

diff --git a/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c b/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c
index 16cf5dc..14d4b28 100755
--- a/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c
+++ b/ap/os/linux/linux-3.4.x/drivers/usb/gadget/u_ether.c
@@ -294,6 +294,7 @@
 
 	skb = dev_alloc_skb(size);
 	if (skb == NULL) {
+		if(printk_ratelimit())
 		DBG(dev, "no rx skb\n");
 		goto enomem;
 	}
diff --git a/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c b/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c
index 5ebd6dc..851493c 100755
--- a/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c
+++ b/ap/os/linux/linux-3.4.x/net/core/SI/ext_mem.c
@@ -334,6 +334,7 @@
 		psnet_freepsbuf(pbuf_temp->pbuf_head);

 #endif

 #endif

+		if(printk_ratelimit())

 		printk("skb=%d psbuff fail1 tops=%d fromps=%d\n",atomic_read(&skb_used),atomic_read(&skb_tops),atomic_read(&skb_fromps));

 		return NULL;

 	}

diff --git a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c
index 3805cac..986119f 100755
--- a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c
+++ b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast6.c
@@ -40,6 +40,7 @@
 extern struct tasklet_struct fast_tx_bh;
 /* ******************************** º¯ÊýÉêÃ÷ ********************************/
 extern int zvnet_get_index_by_netdev(struct net_device *net);
+extern struct net_device *fast_br_parent(const struct net_device *dev);
 
 /* ******************************** º¯ÊýʵÏÖ ********************************/
 // ipv6±¨Í·À©Õ¹Ñ¡ÏÅжÏÊÇ·ñ°üº¬l4head
@@ -367,6 +368,10 @@
 			return 0;
 		}
 	}
+	if(skb->isvlan && fast6_entry_data->hh_flag == 0){
+		rcu_read_unlock();
+		return 0;
+	}
 #endif
     dev = fast6_entry_data->outdev;
     /*Åжϱ¨Îij¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚDEVµÄMTU*/
@@ -402,6 +407,11 @@
 	l4_offset = l4head - skb->data;
     //tcpdumpin_sq(skb);
 #if _USE_VEHICLE_DC
+	if(skb->indev && zvnet_get_index_by_netdev(skb->indev) >= 0 && (zvnet_get_index_by_netdev(dev) >= 0 || 
+		((dev->priv_flags & IFF_EBRIDGE) && (fast_br_parent(skb->indev) != dev)))){
+		rcu_read_unlock();
+		return 0;
+	}
 	if(fastbr_level != 1){
 		if (IPPROTO_TCP == tuple.dst.protonum){
 			tcph = (struct tcphdr *)l4head;
diff --git a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c
index 0d0b071..54d1f74 100755
--- a/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c
+++ b/ap/os/linux/linux-3.4.x/net/core/fastproc/fast_common.c
@@ -722,11 +722,11 @@
 {
     tcpack_rel(entry);
     entry->ct->timeout.function((unsigned long)entry->ct);
-    //²»ÔÙÒýÓÃctÁË
-    nf_ct_put(entry->ct);
 #if _USE_VEHICLE_DC
 	fast_entry_unlink_cap(entry);
 #endif
+    //²»ÔÙÒýÓÃctÁË
+    nf_ct_put(entry->ct);
     fn_list_del(list_head, entry, free_entry);
 }
 
@@ -1951,6 +1951,7 @@
     skb->protocol = old_pro;
     skb->data = old_data;
     skb->len = old_len;
+	skb->isvlan = 0;
     return 0;
 }
 
diff --git a/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c b/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c
index 7e9c7b1..dc9d5a4 100755
--- a/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c
+++ b/ap/os/linux/linux-3.4.x/net/core/fastproc/fastnat.c
@@ -285,6 +285,10 @@
         goto err_out;
     }
 }
+	if(skb->isvlan && nat_entry_data->hh_flag == 0){
+		rcu_read_unlock();
+		goto err_out;
+	}
 #endif
 /* Ended by AICoder, pid:40ce82efac7642c141d308ead0cdf7208c94b48b */
     dev = nat_entry_data->outdev;
@@ -514,9 +518,8 @@
 				struct nf_conn *ct_fwd = (struct nf_conn *)skb->nfct_bak;
 				fast_entry_t *nat_entry_fwd = ct_fwd?((fast_entry_t *)ct_fwd->fast_entry):nat_entry;
 				fast_entry_data_t *cap_entry_data = &nat_entry_fwd->data[dir];
-				if (nat_entry_fwd){
-					/*skbÒѾ­ÈÆ»ØÀ´ÁË£¬°ó¶¨ÐÂÀÏfast£¬¼Ç¼capct*/
-					spin_lock_bh(&fastnat_spinlock);
+				spin_lock_bh(&fastnat_spinlock);
+				if (nat_entry_fwd && nat_entry_fwd->fwd_entry == NULL && nat_entry->fwd_entry == NULL){
 					if(nat_entry_fwd != nat_entry){
 						if(!__nf_ct_tuple_src_equal(&cap_entry_data->tuplehash.tuple, &nat_entry_data->tuplehash.tuple) &&
 							__nf_ct_tuple_dst_equal(&cap_entry_data->tuplehash.tuple, &nat_entry_data->tuplehash.tuple)){
@@ -593,8 +596,8 @@
 							nat_entry_fwd->data[0].outdev = nat_entry_fwd->data[1].indev;
 						}
 					}
-					spin_unlock_bh(&fastnat_spinlock);
 				}
+				spin_unlock_bh(&fastnat_spinlock);
 			}else{
 /* Started by AICoder, pid:h335cmc8c7cc4681459c0af3d0a68e0bb604fd47 */
 if(nat_entry_data->indev != skb->indev){
diff --git a/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux b/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux
index 5385154..b072530 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux
+++ b/ap/project/zx297520v3/prj_vehicle_dc/config/normal/config.linux
@@ -774,7 +774,7 @@
 # CONFIG_L2TP is not set
 CONFIG_STP=y
 CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
+# CONFIG_BRIDGE_IGMP_SNOOPING is not set
 # CONFIG_NET_DSA is not set
 CONFIG_VLAN_8021Q=y
 # CONFIG_VLAN_8021Q_GVRP is not set
diff --git a/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux b/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux
index 16efbbb..152255d 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux
+++ b/ap/project/zx297520v3/prj_vehicle_dc_ref/config/normal/config.linux
@@ -774,7 +774,7 @@
 # CONFIG_L2TP is not set
 CONFIG_STP=y
 CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
+# CONFIG_BRIDGE_IGMP_SNOOPING is not set
 # CONFIG_NET_DSA is not set
 CONFIG_VLAN_8021Q=y
 # CONFIG_VLAN_8021Q_GVRP is not set
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index eade5dc..2474478 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -443,3 +443,4 @@
 DEBUG_INFO_FILE_NUM=2
 DEBUG_INFO_FILE_TOTAL_SIZE=1
 #debug info end
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
index 7570274..c084e8e 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -153,7 +153,7 @@
 natenable=
 dosenable=0
 need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
 nv_save_interval=300
 path_conf=/etc_rw
 path_ro=/etc_ro
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index d5b8bbf..a42a25c 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -449,9 +449,12 @@
 T3396_COUNTS=3
 ECALL_T2_TIMER=3600
 NGECALL_FORTEST=0
-CUSTOMER_FLAG=0
+#LYNQ_HUANG_QING_AT_20250428_ZXW_TASK_1120_CR_20250327578D9BCF_LET_ZXIC_SUPPORT_LYNQ_NG_ECALL_MODIFY_BEGIN
+CUSTOMER_FLAG=1
+#LYNQ_HUANG_QING_AT_20250428_ZXW_TASK_1120_CR_20250327578D9BCF_LET_ZXIC_SUPPORT_LYNQ_NG_ECALL_MODIFY_END
 #for volte end
 DEBUG_INFO_FILE_PATH=/mnt/userdata
 DEBUG_INFO_FILE_NUM=2
 DEBUG_INFO_FILE_TOTAL_SIZE=1
 #debug info end
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user
index f7695af..ef54214 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -153,7 +153,7 @@
 natenable=
 dosenable=0
 need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
+nofast_port=21+22+23+25+53+67+68+69+110+115+123+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
 nv_save_interval=300
 path_conf=/etc_rw
 path_ro=/etc_ro
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
index 2d45d7d..233faf4 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
@@ -214,11 +214,12 @@
 

                 if(ind->registration_valid)

                 {

-                    printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n", 

+                    printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d, deny_reason is %d\n", 

                             tech_domain[ind->registration.tech_domain], 

                             radio_tech[ind->registration.radio_tech],

                             ind->registration.roaming,

-                            ind->registration.registration_state);

+                            ind->registration.registration_state,

+                            ind->registration.deny_reason);

                 }

                 if(ind->registration_details_3gpp_valid)

                 {

@@ -382,19 +383,21 @@
                  printf("qser_nw_get_reg_status ret = %d, detail info:\n", ret);

                  if(t_info.voice_registration_valid)

                  {

-                     printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n", 

+                     printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d, deny_reason is %d\n", 

                          tech_domain[t_info.voice_registration.tech_domain], 

                          radio_tech[t_info.voice_registration.radio_tech],

                          t_info.voice_registration.roaming,

-                         t_info.voice_registration.registration_state);

+                         t_info.voice_registration.registration_state,

+                         t_info.voice_registration.deny_reason);

                  }

                  if(t_info.data_registration_valid)

                  {

-                     printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n", 

+                     printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d, deny_reason is %d\n", 

                          tech_domain[t_info.data_registration.tech_domain], 

                          radio_tech[t_info.data_registration.radio_tech],

                          t_info.data_registration.roaming,

-                         t_info.data_registration.registration_state);

+                         t_info.data_registration.registration_state,

+                         t_info.data_registration.deny_reason);

                  }

                  if(t_info.voice_registration_details_3gpp_valid)

                  {

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp
index a465ae3..1286d7d 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-adc/lynq-adc.cpp
@@ -3,6 +3,8 @@
 #include <string.h>
 #include <sc_bsp.h>
 #include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
 #include "lynq-adc.h"
 #include "liblog/lynq_deflog.h"
 
@@ -14,6 +16,8 @@
 #define ADC1_NODES "/sys/kernel/debug/pmu_zx29/adc1"
 #define ADC2_NODES "/sys/kernel/debug/pmu_zx29/adc2"
 
+static int adc_count_initialized = 0;
+
 /********************************************************************
 * @brief: qser_adc_show, function to read ADC value from specific channel
 * @param qadc [IN]: ADC_CHANNEL_E, the ADC channel to read from
@@ -27,6 +31,19 @@
     int adc_value;
     char cmd_ret[1024]={0};
     FILE *fd;
+
+    if (!adc_count_initialized) {
+        int fd_init;
+        if ((fd_init = open("/sys/kernel/debug/pmu_zx29/set_adc_count", O_WRONLY)) != -1) {
+            ssize_t ret = write(fd_init, "1", 1);
+            close(fd_init);
+            adc_count_initialized = 1;
+            LYDBGLOG("ADC count initialized, write returned: %zd bytes\n", ret);
+        } else {
+            LYERRLOG("Failed to initialize ADC count: %s\n", strerror(errno));
+        }
+    }
+
     switch(qadc)
     {
         case QADC_NONE:
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
index 35a2d3c..eab15dc 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -1566,14 +1566,6 @@
             return LYNQ_E_REPETITIVE_APN;
         }
     }
-    pthread_mutex_lock(&g_lynq_data_sendto_mutex);
-    if(send_request(lynq_client_sockfd,&client)==-1)
-    {
-        LYERRLOG("send request fail");
-        perror("[LYNQ_DATA] send request fail:");
-        pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
-        return -1;
-    }
     //find lynq_data_call_id
     for(lynq_data_call_id = 0; lynq_data_call_id < LYNQ_APN_CHANNEL_MAX; lynq_data_call_id++)
     {
@@ -1585,6 +1577,16 @@
     if (lynq_data_call_id == LYNQ_APN_CHANNEL_MAX)
     {
         LYERRLOG("update apn table fail error id = %d",lynq_data_call_id);
+        return -1;
+    }
+    LYINFLOG("lynq_data_call_id = %d\n", lynq_data_call_id);
+    //ready to send request
+    pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ 
+    if(send_request(lynq_client_sockfd,&client)==-1)
+    {
+        LYERRLOG("send request fail");
+        perror("[LYNQ_DATA] send request fail:");
         pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
         return -1;
     }
@@ -2309,10 +2311,10 @@
         LYERRLOG("[lynq_get_data_call_list] handle or datacalllist is NULL");
         return LYNQ_E_NULL_ANONALY;
     }
-    if (*handle<0 && handle>8)
+    if (*handle<0 || *handle>LYNQ_APN_CHANNEL_MAX)
     {
         LYERRLOG("[lynq_get_data_call_list] handle value error");
-        return LYNQ_E_NULL_ANONALY;
+        return 0;
     }
     LYINFLOG("[lynq_get_data_call_list] incoming handle value: %d",*handle);
     memset(&interDataCallList,0,sizeof(interDataCallList));
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp
index f0c0bba..fb231b9 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-network/lynq_network.cpp
@@ -763,7 +763,7 @@
             LYERRLOG("%s data resp[3] %s is NULL",__func__);

         }

     }

-    else if((*regState)==3 || (*regState)==13)

+    else //if((*regState)==3 || (*regState)==13) //LYNQ_HUANG_QING_AT_20250421_ZXW_TASK_1355_CR_202504112CA2ADB1_MODIFY

     {    

         if(resp[reject_index]==NULL)

         {    

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
index a88e181..ca8f216 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
@@ -118,7 +118,7 @@
 int qser_Gnss_injectEphemeris(uint32_t h_gnss);
 int qser_Gnss_download_tle();
 int qser_Gnss_injectEphemeris_withpath(uint32_t h_gnss, char *path);
-
+int qser_Gnss_setting_statement_type(uint32_t h_gnss, char *statement_type,int state);
 #ifdef __cplusplus
 }
 #endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
index 172ff02..a6118de 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/mbtk_gnss_internal.h
@@ -318,7 +318,7 @@
 //int lynq_gnss_get_ap_data(void);
 int lynq_gnss_output_frq(int frequency);
 int lynq_gnss_start();
-
+int lynq_gnss_setting_statement_type(uint32 h_gnss, char *statement_type,int state);
 #ifdef __cplusplus
 }
 #endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
index 9e44fb0..97e0497 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
@@ -475,6 +475,23 @@
     return 0;
 }
 
+int qser_Gnss_setting_statement_type(uint32_t h_gnss, char *statement_type,int state)
+{
+    int ret;
+    if(!inited)
+    {
+        ALOGE("has not been initiated\n");
+        return -1;
+    }
+    ret = lynq_gnss_setting_statement_type(h_gnss,statement_type,state);
+    if(ret < 0)
+    {
+        return -1;
+    }
+
+    return 0;
+}
+
 void atsvc_incb_entity(char *input,int length);
 int lynq_at_cgps(int at_type,int gnss_state_type);
 int lynq_at_cgpsnmea(int at_type,int gnss_state_type);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
index c238eee..8979e97 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
@@ -341,6 +341,107 @@
     }
 }
 
+int uint16_2_byte(uint16 a, void *buff, bool big_endian)
+{
+    uint8* ptr = (uint8*)buff;
+    if(big_endian) {
+        ptr[0] = (uint8)(a >> 8);
+        ptr[1] = (uint8)a;
+    } else {
+        ptr[1] = (uint8)(a >> 8);
+        ptr[0] = (uint8)a;
+    }
+    return sizeof(uint16);
+}
+
+static uint16 fletcher16(const uint8_t* data, int data_len)
+{
+    uint32_t sum1 = 0;
+    uint32_t sum2 = 0;
+    int index;
+
+    for (index = 0; index < data_len; ++index )
+    {
+        sum1 += data[index];
+        sum2 += sum1;
+    }
+
+    return ((0xFF & sum2) << 8) | (0xFF & sum1);
+}
+
+#define HD8122_PACK_HEAD 0xD9F1
+char *nmea_param[]={
+    "GGA",
+    "GLL",
+    "GSA",
+    "GRS",
+    "GSV",
+    "RMC",
+    "VTG",
+    "ZDA",
+    "GST"
+};
+int lynq_gnss_setting_statement_type(uint32 h_gnss, char *statement_type,int state)
+{
+    int i;
+    uint8 data[3];
+    data[0] = 0xF0;
+    for (i = 0;i < sizeof(nmea_param)/sizeof(nmea_param[0]);i++)
+    {
+        if(!strncmp(statement_type,nmea_param[i],3))
+        {
+            data[1] = (uint8)i;
+            break;
+        }
+    }
+    if(i > 8)
+    {
+        if(!strncmp(statement_type,"TXT",3))
+        {
+            data[1] = 0X20;
+        }
+        else if(!strncmp(statement_type,"DTM",3))
+        {
+            data[1] = 0X0A;
+        }
+        else
+        {
+            ALOGE("statement_type error\n");
+            return -1;
+        }
+    }
+    data[2] = state;
+    uint8 buff[1024];
+    memset(buff, 0, sizeof(buff));
+    uint8 *data_ptr = buff;
+    data_ptr += uint16_2_byte(HD8122_PACK_HEAD, data_ptr, false);
+    *data_ptr++ = 0x06;
+    *data_ptr++ = 0x01;
+    data_ptr += uint16_2_byte((uint16)3, data_ptr, false);
+    
+    memcpy(data_ptr, data, 3);
+    data_ptr += 3;
+
+    data_ptr += uint16_2_byte(fletcher16(buff + 2, 4 + 3), data_ptr, false);
+    int len = data_ptr - buff;
+    int ret =0;
+    int fd = open(MBTK_GNSS_DEV, O_RDWR | O_NOCTTY | O_NDELAY);
+    if(fd < 0) {
+        ALOGE("open error\n");
+        return -1;
+    }
+    ret = write(fd, buff, len);
+    if(ret < 0)
+    {
+        ALOGE(" cmd send faild");
+        close(fd);
+        return -1;
+    }
+    usleep(1000);
+    close(fd);
+    return 0;
+}
+
 static short int from_hex(char a)
 {
     if (a >= 'A' && a <= 'F')
@@ -1376,7 +1477,6 @@
     return 0;
 }
 
-
 int lynq_gnss_client_init(uint32 *ph_gnss)
 {
     int ret;
@@ -2035,6 +2135,9 @@
     return 0;
 
 }
+
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
index 9ad0b0c..d9cd05a 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
@@ -597,6 +597,300 @@
     return state;  
 }
 
+int switch_nw_deny_reason_data(int net_reject_reason)
+{
+#if 0
+below is from <SC-VV601-3A ZX297520V3Vƽ̨ATÃüÁîÊÖ²á >  ¸½Â¼ C +CEER ·µ»Ø´íÎóÔ­ÒòÁбí 
+GPRS/EPS Mobility Management ÀàÐÍ´íÎóÔ­Òò£º
+¼õÈ¥ 100µÃµ½ net_reject_reason
+    103 Illegal Ms
+    106 Illegal Me
+    107 Gprs Services Not Allowed
+    108 Gprs and Non-Gprs Services Not Allowed
+    109 UE identity cannot be derived by the network
+    110 UE implicitly detached
+    111 Plmn Not Allowed
+    112 Location area not allowed
+    113 Roaming not allowed in this location area
+    114 GPRS services not allowed in the PLMN
+    115 No suitable cells in routing area
+    116 Authentication Reject
+    117 Authentication Failure
+    118 IMEI Not Accepted
+    119 Imsi Paging
+    120 MT detach, Reattach Required
+    121 User Deactived
+    122 Congestion
+    123 ESM failure
+    124 No PDP context activated
+    125 Not Authorized For This Csg
+    126 Attach Lower Layer Failure Or Release
+    127 T3410 Time Out
+    128 Requested service option not authorized in this PLMN
+    129 Active Default Eps Bear Reject
+    130 Authentication Mac Failure
+    131 Authentication Sync Failure
+    132 Authentication None Eps parameter
+    133 Reattach not required and no cause
+    134 Get Ue Information Failure
+    135 T3310 Time Out
+    136 Authentication Unacceptable
+    137 Attach Establish Reject
+    148 Unspecified GPRS error
+    149 Normal Fail Continuously Five Times
+    172 Semantically incorrect message
+    173 Invalid mandatory information
+    174 Message type non-existent or not implemented
+    175 Information element non-existent or not implemented
+    176 Protocol error, unspecified
+    177 Message type not compatible with the protocol state
+    178 Conditional IE error
+    179 Message not compatible with the protocol state
+    180 retry upon entry into a new cell
+    181 UE security capabilities mismatch
+    182 Security mode rejected, unspecified
+#endif
+
+    int reason = 0;
+    switch (net_reject_reason)
+    {
+        case 3://3 - Illegal MS
+            reason=E_QSER_NW_ILLEGAL_MS_DENY_REASON;/*2*/
+            break;
+        case 6:// 6 - Illegal ME
+            reason=E_QSER_NW_ILLEGAL_ME_DENY_REASON;/*5*/
+            break;     
+        case 7://7 == GPRS services not allowed
+        case 8://8 == GPRS services and non-GPRS services not allowed
+        case 14://14 == GPRS services not allowed in this PLMN
+            reason = E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON;  /*=16*/
+            break;
+        case 9://9 == MS identity cannot be derived by the network
+            reason = E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON;/*=18*/
+            break;
+        case 15://15 - No Suitable Cells in this Location Area
+            reason = E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON;/*=9*/
+            break;   
+        case 16://16  Authentication Reject
+        case 17://17  Authentication Failure
+        case 30://30  Authentication Mac Failure
+        case 31://31  Authentication Sync Failure
+        case 32://32  Authentication None Eps parameter
+        case 36://36  Authentication Unacceptable
+        case 81://UE security capabilities mismatch
+        case 82://Security mode rejected, unspecified
+            reason=E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON;/*14*/
+            break; 
+        case 18://18  IMEI Not Accepted
+            reason=E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON;/*4*/
+            break;           
+        case 22://22 - Congestion
+            reason=E_QSER_NW_CONGESTION_DENY_REASON;/*13*/
+            break;     
+        case 25://25 - Not Authorized for this CSG
+           reason=E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON;/*15*/
+           break; 
+        case 21://21 - User Deactived
+        case 28://28 - Requested service option not authorized in this PLMN
+            reason=E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON;/*17*/
+            break;              
+        case 72://72 - Semantically incorrect message
+           reason=E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON;/*19*/
+           break; 
+        case 73://73 - Invalid mandatory information
+           reason=E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON;/*20*/
+           break;  
+        case 74://74 - Message type non-existent or not implemented
+           reason=E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON;/*21*/
+           break;
+        case 75:// 75 -  Information element non-existent or not implemented
+           reason=E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON;/*22*/ /**<  Message type not compatible with the protocol state. */
+        case 76: //76  Protocol error, unspecified
+           reason=E_QSER_NW_PROTOCOL_ERROR_DENY_REASON;/*25*/
+           break;
+        case 77:// 77 -  Message type not compatible with protocol state.
+           reason=E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON;/*22*/ /**<  Message type not compatible with the protocol state. */
+           break; 
+        case 78://100 - Conditional IE error
+           reason=E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON;/*23*/
+           break; 
+        case 79://101 - Message not compatible with protocol state
+           reason=E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON;/*24*/
+           break;       
+    }
+    return reason;  
+}
+
+int switch_nw_deny_reason_voice(int net_reject_reason)
+{
+#if 0
+    below is from <SC-VV601-3A ZX297520V3Vƽ̨ATÃüÁîÊÖ²á >  ¸½Â¼ C +CEER ·µ»Ø´íÎóÔ­ÒòÁбí 
+    CS Mobility Management ÀàÐÍ´íÎóÔ­Òò£º
+    
+    2 IMSI unknown in HLR
+    3 Illegal MS
+    4 IMSI unknown in VLR
+    5 IMEI not accepted
+    6 Illegal ME
+    11 PLMN not allowed
+    12 Location Area not allowed
+    13 Roaming not allowed in this location area
+    15 No Suitable Cells In Location Area
+    16 MSC temporarily not reachable
+    17 Network Failure
+    18 Retry InTo New Cell
+    19 Default Reject Cause
+    20 MAC failure
+    21 Synch failure
+    22 Congestion
+    23 GSM authentication unacceptable
+    24 Authentication Reject
+    25 Not authorized for this CSG
+    30 Cm Service Abortion
+    32 Service option not supported
+    33 Requested service option not subscribed
+    34 Service option temporarily out of order
+    38 Call cannot be identified
+    39 Extended service request procedure, CS service temporarily not
+    available
+    40 RRC Connection Establish Cell Reselection
+    41 RRC Connection Establish Failure
+    42 Random Acess Failure
+    43 LowLayer Failure
+    44 GRR Abort Indication
+    45 Paging Pending
+    46 RRC Connection Release Preemptive
+    47 RRC Connection Release Congestion
+    48 RRC Connection Release Reestablish Reject
+    49 RRC Connection Release Direct Signal Reestablish
+    50 RRC Connection Release User Inactive
+    51 Combined EPS attach or TAU successful for EPS only, CS domain
+    not available
+    52 MM normal fail or network fail continuously 4 times, need search
+    PLMN
+    53 MT detach, and the detach type is IMSI detach
+    95 Semantically incorrect message
+    96 Invalid mandatory information
+    97 Message type non-existent or not implemented
+    98 Message type not compatible with protocol state
+    99 Information element non-existent or not implemented
+    100 Conditional IE error
+    101 Message not compatible with protocol state
+    111 Protocol error, Unspecified
+    120 Unspecified Failure
+
+below is E_QSER_NW_ macro definition
+    E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON                    = 1, /**<  IMSI unknown in HLR. */
+    E_QSER_NW_ILLEGAL_MS_DENY_REASON                          = 2, /**<  Illegal MS. */
+    E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON                    = 3, /**<  IMSI unknown in VLR. */
+    E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON                   = 4, /**<  IMEI not accepted. */
+    E_QSER_NW_ILLEGAL_ME_DENY_REASON                          = 5, /**<  Illegal ME. */
+    E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON                    = 6, /**<  PLMN not allowed. */
+    E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON                      = 7, /**<  Location area not allowed. */
+    E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON              = 8, /**<  Roaming not allowed in this location area. */
+    E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON                = 9, /**<  No suitable cells in location area. */
+    E_QSER_NW_NETWORK_FAILURE_DENY_REASON                     = 10, /**<  Network failure. */
+    E_QSER_NW_MAC_FAILURE_DENY_REASON                         = 11, /**<  MAC failure. */
+    E_QSER_NW_SYNCH_FAILURE_DENY_REASON                       = 12, /**<  Sync failure. */
+    E_QSER_NW_CONGESTION_DENY_REASON                          = 13, /**<  Congestion. */
+    E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON     = 14, /**<  GSM authentication unacceptable. */
+    E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON                  = 15, /**<  Not authorized in this CSG. */
+    E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON        = 16, /**<  Service option not supported. */
+    E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON   = 17, /**<  Requested service option not subscribed. */
+    E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON           = 18, /**<  Call cannot be identified. */
+    E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON          = 19, /**<  Semantically incorrect message. */
+    E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON              = 20, /**<  Invalid mandatory information. */
+    E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON               = 21, /**<  Message type non-existent or not implemented. */
+    E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON           = 22, /**<  Message type not compatible with the protocol state. */
+    E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON                  = 23, /**<  Conditional IE error. */
+    E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON     = 24, /**<  Message not compatible with the protocol state. */
+    E_QSER_NW_PROTOCOL_ERROR_DENY_REASON                      = 25, /**<  Unspecified protocol error. */
+#endif
+    int reason = 0;
+    switch (net_reject_reason)
+    {
+    case 2://2 - IMSI unknown in HLR
+       reason=E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON;/*1*/
+       break;
+    case 3://3 - Illegal MS
+       reason=E_QSER_NW_ILLEGAL_MS_DENY_REASON;/*2*/
+       break;
+    case 4://4 IMSI unknown in VLR
+       reason=E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON;/*3*/
+       break;
+    case 5://" 5 - IMEI not accepted
+       reason=E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON;/*4*/
+       break;
+    case 6:// 6 - Illegal ME
+       reason=E_QSER_NW_ILLEGAL_ME_DENY_REASON;/*5*/
+       break;   
+    case 7://" 7 - Roaming not allowed
+    case 11://11 - PLMN not allowed"
+       reason=E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON;/*6*/
+       break;
+    case 12://12 - Location area not allowed"
+       reason=E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON;/*7*/
+       break;
+    case 13://13 - Roaming not allowed in this Location Area"
+       reason=E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON;/*8*/
+       break;
+    case 8://" 8 - No Suitable Cells in this Location Area
+    case 15://15 - No Suitable Cells in this Location Area"
+       reason=E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON;/*9*/
+       break;
+    case 9://" 9 - Network failure
+    case 17://17 - Network Failure"
+       reason=E_QSER_NW_NETWORK_FAILURE_DENY_REASON;/*10*/
+       break;
+    case 20://20 - MAC Failure
+       reason=E_QSER_NW_MAC_FAILURE_DENY_REASON;/*11*/
+       break;
+    case 21://21 - Sync Failure
+       reason=E_QSER_NW_SYNCH_FAILURE_DENY_REASON;/*12*/
+       break;  
+     case 22://22 - Congestion
+       reason=E_QSER_NW_CONGESTION_DENY_REASON;/*13*/
+       break; 
+     case 23:// 23 - GSM Authentication unacceptable
+        reason=E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON;/*14*/
+       break; 
+     case 25://25 - Not Authorized for this CSG
+       reason=E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON;/*15*/
+       break; 
+     case 32://32 - Service option not supported
+       reason=E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON;/*16*/
+       break;      
+     case 33://33 - Requested service option not subscribed
+       reason=E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON;/*17*/
+       break; 
+     case 38://38 - Call cannot be identified
+       reason=E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON;/*18*/
+       break; 
+     case 95://95 - Semantically incorrect message
+       reason=E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON;/*19*/
+       break; 
+     case 96://96 - Invalid mandatory information
+       reason=E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON;/*20*/
+       break;  
+     case 97://97 - Message type non-existent or not implemented
+       reason=E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON;/*21*/
+       break;
+     case 98:// 98 -  Message type not compatible with protocol state.
+       reason=E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON;/*22*/ /**<  Message type not compatible with the protocol state. */
+       break; 
+     case 100://100 - Conditional IE error
+       reason=E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON;/*23*/
+       break; 
+     case 101://101 - Message not compatible with protocol state
+       reason=E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON;/*24*/
+       break; 
+     case 111:
+       reason=E_QSER_NW_PROTOCOL_ERROR_DENY_REASON;/*25*/
+       break; 
+    }
+    return reason;  
+}
+
 int qser_romaing_state_qurey(int regState)
 {
     if (regState == 5)
@@ -699,6 +993,7 @@
         pt_info->voice_registration.radio_tech = qser_radio_tech_qurey(netType);       
         pt_info->voice_registration.roaming = qser_romaing_state_qurey(regState);       
         pt_info->voice_registration.registration_state = switch_nw_regstate(regState);
+        pt_info->voice_registration.deny_reason = switch_nw_deny_reason_voice(netreject);
         
         if(is_have_serve_cell(pt_info->voice_registration.registration_state))
         {  
@@ -723,6 +1018,7 @@
         pt_info->data_registration.radio_tech = qser_radio_tech_qurey(netType);      
         pt_info->data_registration.roaming = qser_romaing_state_qurey(regState);         
         pt_info->data_registration.registration_state = switch_nw_regstate(regState);
+        pt_info->data_registration.deny_reason = switch_nw_deny_reason_data(netreject);
 
         if(is_have_serve_cell(pt_info->data_registration.registration_state))
         {  
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c
index 830630d..f79c485 100644
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-adc.c
@@ -17,6 +17,9 @@
 //#include <linux/wakelock.h>

 #include <linux/pm_wakeup.h>

 

+u32 adc_query_count = 3;

+EXPORT_SYMBOL(adc_query_count);

+

 #define ZX234290_VBAT_ADC_COMPENDATE_VALUE  50

 typedef enum adc_channel

 {

@@ -352,7 +355,7 @@
 **************************************************************************/

 uint get_battery_voltage(void)

 {

-	int counter = 3;

+	int counter = adc_query_count;

 	int index=0;

 	int tmpValue=0,totalValue=0;

 	uint avgValue;

@@ -381,7 +384,7 @@
 **************************************************************************/

 uint get_adc1_voltage(void)

 {

-	int counter = 3;

+	int counter = adc_query_count;

 	int index=0;

 	int tmpValue=0,totalValue=0;

 	uint avgValue;

@@ -411,7 +414,7 @@
 //extern struct wake_lock adc_wake_lock;

 uint get_adc2_voltage(void)

 {

-	int counter = 3;

+	int counter = adc_query_count;

 	int index=0;

 	int tmpValue=0,totalValue=0;

 	uint avgValue;

diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c
index 6da76d2..172c551 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/mfd/zx234290-core.c
@@ -30,6 +30,7 @@
 #include <dma_cfg.h>
 #include <linux/reboot.h>
 
+extern u32 adc_query_count;
 
 #define	USER_RST_TO_NORMAL  	1
 
@@ -536,6 +537,23 @@
 
 DEFINE_SIMPLE_ATTRIBUTE(fops_adc_ro, debugfs_adc_get, NULL, "%llumV\n");
 
+static int debugfs_adc_count_set(void *data, u64 val)
+{
+    if (val > 0 && val <= 3) {
+        adc_query_count = (u32)val;
+        return 0;
+    }
+    return -EINVAL;
+}
+
+static int debugfs_adc_count_get(void *data, u64 *val)
+{
+    *val = adc_query_count;
+    return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(fops_adc_count, debugfs_adc_count_get, debugfs_adc_count_set, "%llu\n");
+
 static struct dentry *g_pmu_root;
 
 extern u32 int_irq_times;
@@ -579,6 +597,18 @@
 		dev_err(zx234290->dev, "debugfs_create_dir err=%d\n", IS_ERR(node));
 		goto err;
 	}
+	// Add node to set ADC query count
+	node = debugfs_create_file("set_adc_count", S_IRUGO | S_IWUGO, root, NULL, &fops_adc_count);
+	if (!node){
+		dev_err(zx234290->dev, "debugfs_create_dir err=%d\n", IS_ERR(node));
+		goto err;
+	}
+	// Add node to get ADC query count
+	node = debugfs_create_file("get_adc_count", S_IRUGO, root, NULL, &fops_adc_count);
+	if (!node){
+		dev_err(zx234290->dev, "debugfs_create_dir err=%d\n", IS_ERR(node));
+		goto err;
+	}
 	//print u32
 	debugfs_create_u32("irq_cnt", S_IRUGO, root, &int_irq_times);
 
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c
index ccc996d..630f806 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/net/core/skbuff.c
@@ -621,9 +621,9 @@
 			panic("");
 	}else{
 		if(skb->capHead){
+			v7_dma_map_area(skb->head, skb->end - skb->head + sizeof(struct skb_shared_info), DMA_FROM_DEVICE);
 			if(skb->isToap)
 				return;
-			v7_dma_map_area(skb->head, skb->end - skb->head + sizeof(struct skb_shared_info), DMA_FROM_DEVICE);
 			write_free_apbuf(skb->capHead);
 			skb->capHead = NULL;
 		}else{
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c
index 8e86270..8483024 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/binder/liblog/logd_write.c
@@ -54,6 +54,10 @@
 #include "fake_log_device.h"
 #endif
 
+/*cz.li add on 2024/7/8 for control RLOGD start*/
+int sys_log_levle = 1;
+int print_log_level = 1;
+/*cz.li add on 2024/7/8 for control RLOGD end*/
 //??¨¨??¨¤o??¨´¡Á?¨º¡À??
 long long int get_time_us()
 {
@@ -158,11 +162,11 @@
 				break;
 		}
 	}
-
-	if (prio >= ANDROID_LOG_DEBUG && ANDROID_LOG_ERROR >= prio) {
+/*cz.li add on 2024/7/8 for control RLOGD start*/
+	if (prio >= ANDROID_LOG_DEBUG && ANDROID_LOG_ERROR >= prio && prio >= print_log_level) {
 		put_to_console(mod, fmt, arg);
 	}
-
+/*cz.li add on 2024/7/8 for control RLOGD end*/
 	return ret;
 }
 
@@ -440,7 +444,39 @@
     return LOG_NAME[log_id];
 }
 #endif
-int sys_log_levle = 4;
+/*cz.li add on 2025/1/3 for control log_level start*/
+int log_level(char *level_name)
+{
+    char nv_level[10];
+    char buffer[32];
+    char cmd[128];
+    int *level = NULL;
+    sprintf(cmd, "nv show | grep %s",level_name);
+    FILE *output = popen(cmd, "r");
+    while (fgets(buffer, sizeof(buffer), output) != NULL)
+    {
+        char *equal_sign = strchr(buffer, '=');
+        strncpy(nv_level,equal_sign + 1,1);
+    }
+    pclose(output);
+    nv_level[sizeof(nv_level)-1] = '\0';
+    if (strcmp(level_name,"syslog_level") == 0)
+        level = &sys_log_levle;
+    else if (strcmp(level_name,"print_level") == 0)
+        level = &print_log_level;
+    *level = atoi(nv_level);
+    if(*level == SLOG_DEBUG)
+        *level = ANDROID_LOG_DEBUG;
+    else if(*level == SLOG_NORMAL)
+        *level = ANDROID_LOG_INFO;
+    else if(*level == SLOG_ERR)
+        *level = ANDROID_LOG_ERROR;
+    else if(*level== SLOG_OFF)
+        *level = ANDROID_LOG_SILENT;
+    else
+        *level = ANDROID_LOG_INFO;
+}
+/*cz.li add on 2025/1/3 for control log_level end*/
 static int __write_to_log_init(log_id_t log_id, struct iovec *vec, size_t nr)
 {
 #ifdef HAVE_PTHREADS
@@ -467,36 +503,8 @@
     pthread_mutex_unlock(&log_init_lock);
 #endif
 /*cz.li add on 2024/7/8 for control RLOGD start*/    
-    char nv_syslog_level[10];
-    char buffer[32];
-    FILE *output = popen("nv show | grep syslog_level", "r");
-    while (fgets(buffer, sizeof(buffer), output) != NULL)
-    {
-        char *equal_sign = strchr(buffer, '=');
-        strncpy(nv_syslog_level,equal_sign + 1,1);
-    }
-    pclose(output);
-    sys_log_levle = atoi(nv_syslog_level);
-    if(sys_log_levle == SLOG_DEBUG)
-    {
-        sys_log_levle = ANDROID_LOG_DEBUG;
-    }
-    else if(sys_log_levle == SLOG_NORMAL)
-    {
-        sys_log_levle = ANDROID_LOG_INFO;
-    }
-    else if(sys_log_levle == SLOG_ERR)
-    {
-        sys_log_levle = ANDROID_LOG_ERROR;
-    }
-    else if(sys_log_levle == SLOG_OFF)
-    {
-        sys_log_levle = ANDROID_LOG_SILENT;
-    }
-    else
-    {
-        sys_log_levle = ANDROID_LOG_INFO;
-    }
+    log_level("syslog_level");
+    log_level("print_level");
 /*cz.li add on 2024/7/8 for control RLOGD end*/
     return write_to_log(log_id, vec, nr);
 }
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c
index a81b511..430fed6 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_cc.c
@@ -1022,7 +1022,11 @@
 	if (err < 0) {

 		assert(0);

 	}

-

+	

+	//q.huang add ng-ecall code 20250407 start

+	s_ecallMsdData.call_id = id;

+	//q.huang add ng-ecall code 20250407 end

+	

 	if (6 == stat) {

 		cc_voice_stop_ring_back();

 	}

diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
index b7a262d..ecbd0ec 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
@@ -1293,7 +1293,20 @@
 			  5 - 5GS Session Management

 			  */

 			if (3 == type[count]) {

-				switch (info[count]) {

+				//LYNQ_HUANG_QING_AT_20250421_ZXW_TASK_1355_CR_202504112CA2ADB1_MODIFY_BEGIN

+				if(info[count]==124)

+				{

+					info[count] = 40;

+					asprintf(&responseStr[4], "%d", info[count]);

+				}

+				else if(info[count]>100)

+				{

+					info[count] -= 100;

+					asprintf(&responseStr[4], "%d", info[count]);

+				}

+             }                        

+			/*

+				switch (info[count]) {                

 				case 107:

 				case 108:

 				case 109:

@@ -1308,10 +1321,12 @@
 					break;

 				default:

 					break;

-				}

-			} else if (4 == type[count] && 16 == info[count]) {

+				} 					

+			} 

+			else if (4 == type[count] && 16 == info[count]) {

 				asprintf(&responseStr[4], "%d", info[count]);

-			}

+			}*/

+			//LYNQ_HUANG_QING_AT_20250421_ZXW_TASK_1355_CR_202504112CA2ADB1_MODIFY_END

 		}

 	}

 

diff --git a/update_version.sh b/update_version.sh
index 91522ca..2861b1d 100755
--- a/update_version.sh
+++ b/update_version.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
 #export LYNQ_VERSION="T106_lynq_version_ap_build_sh"
-LYNQ_AP_VERSION="T106EL-M44-A-PL-P56U11.AP.19.01"
-LYNQ_CAP_INSIDE_VERSION="CAP.19.01"
-LYNQ_CAP_VERSION="CAP.19.01"
+LYNQ_AP_VERSION="T106-MXX-PLXXXX-P56U11.AP.19.04"
+LYNQ_CAP_INSIDE_VERSION="CAP.19.04"
+LYNQ_CAP_VERSION="CAP.19.04"
 COMMIT_ID="$(git rev-parse HEAD)"
 
 LYNQ_SW_INSIDE_VERSION="LYNQ_CONFIG_VERSION = \"${LYNQ_AP_VERSION}_${LYNQ_CAP_INSIDE_VERSION}\""