diff --git a/libraries/io/eth/src/vhdl/eth.vhd b/libraries/io/eth/src/vhdl/eth.vhd
index 2d89af1baeeb0a14d70a767d4c395e9b825ffa1a..50664c8bfb5fc905fb5d01349e68e27bb5e44994 100644
--- a/libraries/io/eth/src/vhdl/eth.vhd
+++ b/libraries/io/eth/src/vhdl/eth.vhd
@@ -135,6 +135,9 @@ ARCHITECTURE str OF eth IS
   SIGNAL eth_rx_siso          : t_dp_siso;
   SIGNAL eth_rx_sosi          : t_dp_sosi;
   
+  SIGNAL rx_frm_discard         : STD_LOGIC := '0';
+  SIGNAL rx_eth_discard         : STD_LOGIC := '0';
+
   SIGNAL rx_frame_rd            : STD_LOGIC;
   SIGNAL rx_frame_ack           : STD_LOGIC;
   SIGNAL rx_frame_done          : STD_LOGIC;
@@ -337,10 +340,37 @@ BEGIN
     -- Streaming Source
     src_in          => rx_hdr_siso,
     src_out         => rx_hdr_sosi,
+
+    -- Frame control
+    frm_discard     => rx_eth_discard,
     
     -- Header info
     hdr_status      => rx_hdr_status
   );
+
+  -- comment next line out to disable frame discard function
+  --rx_eth_discard <= rx_frm_discard;
+
+  u_frm_discard : ENTITY work.eth_frm_discard
+  GENERIC MAP (
+    g_support_dhcp       => TRUE,
+    g_support_udp_onload => FALSE
+  )
+  PORT MAP (
+    -- Clocks and reset
+    rst             => st_rst,
+    clk             => st_clk,
+    
+    -- MM control
+    reg_config      => reg_config,
+    reg_demux       => reg_demux,
+    
+    -- ST info
+    hdr_status      => rx_hdr_status,
+    
+    -- Frame discard decision
+    frm_discard     => rx_frm_discard
+  );
   
   
   ------------------------------------------------------------------------------
diff --git a/libraries/io/eth/src/vhdl/eth_hdr.vhd b/libraries/io/eth/src/vhdl/eth_hdr.vhd
index 12336bef2e5b74f9311bc80ba558b3ee1cbed1ef..3e97f291891a2c7627c6849ad959d10881bf4902 100644
--- a/libraries/io/eth/src/vhdl/eth_hdr.vhd
+++ b/libraries/io/eth/src/vhdl/eth_hdr.vhd
@@ -113,6 +113,8 @@ BEGIN
       hdr_words_arr   => i_hdr_words_arr,
       hdr_status      => i_hdr_status,
       
+      frm_discard     => frm_discard,
+
       -- ST interface
       snk_in_word_cnt => snk_in_word_cnt,
       snk_in          => snk_in,
diff --git a/libraries/io/eth/src/vhdl/eth_hdr_ctrl.vhd b/libraries/io/eth/src/vhdl/eth_hdr_ctrl.vhd
index 34757f8cc455d05ed4a3c1e6f055e88628a74b26..84a2e743984959211cadb3a5951d2aef1937c973 100644
--- a/libraries/io/eth/src/vhdl/eth_hdr_ctrl.vhd
+++ b/libraries/io/eth/src/vhdl/eth_hdr_ctrl.vhd
@@ -44,6 +44,7 @@ ENTITY eth_hdr_ctrl IS
     hdr_words_arr   : IN  t_network_total_header_32b_arr;
     hdr_status      : IN  t_eth_hdr_status;
     
+    -- Frame control
     frm_discard     : IN  STD_LOGIC := '0';
     
     -- ST interface