diff --git a/modules/wrsw_rtu/rtu_port_new.vhd b/modules/wrsw_rtu/rtu_port_new.vhd
index f500bd8cadc33801bcdd2aed0c6c5308c1500407..5de327e653b46f293bf90100c7e51eb6306bc60c 100644
--- a/modules/wrsw_rtu/rtu_port_new.vhd
+++ b/modules/wrsw_rtu/rtu_port_new.vhd
@@ -627,8 +627,13 @@ begin
 
   -- we concatenate separately Switch's ports (g_num_ports-1 downto 0) and the rest (NIC) so that
   -- frames go to NIC based on any of the decisions (fast or full match)
-  fast_and_full_mask  <= (fast_match.port_mask(c_RTU_MAX_PORTS-1 downto g_num_ports) or full_match.port_mask(c_RTU_MAX_PORTS-1 downto g_num_ports)) &
-                         (fast_match.port_mask(g_num_ports-1 downto 0)              and full_match.port_mask(g_num_ports-1 downto  0));
+--   fast_and_full_mask  <= (fast_match.port_mask(c_RTU_MAX_PORTS-1 downto g_num_ports) or full_match.port_mask(c_RTU_MAX_PORTS-1 downto g_num_ports)) &
+--                          (fast_match.port_mask(g_num_ports-1 downto 0)              and full_match.port_mask(g_num_ports-1 downto  0));
+
+  -- TODO: HACK: FUCK
+  -- stupid temporary hack, the problem is that FAST MATCH does not read (for some reason) masks of VIDs different then 0...
+  -- this is only for the latency tests, later needs to be changee
+  fast_and_full_mask  <= full_match.port_mask;
 
   -- the above solution migh not be the best - eventually, we don't really want so much traffic 
   -- to go to NIC...(this is mainly to prevent the "unrecognized" traffic to be forwarded to NIC)
diff --git a/modules/wrsw_rtu/xwrsw_rtu_new.vhd b/modules/wrsw_rtu/xwrsw_rtu_new.vhd
index 9936bf59d100262062e226f10e4f106e03a8e0ad..bc219540ed8eb1c999ea7f115c9ee8a3573c8156 100644
--- a/modules/wrsw_rtu/xwrsw_rtu_new.vhd
+++ b/modules/wrsw_rtu/xwrsw_rtu_new.vhd
@@ -663,7 +663,7 @@ begin
   regs_towb.rx_ff_mac_r1_id_i    <= std_logic_vector(to_unsigned(c_ff_single_macs_number, 8));
   regs_towb.rx_ff_mac_r1_hi_id_i <= std_logic_vector(to_unsigned(c_ff_range_macs_number, 16));
 
-  regs_towb.gcr_rtu_version_i    <= x"7";
+  regs_towb.gcr_rtu_version_i    <= x"8";
 
   -- RTU Extension index-access configration regiters for Fast Forward MACs 
   p_rx_registers : process(clk_sys_i)
diff --git a/sim/simdrv_rtu.sv b/sim/simdrv_rtu.sv
index c2523a5790ca6c4c4676a30701e2e6866cc7085e..dbd6502f018e401fad44050fc51d8d533e8f9e8e 100644
--- a/sim/simdrv_rtu.sv
+++ b/sim/simdrv_rtu.sv
@@ -54,7 +54,7 @@ class CRTUSimDriver;
    extern task set_bus(CBusAccessor _bus, int _base_addr);
    extern task add_hash_entry(rtu_filtering_entry_t ent);
    extern task set_port_config(int port, bit pass_all, bit pass_bpdu, bit learn_en, bit dbg = 0);
-   extern task add_static_rule(bit[7:0] dmac[], bit[31:0] dpm);
+   extern task add_static_rule(bit[7:0] dmac[], bit[31:0] dpm, bit[7:0] fid=0);
    extern task add_vlan_entry(int vlan_id, rtu_vlan_entry_t ent);
    extern task poll_ufifo();
    
@@ -337,14 +337,14 @@ function bit[15:0] CRTUSimDriver::mac_hash(bit[7:0] mac[], bit[7:0] fid);
 endfunction // mac_hash
 
 
-task CRTUSimDriver::add_static_rule(bit[7:0] dmac[], bit[31:0] dpm);
+task CRTUSimDriver::add_static_rule(bit[7:0] dmac[], bit[31:0] dpm,  bit[7:0] fid=0);
    rtu_filtering_entry_t ent;
 
    ent.mac 	      = dmac;
    ent.valid 	      = 1'b1;
 //   ent.end_of_bucket  = 1;
    ent.is_bpdu = 0;
-   ent.fid = 0;
+   ent.fid = fid;
    ent.port_mask_dst = dpm;   
    ent.port_mask_src = 32'hffffffff;
    ent.drop_when_source=0;
diff --git a/testbench/scb_top/main.sv b/testbench/scb_top/main.sv
index 537593d619ffd778bf701c5e38e482d4154016c0..b0d13f71e475ee944751d7081c7237949851cdba 100644
--- a/testbench/scb_top/main.sv
+++ b/testbench/scb_top/main.sv
@@ -24,7 +24,7 @@ module main;
    reg rst_n=0;
    parameter g_max_ports = 18;   
    parameter g_num_ports = 18;
-   parameter g_mvlan     = 4; //max simulation vlans
+   parameter g_mvlan     = 10; //max simulation vlans
    parameter g_max_dist_port_number = 4;
     typedef enum {
        PAUSE=0,
@@ -150,10 +150,16 @@ module main;
    int prio_val                           = 0; 
    int pvid                               = 0; 
                                              //      mask     , fid , prio,has_p,overr, drop   , vid, valid
-   t_sim_vlan_entry sim_vlan_tab[g_mvlan] = '{'{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 0  , 1'b1 },
-                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 1  , 1'b1 },
-                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 100, 1'b1 },
-                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 200, 1'b1 }};
+   t_sim_vlan_entry sim_vlan_tab[g_mvlan] = '{'{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 0, 1'b1 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 1, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 2, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 3, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 4, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 5, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 6, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 7, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 8, 1'b0 },
+                                              '{'{32'hFFFFFFFF, 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 9, 1'b0 }};
    integer tru_config_opt                 = 0;
    PFilterMicrocode mc                    = new;
    byte BPDU_templ[]                      ='{'h01,'h80,'hC2,'h00,'h00,'h00, //0 - 5: dst addr
@@ -1456,7 +1462,8 @@ module main;
    * simulating ungraceful loss of physic signal....
    * 
    **/
-//*
+/*
+
   initial begin
     portUnderTest        = 18'b000000000000000110;
     g_tru_enable         = 1;
@@ -1473,6 +1480,59 @@ module main;
     g_enable_pck_gaps    = 0;
     g_force_payload_size = 512;
   end
+*/
+ /** ***************************   test scenario 51  ************************************* **/ 
+  /*
+   *  VLAN + FF bug
+   **/
+/*
+  initial begin
+    portUnderTest        = 18'b000000000010000001;
+    
+    g_is_qvlan           = 1; //send VLAN-tagged frames
+    g_do_vlan_config     = 1; //enable vlan confgi
+    qmode                = 2;
+    mac_br               = 1; // fast forward broadcast
+    hp_prio_mask         = 8'b0;
+    sim_vlan_tab[1] = '{'{32'b11        , 8'h1, 3'h0, 1'b0, 1'b0, 1'b0}, 1  , 1'b1 };
+    sim_vlan_tab[2] = '{'{32'b110       , 8'h2, 3'h0, 1'b0, 1'b0, 1'b0}, 2  , 1'b1 };
+    sim_vlan_tab[3] = '{'{32'b1100      , 8'h3, 3'h0, 1'b0, 1'b0, 1'b0}, 3  , 1'b1 };
+    sim_vlan_tab[4] = '{'{32'b11000     , 8'h4, 3'h0, 1'b0, 1'b0, 1'b0}, 4  , 1'b1 };
+    sim_vlan_tab[5] = '{'{32'b110000    , 8'h5, 3'h0, 1'b0, 1'b0, 1'b0}, 5  , 1'b1 };
+    sim_vlan_tab[6] = '{'{32'b1100000   , 8'h6, 3'h0, 1'b0, 1'b0, 1'b0}, 6  , 1'b1 };
+    sim_vlan_tab[7] = '{'{32'b11000000  , 8'h7, 3'h0, 1'b0, 1'b0, 1'b0}, 7  , 1'b1 };
+    sim_vlan_tab[8] = '{'{32'b110000000 , 8'h8, 3'h0, 1'b0, 1'b0, 1'b0}, 8  , 1'b1 };
+    sim_vlan_tab[9] = '{'{32'b1100000000, 8'h9, 3'h0, 1'b0, 1'b0, 1'b0}, 9  , 1'b1 };
+
+                         // tx  ,rx ,opt
+    trans_paths[0]       = '{0  ,2 , 13 }; // send braodcast to VLAN=3
+    trans_paths[7]       = '{7  ,0 , 10 };//send broadcast to VLAN=1
+//     trans_paths[2]       = '{2  ,15 , 0 };
+
+  end
+*/
+ /** ***************************   test scenario 51  ************************************* **/ 
+  /*
+   *  VLAN + FF bug
+   **/
+//*
+  initial begin
+    portUnderTest        = 18'b000000000010000000;
+    
+    g_is_qvlan           = 1; //send VLAN-tagged frames
+    g_do_vlan_config     = 1; //enable vlan confgi
+    qmode                = 2;
+//     mac_br               = 1; // fast forward broadcast
+    hp_prio_mask         = 8'b0;
+                       //      mask     , fid , prio,has_p,overr, drop   , vid, valid
+    sim_vlan_tab[0] = '{'{32'hF         , 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 0  , 1'b1 };
+    sim_vlan_tab[1] = '{'{32'hF0        , 8'h0, 3'h0, 1'b0, 1'b0, 1'b0}, 1  , 1'b1 };
+                         // tx  ,rx ,opt
+    
+    trans_paths[7]       = '{7  ,4 , 10 };//send broadcast to VLAN=1
+//     trans_paths[0]       = '{2  ,15 , 0 };
+
+  end
 //*/
 //////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////
@@ -1537,7 +1597,7 @@ module main;
         tmpl.dst       = '{'h01, 'h80, 'hC2, 'h00, 'h00, 'h00}; //BPDU
       else if(opt==3)
         tmpl.dst       = '{17, 'h50, 'hca, 'hfe, 'hba, 'hbe};
-      else if(opt==4 || opt==10 || opt==201 || opt == 203 || opt == 204 || opt == 205 || opt == 206 || opt == 207)
+      else if(opt==4 || opt==10 || opt==13 || opt==201 || opt == 203 || opt == 204 || opt == 205 || opt == 206 || opt == 207)
         tmpl.dst       = '{'hFF, 'hFF, 'hFF, 'hFF, 'hFF, 'hFF}; // broadcast      
       else if(opt==5)
         tmpl.dst       = '{'h11, 'h50, 'hca, 'hfe, 'hba, 'hbe}; // single Fast Forward
@@ -1570,7 +1630,9 @@ module main;
         tmpl.is_q      = is_q;
 
 
-      if(opt==10)
+      if(opt==13)
+        tmpl.vid     = 3;
+      else if(opt==10)
         tmpl.vid     = 1;
       else
         tmpl.vid     = 0;
@@ -2182,6 +2244,10 @@ module main;
       rtu.add_static_rule('{'h01, 'h80, 'hc2, 'h00, 'h00, 'h00}, (1<<18));
       rtu.add_static_rule('{'h01, 'h80, 'hc2, 'h00, 'h00, 'h01}, (1<<18));
       
+      rtu.add_static_rule('{'hFF, 'hFF, 'hFF, 'hFF, 'hFF, 'hFF}, 'hFFFFFFFF /*mask*/, 0 /*FID*/);
+//       rtu.add_static_rule('{'hFF, 'hFF, 'hFF, 'hFF, 'hFF, 'hFF}, 'hFFFFFFFF /*mask*/, 1 /*FID*/);
+//       rtu.add_static_rule('{'hFF, 'hFF, 'hFF, 'hFF, 'hFF, 'hFF}, 'hFFFFFFFF /*mask*/, 2 /*FID*/);
+      
       if(g_LACP_scenario == 2)
         begin
           for(int i = 0;i<LACPdistro.distPortN;i++)
diff --git a/top/bare_top/scb_top_bare.vhd b/top/bare_top/scb_top_bare.vhd
index 7a73be6f09df860b861af67e5e20267b1954261b..2f9a477493d0dbad2b5a7d10ded7d635dc5c98da 100644
--- a/top/bare_top/scb_top_bare.vhd
+++ b/top/bare_top/scb_top_bare.vhd
@@ -139,7 +139,7 @@ end scb_top_bare;
 
 architecture rtl of scb_top_bare is
 
-  constant c_GW_VERSION    : std_logic_vector(31 downto 0) := x"10_05_13_02"; --DD_MM_YY_VV
+  constant c_GW_VERSION    : std_logic_vector(31 downto 0) := x"24_05_13_00"; --DD_MM_YY_VV
   constant c_NUM_WB_SLAVES : integer := 16;
   constant c_NUM_PORTS     : integer := g_num_ports;
   constant c_MAX_PORTS     : integer := 18;