diff --git a/libraries/io/eth/src/vhdl/eth_buffer.vhd b/libraries/io/eth/src/vhdl/eth_buffer.vhd
index d04b92c5dae8ed3df91a4cd1c8dbe700c3b8d15c..2a0772c45f118b7a1bdeee960314f0068fc52f68 100644
--- a/libraries/io/eth/src/vhdl/eth_buffer.vhd
+++ b/libraries/io/eth/src/vhdl/eth_buffer.vhd
@@ -58,9 +58,9 @@ END eth_buffer;
 
 ARCHITECTURE str OF eth_buffer IS
 
-  CONSTANT c_nof_frames       : NATURAL := 2;                                                     -- support at least 2 max size frames in the FIFO
+  CONSTANT c_nof_frames       : NATURAL := 4;                                                     -- support at least 2 max size frames in the FIFO
   CONSTANT c_fifo_nof_words   : NATURAL := 2**(ceil_log2(c_nof_frames * c_eth_frame_nof_words));  -- = 1024 > 2*380
-  CONSTANT c_fifo_almost_full : NATURAL := c_fifo_nof_words-64;                                   -- use sufficient margin to account for latencies
+  CONSTANT c_fifo_almost_full : NATURAL := c_fifo_nof_words-380-20;                               -- use sufficient margin to account for 1 packet (1520 bytes) + 20 latency
   
   TYPE t_state_enum IS (
     s_idle,