Index: /branches/rel_apv_10_7_2/tools/image_creator.sh
===================================================================
--- /branches/rel_apv_10_7_2/tools/image_creator.sh	(revision 38823)
+++ /branches/rel_apv_10_7_2/tools/image_creator.sh	(working copy)
@@ -193,6 +193,10 @@
         echo cloud_platform=${IMAGE_TARGET} >> ./files/loader.conf
         echo dhcp_enabled_all=yes >> ./files/loader.conf
         sed -i "s/nullconsole/comconsole/g" ./files/loader.conf
+    elif [ "x$IMAGE_TARGET" = "xgcp" ]; then
+        echo cloud_platform=${IMAGE_TARGET} >> ./files/loader.conf
+        echo dhcp_enabled_all=yes >> ./files/loader.conf
+        sed -i "s/nullconsole/comconsole/g" ./files/loader.conf
     fi
     if [ "x$DEFAULT_LICENSE" = "xyes" ]; then
         echo vapv_default_license=yes >> ./files/loader.conf
Index: /branches/rel_apv_10_7_2/usr/click/lib/libintel_dpdk/lib/librte_ether/rte_ethdev.c
===================================================================
--- /branches/rel_apv_10_7_2/usr/click/lib/libintel_dpdk/lib/librte_ether/rte_ethdev.c	(revision 38823)
+++ /branches/rel_apv_10_7_2/usr/click/lib/libintel_dpdk/lib/librte_ether/rte_ethdev.c	(working copy)
@@ -3444,8 +3444,10 @@
 	} else if ((strcmp(driver_name, "net_txgbe") ==0) ||
 			  (strcmp(driver_name, "net_ngbe") ==0)) {
 		return dev_info.max_rx_queues;
-	}else if (strcmp(driver_name, "net_e1000_igb") == 0){
+	} else if (strcmp(driver_name, "net_e1000_igb") == 0){
 		return 4;
+	} else if (strcmp(driver_name, "net_virtio") == 0) {
+		return dev_info.max_rx_queues;
 	} else {
 		return 1;
 	}
Index: /branches/rel_apv_10_7_2/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_api.symlist
===================================================================
--- /branches/rel_apv_10_7_2/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_api.symlist	(revision 38823)
+++ /branches/rel_apv_10_7_2/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_api.symlist	(working copy)
@@ -381,10 +381,11 @@
 http_status_code
 passive_http_timer_list
 hc_enable
-vipstats
-passive_hc_enable
-force_sw_ssl
-slb_proxy_protocol_v1_flags
+vipstats
+passive_hc_enable
+force_sw_ssl
+slb_proxy_protocol_v1_flags
 slb_proxy_protocol_v2_flags
 if_dpdk_set_ha_hb_port_if
-diameter_config_shm_attach
\ No newline at end of file
+diameter_config_shm_attach
+cloud_platform
\ No newline at end of file
Index: /branches/rel_apv_10_7_2/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_if_dpdk_host.c
===================================================================
--- /branches/rel_apv_10_7_2/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_if_dpdk_host.c	(revision 38823)
+++ /branches/rel_apv_10_7_2/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_if_dpdk_host.c	(working copy)
@@ -329,6 +329,7 @@
 extern int vm_ndomains;
 extern int vxlan_enable;
 extern int max_vxlan;
+extern char cloud_platform[16];
 
 static void if_dpdk_free_pcap_context(struct if_dpdk_host_context *ctx);
 static void if_dpdk_eth_send_pkts_context(struct if_dpdk_host_context* ctx, void **m, int nb_pkts, struct rte_mempool *mp);
@@ -1848,6 +1849,12 @@
 		_tmp_port_conf.rxmode.jumbo_frame = 1;
 	}
 
+	/* 2025/1/6: GCP instance net_virtio NIC doesn't support hw vlan filter */
+	if (dev_info.driver_name != NULL && strcmp(dev_info.driver_name, "net_virtio") == 0 &&
+		strstr(cloud_platform, "gcp") != 0) {
+		_tmp_port_conf.rxmode.hw_vlan_filter = 0;
+	}
+
 	if (rte_eth_dev_configure(port_id, rx_queue_num, tx_queue_num, &_tmp_port_conf) < 0) {
 		printf("configure device %u failed\n", port_id);
 		goto fail;
