bugs in ethernet MAC

View: New views
1 Messages — Rating Filter:   Alert me  

bugs in ethernet MAC

by Lawrence Butcher :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

I am trying to use the Ethenet MAC in an FPGA I am working on.

 

After getting it mostly working, I believe that I have found 3 bugs which render the IP unsuitable for use.

 

The bugs are:

 

1)       If I change a receive descriptor from invalid to valid while a packet is being received, only the part of the packet received after the descriptor is valid is put in my buffer.  However, the packet is marked as received correctly.

2)       I have a situation where I have only very few receive descriptors.  I occasionally run out.  Once I run out, I see that the hardware continues to update the status fields and length fields in the buffer descriptors which do not have 0x80 set in them.  Once this starts happening, the internal buffer descriptor pointer used to poll descriptors (which I brought out to a register) is no longer in sync with the software pointer.  Since the hardware is writing buffer descriptors, it can overwrite the valid buffer descriptors as I update them.  The result is that buffer descriptors with the empty bit set are lost, resulting eventually in the loss of all receive activity.

3)       The transmitter has a silent hang in the following situation:  User has IP set in full duplex mode, PHY is either in half duplex mode or in the case of the National PHY it has a link down situation.  User is transmitting packets.  In these cases, the PHY sends TX_COL signals.  After a number of these unexpected TX_COLs, the transmitter stops sending, even if I set all 0x80 bits in all transmit descriptors.

 

These problems are quite discouraging, because I will need to deeply understand the RTL in order to know how to exercise it in a way which shows the failure.  (The failures happen in just a few seconds on hardware).

 

Of course, what seems to be a hardware bug might be a software bug.  I can demonstrate the first bug in simulation, and in the other two cases I can look at all user-visible state plus the internal buffer descriptor pointers, and everything points to hardware problems.

 

Is anyone interested in working with me to try to find and fix these problems?

 

Regards:

 

Lawrence Butcher

 


_______________________________________________
http://www.opencores.org/mailman/listinfo/ethmac