Why is full duplex disabled by default?

I have noticed when my board starts that my board does not get full duplex. When I look in the mii_negotiate routine (in MII.c) this routine does not try to get full duplex if the parameter ETH_NEGOTIATE_100MB_FULLD is zero. This parameter is define to 0 in MII.h. If I set it to 1 the board gets full duplex and it seems to work fine. Why is this parameter defined to 0 by default? Is there a problem with running at full duplex? Why is this not documented? I have also noticed that the bootloader does not try to get full duplex either. I have not solved this problem yet.

Full duplex for EFE causes transmit under-runs, which cause transmitter lockups under some very extreme cases like very heavy network loads and so. Based on this it was decided to set the ETH_NEGOTIATE_100MB_FULLD is defined to 0 is mii.h. If you would like to run at 100MB full duplex set this define 1 and then rebuild the bsp prior to building nay of your application.

It doesn’t need a reset. The issue has been fixed with a SW workaround in the Ethernet driver. This fix is placed in the v6.0 release as well.

If you get transmit lockup does the system recover or do you have to restart the entire system? Is this problem fixed in 6.0?