diff --git a/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd b/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd
index 4d2b9cb35470134beed6892c611ec36e1ee59e6b..0b1cf79bcdf78a9c2d1a00407bad000069b48014 100644
--- a/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd
+++ b/libraries/io/nw_10GbE/src/vhdl/nw_arp_request.vhd
@@ -78,9 +78,9 @@ ARCHITECTURE rtl of nw_arp_request IS
   SIGNAL pps_cnt : NATURAL := 0;
   SIGNAL trigger : BOOLEAN := FALSE;
 
-  SIGNAL dp_field_blk_snk_in  : t_dp_sosi := c_dp_sosi_rst;
-  SIGNAL dp_field_blk_snk_out : t_dp_siso := c_dp_siso_rdy;
-
+  SIGNAL dp_field_blk_snk_in      : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL nxt_dp_field_blk_snk_in  : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL dp_field_blk_snk_out     : t_dp_siso := c_dp_siso_rdy;
 
 BEGIN
 
@@ -88,13 +88,13 @@ BEGIN
   BEGIN
     -- Set defaults
     loop_field_wires: FOR i IN c_hdr_field_arr'RANGE LOOP
-      dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, i) DOWNTO field_lo(c_hdr_field_arr, i)) <= c_hdr_field_arr(i).default(c_hdr_field_arr(i).size-1 DOWNTO 0);
+      nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, i) DOWNTO field_lo(c_hdr_field_arr, i)) <= c_hdr_field_arr(i).default(c_hdr_field_arr(i).size-1 DOWNTO 0);
     END LOOP;
     -- Overwrite fields comming from inputs
-    dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "eth_src_mac") DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac")) <= arp_sha;
-    dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_sha")     DOWNTO field_lo(c_hdr_field_arr, "arp_sha")) <= arp_sha;
-    dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_spa")     DOWNTO field_lo(c_hdr_field_arr, "arp_spa")) <= arp_spa;
-    dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_tpa")     DOWNTO field_lo(c_hdr_field_arr, "arp_tpa")) <= arp_tpa;
+    nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "eth_src_mac") DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac")) <= arp_sha;
+    nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_sha")     DOWNTO field_lo(c_hdr_field_arr, "arp_sha")) <= arp_sha;
+    nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_spa")     DOWNTO field_lo(c_hdr_field_arr, "arp_spa")) <= arp_spa;
+    nxt_dp_field_blk_snk_in.data(field_hi(c_hdr_field_arr, "arp_tpa")     DOWNTO field_lo(c_hdr_field_arr, "arp_tpa")) <= arp_tpa;
   END PROCESS;
      
   -- pps counter process setting sop, eop and valid
@@ -104,17 +104,14 @@ BEGIN
       trigger <= FALSE;
       pps_cnt <= 0;
       dp_field_blk_snk_in <= c_dp_sosi_rst;
-
     ELSIF RISING_EDGE(dp_clk) THEN
+
+      dp_field_blk_snk_in <= nxt_dp_field_blk_snk_in;
       IF trigger AND dp_field_blk_snk_out.ready = '1' AND dp_field_blk_snk_out.xon = '1' THEN
         trigger <= FALSE;
         dp_field_blk_snk_in.sop   <= '1';
         dp_field_blk_snk_in.eop   <= '1';
         dp_field_blk_snk_in.valid <= '1';
-      ELSE
-        dp_field_blk_snk_in.sop   <= '0';
-        dp_field_blk_snk_in.eop   <= '0';
-        dp_field_blk_snk_in.valid <= '0';
       END IF;
 
       IF dp_pps = '1' THEN
@@ -125,6 +122,7 @@ BEGIN
           trigger <= TRUE;
         END IF;
       END IF;
+
     END IF;
   END PROCESS;