]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
*** empty log message ***
authorhadeshyp <hadeshyp>
Thu, 19 Jul 2012 18:32:33 +0000 (18:32 +0000)
committerhadeshyp <hadeshyp>
Thu, 19 Jul 2012 18:32:33 +0000 (18:32 +0000)
gbe2_ecp3/trb_net16_gbe_frame_receiver.vhd
gbe2_ecp3/trb_net16_gbe_main_control.vhd
gbe2_ecp3/trb_net16_gbe_response_constructor_SCTRL.vhd

index 7fb7f207862a5731f237a66d0fd896f45caadc20..4a2185d86c20cabfc9c028c638548ad68d1644a9 100644 (file)
@@ -169,7 +169,7 @@ begin
                        state <= x"3";
                        if (remove_ctr = x"03") then  -- counter starts with a delay that's why only 3
                                -- destination MAC address filtering here 
-                               if (saved_dest_mac = g_MY_MAC) then --or (saved_dest_mac = x"ffffffffffff") then
+                               if (saved_dest_mac = g_MY_MAC) or (saved_dest_mac = x"ffffffffffff") then  -- must accept broadcasts for ARP
                                        filter_next_state <= REMOVE_SRC;
                                else
                                        filter_next_state <= DECIDE;
index b3fda9b9fe193574b8ec853e07f9bba9289a23dc..ff677948cf0c2c86b6295977ba7cde323728ddb2 100644 (file)
@@ -551,7 +551,7 @@ begin
                        if (PCS_AN_COMPLETE_IN = '0') then
                                link_next_state <= INACTIVE;
                        else
-                               if (wait_ctr = x"0000_ca00") then
+                               if (wait_ctr = x"1000_ca00") then
                                        link_next_state <= GET_ADDRESS;
                                else
                                        link_next_state <= WAIT_FOR_BOOT;
index 19b366ed3b912bcf409fe69dbf4e374fbad8d401..f89160adca05a0837a3b938d2611a865d947c783 100644 (file)
@@ -290,7 +290,7 @@ begin
        if rising_edge(CLK) then
                if (RESET = '1' or dissect_current_state = IDLE or dissect_current_state = WAIT_FOR_HUB) then
                        tx_loaded_ctr <= (others => '0');
-               elsif (dissect_current_state = LOAD_FRAME and TC_RD_EN_IN = '1' and PS_SELECTED_IN = '1') then
+               elsif (dissect_current_state = LOAD_FRAME and TC_RD_EN_IN = '1' and PS_SELECTED_IN = '1' and (tx_frame_loaded /= g_MAX_FRAME_SIZE)) then
                        tx_loaded_ctr <= tx_loaded_ctr + x"1";
                elsif (dissect_current_state = LOAD_ACK and TC_RD_EN_IN = '1' and PS_SELECTED_IN = '1') then
                        tx_loaded_ctr <= tx_loaded_ctr + x"1";
@@ -336,7 +336,7 @@ begin
        end if;
 end process FRAME_SIZE_PROC;
 
-TC_UDP_SIZE_OUT     <= tx_data_ctr - divide_ctr;
+TC_UDP_SIZE_OUT     <= tx_data_ctr;
 
 
 TC_FLAGS_OFFSET_OUT(15 downto 14) <= "00";
@@ -519,7 +519,7 @@ begin
                        size_left <= (others => '0');
                elsif (dissect_current_state = WAIT_FOR_LOAD) then
                        size_left <= tx_data_ctr;
-               elsif (dissect_current_state = LOAD_FRAME and TC_RD_EN_IN = '1' and PS_SELECTED_IN = '1') then
+               elsif (dissect_current_state = LOAD_FRAME and TC_RD_EN_IN = '1' and PS_SELECTED_IN = '1' and (tx_frame_loaded /= g_MAX_FRAME_SIZE)) then
                        size_left <= size_left - x"1";
                end if;
        end if;