diff --git a/simics-workspace/include/afdx-exchange.dml b/simics-workspace/include/afdx-exchange.dml
index bdbe6b9..653be5c 100644
--- a/simics-workspace/include/afdx-exchange.dml
+++ b/simics-workspace/include/afdx-exchange.dml
@@ -5,6 +5,7 @@ import "runtime-info.dml";
 typedef struct {
 	void (*send_frame)(conf_object_t *obj, uint8 *data, uint32 size);
     void (*config_bandwidth)(conf_object_t *obj, uint32 max_bandwidth);
+    void (*init_vxworks_ok)(conf_object_t *obj, bool ok_flag);
 } ieee_802_3_mac_interface_t;

 typedef struct {
diff --git a/simics-workspace/include/interface.dml b/simics-workspace/include/interface.dml
index fec7fda..76f1e4a 100644
--- a/simics-workspace/include/interface.dml
+++ b/simics-workspace/include/interface.dml
@@ -26,3 +26,7 @@ typedef struct {
 typedef struct {
     void (*transmit_runtime_info)(conf_object_t *obj, Runtime_Info *runtime_info);
 } transmit_runtime_info_between_afdxES2_and_RDC_interface_t;
+
+typedef struct {
+    void (*init_vxworks_ok)(conf_object_t *obj, bool ok_flag);
+} Transmit_Vxworks_Init_Info_interface_t;
diff --git a/simics-workspace/modules/RDC/RDC.dml b/simics-workspace/modules/RDC/RDC.dml
index a0cfef5..78c5d37 100644
--- a/simics-workspace/modules/RDC/RDC.dml
+++ b/simics-workspace/modules/RDC/RDC.dml
@@ -224,6 +224,8 @@ extern typedef  struct

 data QT_RDC_CONF_VALUE_t *pQtRdcConfValue;
+data bool vxworks_init_ok_flag;
+
 /* 2014-09-17 added, end */
 extern int getAfdxFrameBlockNum();
 extern int hwa_load_conf_file();
@@ -299,6 +301,12 @@ implement Send_To_RDC {
 	}
 }

+implement Transmit_Vxworks_Init_Info {
+    method init_vxworks_ok(bool ok_flag) {
+        $vxworks_init_ok_flag = true;
+    }
+}
+
 connect ARINC664_2 {
     parameter documentation = "Send frame to ARINC664_2";
 	parameter configuration = "optional";
@@ -690,18 +698,20 @@ constant PORT_DATA_SIZE = 8;     // too big , sizeoftype(uint8) + sizeoftype(uin
 data int recv_num;
 method socket_loop_recv() {
 	local RX_DATA rx[16];
-
-	recv_from_429(&rx);
-
-	local uint8 i = 0;
-	for (; i < 16; ++i) {
-		if (rx[i].is_vaild == 1) {
-			$recv_num++;
-			//log "info" : "Rchannel: %d, data %x ,recv num is %d", i + 1, rx[i].rx_data, $recv_num;
-			call $A429ToAfdx(i + 1, rx[i].rx_data);
-		}
-	}
-
+
+    if ($vxworks_init_ok_flag) {
+        recv_from_429(&rx);
+
+        local uint8 i = 0;
+        for (; i < 16; ++i) {
+            if (rx[i].is_vaild == 1) {
+                $recv_num++;
+                //log "info" : "Rchannel: %d, data %x ,recv num is %d", i + 1, rx[i].rx_data, $recv_num;
+                call $A429ToAfdx(i + 1, rx[i].rx_data);
+            }
+        }
+    }
+
 	after (0.0001) call $socket_loop_recv();
 }

diff --git a/simics-workspace/modules/afdxES/pci-register.dml b/simics-workspace/modules/afdxES/pci-register.dml
index 2244bd8..9249d91 100644
--- a/simics-workspace/modules/afdxES/pci-register.dml
+++ b/simics-workspace/modules/afdxES/pci-register.dml
@@ -6,6 +6,7 @@ import "quick-sort.dml";
 import "log.dml";
 import "tomiddleware.dml";

+
 // extern void LoadCfgTo664Middleware();
 // Basic bank declaration
 bank pci_config {
@@ -552,7 +553,10 @@ bank pciport{
             call $QuickSortRMCamArray($rm_cfg_cam_array);
             call $InitVLEnableInfo();
             switch ($middleware_mode) {
-            case To429Middleware: case ToIMAMiddleware:
+            case To429Middleware:
+                $phyA.ieee_802_3_mac.init_vxworks_ok(true);
+                break;
+            case ToIMAMiddleware:
                 break;
             case To664Middleware:
 				// call $ Write_Config_All();
diff --git a/simics-workspace/modules/afdxES2/afdxES2.dml b/simics-workspace/modules/afdxES2/afdxES2.dml
index c05b5e4..62e5643 100644
--- a/simics-workspace/modules/afdxES2/afdxES2.dml
+++ b/simics-workspace/modules/afdxES2/afdxES2.dml
@@ -51,6 +51,15 @@ connect RDC {
 	}
 }

+connect Vxworks {
+	parameter documentation = "Transmit vxworks init info";
+    parameter configuration = "optional";
+
+    interface Transmit_Vxworks_Init_Info {
+        parameter c_type = "Transmit_Vxworks_Init_Info_interface_t";
+    }
+}
+
 implement transmit_runtime_info_between_afdxES2_and_RDC {
     method transmit_runtime_info(Runtime_Info *runtime_info) {
         $afdxES.transmit_runtime_info_between_afdxES_and_afdxES2.transmit_runtime_info(runtime_info);
@@ -198,8 +207,13 @@ implement ieee_802_3_mac {
     method config_bandwidth(uint32 max_bandwidth) {
         $phy_max_bandwidth = max_bandwidth;
     }
+
+    method init_vxworks_ok(bool ok_flag) {
+        $Vxworks.Transmit_Vxworks_Init_Info.init_vxworks_ok(true);
+    }
 }

+
 attribute record_mib_cycle {
     parameter documentation = "";
     parameter type = "f";