diff --git a/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd b/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
index 79c128db179043d077812fb429e688f1b4c6522c..20a2876ce406e8d4c44e3b1410e2f2ddf3a5e693 100644
--- a/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
+++ b/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
@@ -92,6 +92,9 @@ ENTITY tr_10GbE IS
     xaui_mosi           : IN  t_mem_mosi := c_mem_mosi_rst;
     xaui_miso           : OUT t_mem_miso;
     
+    reg_eth10g_mosi     : IN  t_mem_mosi := c_mem_mosi_rst;  -- ETH10G (link status register)
+    reg_eth10g_miso     : OUT t_mem_miso; 
+    
     mdio_mosi_arr       : IN  t_mem_mosi_arr(g_nof_macs-1 DOWNTO 0) := (OTHERS=>c_mem_mosi_rst);
     mdio_miso_arr       : OUT t_mem_miso_arr(g_nof_macs-1 DOWNTO 0);
 
@@ -257,6 +260,9 @@ BEGIN
     xaui_mosi        => xaui_mosi,       -- XAUI control
     xaui_miso        => xaui_miso,
     
+    reg_eth10g_mosi  => reg_eth10g_mosi, -- ETH10G (link status register)
+    reg_eth10g_miso  => reg_eth10g_miso,
+      
     -- ST
     tx_snk_in_arr    => dp_fifo_fill_tx_src_out_arr,      -- 64 bit data @ 156 MHz
     tx_snk_out_arr   => dp_fifo_fill_tx_src_in_arr ,
diff --git a/libraries/technology/eth_10g/tech_eth_10g.vhd b/libraries/technology/eth_10g/tech_eth_10g.vhd
index 5bd36dda3a8d8d21c977076436db8ceae5f99842..0fa01196420d3fdc94175e853253bc4de8d6117b 100644
--- a/libraries/technology/eth_10g/tech_eth_10g.vhd
+++ b/libraries/technology/eth_10g/tech_eth_10g.vhd
@@ -97,12 +97,15 @@ ENTITY tech_eth_10g IS
     mm_clk           : IN  STD_LOGIC;
     mm_rst           : IN  STD_LOGIC;
     
-    mac_mosi         : IN  t_mem_mosi;                    -- MAG_10G (CSR), aggregated for all g_nof_channels
+    mac_mosi         : IN  t_mem_mosi := c_mem_mosi_rst;  -- MAG_10G (CSR), aggregated for all g_nof_channels
     mac_miso         : OUT t_mem_miso; 
     
     xaui_mosi        : IN  t_mem_mosi := c_mem_mosi_rst;  -- XAUI control
     xaui_miso        : OUT t_mem_miso;
     
+    reg_eth10g_mosi  : IN  t_mem_mosi := c_mem_mosi_rst;  -- ETH10G (link status register)
+    reg_eth10g_miso  : OUT t_mem_miso; 
+    
     -- ST
     tx_snk_in_arr    : IN  t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ 156 MHz
     tx_snk_out_arr   : OUT t_dp_siso_arr(g_nof_channels-1 DOWNTO 0); 
@@ -197,6 +200,9 @@ BEGIN
       mac_mosi         => mac_mosi,
       mac_miso         => mac_miso,
       
+      reg_eth10g_mosi  => reg_eth10g_mosi,
+      reg_eth10g_miso  => reg_eth10g_miso,
+      
       -- ST
       tx_snk_in_arr    => tx_snk_in_arr,       -- 64 bit data @ tr_ref_clk_156
       tx_snk_out_arr   => tx_snk_out_arr, 
diff --git a/libraries/technology/eth_10g/tech_eth_10g_arria10.vhd b/libraries/technology/eth_10g/tech_eth_10g_arria10.vhd
index fedeaf6986b6ad5d85fb8f1a1c416d4e6664e910..77852f697719a00064fd32bec4387492149ea6b4 100644
--- a/libraries/technology/eth_10g/tech_eth_10g_arria10.vhd
+++ b/libraries/technology/eth_10g/tech_eth_10g_arria10.vhd
@@ -58,6 +58,14 @@
 --    2 = remote fault
 --  Hence when the xgmii_link_status is OK then the other side is also OK so
 --  then it is also appropriate to release tx_snk.xon.
+--
+--  The XGMII link status can be monitored via the reg_eth10 MM register:
+--
+--    addr  data[31:0]
+--     0      [0] = tx_snk_out_arr(I).xon
+--            [1] = xgmii_tx_ready_arr(I)
+--          [3:2] = xgmii_link_status_arr(I)
+--  
 
 LIBRARY IEEE, common_lib, dp_lib, technology_lib, tech_10gbase_r_lib, tech_mac_10g_lib;
 USE IEEE.STD_LOGIC_1164.ALL;
@@ -92,6 +100,9 @@ ENTITY tech_eth_10g_arria10 IS
     mac_mosi         : IN  t_mem_mosi;         -- MAG_10G (CSR)
     mac_miso         : OUT t_mem_miso; 
     
+    reg_eth10g_mosi  : IN  t_mem_mosi;         -- ETH10G (link status register)
+    reg_eth10g_miso  : OUT t_mem_miso; 
+    
     -- ST
     tx_snk_in_arr    : IN  t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ clk_156
     tx_snk_out_arr   : OUT t_dp_siso_arr(g_nof_channels-1 DOWNTO 0); 
@@ -108,6 +119,8 @@ END tech_eth_10g_arria10;
 
 ARCHITECTURE str OF tech_eth_10g_arria10 IS
 
+  SIGNAL i_tx_snk_out_arr      : t_dp_siso_arr(g_nof_channels-1 DOWNTO 0);
+  
   -- MAG_10G control status registers
   SIGNAL mac_mosi_arr          : t_mem_mosi_arr(g_nof_channels-1 DOWNTO 0);
   SIGNAL mac_miso_arr          : t_mem_miso_arr(g_nof_channels-1 DOWNTO 0); 
@@ -120,21 +133,33 @@ ARCHITECTURE str OF tech_eth_10g_arria10 IS
   SIGNAL xgmii_tx_ready_arr    : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);                 -- 1 bit, from PHY 10gbase_r
   SIGNAL xgmii_tx_dc_arr       : t_xgmii_dc_arr(g_nof_channels-1 DOWNTO 0);    -- 72 bit
   SIGNAL xgmii_rx_dc_arr       : t_xgmii_dc_arr(g_nof_channels-1 DOWNTO 0);    -- 72 bit
+  
+  -- Link status monitor
+  CONSTANT c_mem_reg_eth10g_adr_w     : NATURAL := 1;
+  CONSTANT c_mem_reg_eth10g_dat_w     : NATURAL := 32;
+  CONSTANT c_mem_reg_eth10g_nof_data  : NATURAL := 1;
+  CONSTANT c_mem_reg_eth10g           : t_c_mem := (c_mem_reg_rd_latency, c_mem_reg_eth10g_adr_w , c_mem_reg_eth10g_dat_w , c_mem_reg_eth10g_nof_data, 'X');
 
+  SIGNAL reg_eth10g_mosi_arr          : t_mem_mosi_arr(g_nof_channels-1 DOWNTO 0);
+  SIGNAL reg_eth10g_miso_arr          : t_mem_miso_arr(g_nof_channels-1 DOWNTO 0); 
+  
+  SIGNAL mm_reg_eth10g_arr            : t_slv_32_arr(g_nof_channels-1 DOWNTO 0);
+  
 BEGIN
-                   
+  tx_snk_out_arr <= i_tx_snk_out_arr;
+  
   gen_mac : FOR I IN 0 TO g_nof_channels-1 GENERATE
   
-    tx_snk_out_arr(I).ready <= mac_snk_out_arr(I).ready;  -- pass on MAC cycle accurate backpressure
+    i_tx_snk_out_arr(I).ready <= mac_snk_out_arr(I).ready;  -- pass on MAC cycle accurate backpressure
     
     p_xon_flow_control : PROCESS(clk_156)
       VARIABLE v_xgmii_link_status : STD_LOGIC_VECTOR(c_tech_mac_10g_link_status_w-1 DOWNTO 0);
     BEGIN
       IF rising_edge(clk_156) THEN
-        tx_snk_out_arr(I).xon <= '0';
+        i_tx_snk_out_arr(I).xon <= '0';
         v_xgmii_link_status := xgmii_link_status_arr(I) AND g_link_status_check;  -- use mask to check Tx, Rx, both or none. 
         IF xgmii_tx_ready_arr(I)='1' AND v_xgmii_link_status="00" THEN
-          tx_snk_out_arr(I).xon <= '1';  -- XON when Tx PHY is ready and XGMII is ok
+          i_tx_snk_out_arr(I).xon <= '1';  -- XON when Tx PHY is ready and XGMII is ok
         END IF;
       END IF;
     END PROCESS;
@@ -196,11 +221,44 @@ BEGIN
     tx_serial_arr      => serial_tx_arr,
     rx_serial_arr      => serial_rx_arr
   );
+  
+  
+  gen_reg_eth10g : FOR I IN 0 TO g_nof_channels-1 GENERATE
+    mm_reg_eth10g_arr(I) <= RESIZE_UVEC(xgmii_link_status_arr(I) & xgmii_tx_ready_arr(I) & i_tx_snk_out_arr(I).xon, c_mem_reg_eth10g_dat_w);   
+    
+    u_reg_map : ENTITY common_lib.common_reg_r_w_dc
+    GENERIC MAP (
+      g_cross_clock_domain => TRUE,             
+      g_in_new_latency     => 0,                
+      g_readback           => FALSE,            
+      g_reg                => c_mem_reg_eth10g, 
+      g_init_reg           => (OTHERS => '0')   
+    )
+    PORT MAP (
+      -- Clocks and reset
+      mm_rst      => mm_rst,          
+      mm_clk      => mm_clk,          
+      st_rst      => rst_156,     
+      st_clk      => clk_156,     
+      
+      -- Memory Mapped Slave in mm_clk domain
+      sla_in      => reg_eth10g_mosi_arr(I), 
+      sla_out     => reg_eth10g_miso_arr(I), 
+      
+      -- MM registers in st_clk domain
+      reg_wr_arr  => OPEN,          
+      reg_rd_arr  => OPEN,          
+      in_new      => '1',           
+      in_reg      => mm_reg_eth10g_arr(I), 
+      out_reg     => OPEN           
+    );
+  END GENERATE;
+  
     
   -----------------------------------------------------------------------------
   -- MM bus mux
   -----------------------------------------------------------------------------
-  u_common_mem_mux : ENTITY common_lib.common_mem_mux
+  u_common_mem_mux_mac : ENTITY common_lib.common_mem_mux
   GENERIC MAP (    
     g_nof_mosi    => g_nof_channels,
     g_mult_addr_w => func_tech_mac_10g_csr_addr_w(c_tech_arria10) 
@@ -212,4 +270,16 @@ BEGIN
     miso_arr => mac_miso_arr
   );  
 
+  u_common_mem_mux_eth10g : ENTITY common_lib.common_mem_mux
+  GENERIC MAP (    
+    g_nof_mosi    => g_nof_channels,
+    g_mult_addr_w => c_mem_reg_eth10g_adr_w 
+  )
+  PORT MAP (
+    mosi     => reg_eth10g_mosi,
+    miso     => reg_eth10g_miso,
+    mosi_arr => reg_eth10g_mosi_arr,
+    miso_arr => reg_eth10g_miso_arr
+  );  
+  
 END str;