diff --git a/libraries/io/nw_10GbE/src/vhdl/nw_ping_response.vhd b/libraries/io/nw_10GbE/src/vhdl/nw_ping_response.vhd index d177364c5309c08e251aa5dc598018cde0a7a392..e0bec9f240cebfa95bc632875830aaf4c9369fc9 100644 --- a/libraries/io/nw_10GbE/src/vhdl/nw_ping_response.vhd +++ b/libraries/io/nw_10GbE/src/vhdl/nw_ping_response.vhd @@ -60,7 +60,7 @@ ARCHITECTURE rtl of nw_ping_response IS CONSTANT c_dp_fifo_size : NATURAL := 16; CONSTANT c_cin_w : NATURAL := 4; - CONSTANT c_pipeline : NATURAL := c_network_total_header_64b_nof_words + 5; -- Header length and 5 more pipeline cycles to allow for the other states + CONSTANT c_pipeline : NATURAL := c_network_total_header_64b_nof_words + 3; -- Header length and 3 more pipeline cycles to allow for the other states TYPE t_state IS (s_idle, s_capture, s_check, s_sum, s_output, s_wait); @@ -164,18 +164,14 @@ BEGIN v.src_out.data(c_halfword_w*4 -1 DOWNTO c_halfword_w *3) := r.ip_checksum; ELSIF r.word_cnt = 4 THEN -- insert icmp checksum v.src_out.data(c_halfword_w*2 -1 DOWNTO c_halfword_w) := r.icmp_checksum; - END IF; - - IF dp_pipeline_src_out.eop = '1' THEN + ELSIF dp_pipeline_src_out.eop = '1' THEN v.state := s_wait; END IF; END IF; WHEN s_wait => - v.src_out.valid := '0'; - v.src_out.sop := '0'; - v.src_out.eop := '0'; - IF dp_fifo_sc_rd_emp = '1' THEN -- Wait until ping respose has left the fifo + v.src_out := c_dp_sosi_rst; + IF dp_fifo_sc_rd_emp = '1' THEN -- Wait until ping response has left the fifo v := c_r_rst; END IF;