This is a follow up from my previous patch [1] to add a PCD for the auto-negotiation timeout and the v2 series that followed it.
Review comments on the edk2-devel mailing list and on the #linaro-enterprise IRC channel evolved the solution into two different patches:
[PATCH 1/4] EmbeddedPkg/Lan9118Dxe: use MemoryFence [PATCH 2/4] EmbeddedPkg/Lan9118Dxe: add PCD for negotiation timeout
Whilst I was editing the code, I also noticed a few non-functional quirks that were easy to fix:
[PATCH 3/4] EmbeddedPkg/Lan9118Dxe: minor DEBUG tidyup [PATCH 4/4] EmbeddedPkg/Lan9118Dxe: rename TimeOut to Retries
Changes since v2: - The number of stalls replaced in the first patch has been reduced. Any loop that is time bound now contains a MemoryFence and a Stall - The PCD was previously setting the Stall time for the auto-negotiation timeout. It now sets the total time to wait for auto-negotiation. - I dropped the Reviewed-by tags off patches 1 & 2 because the code has changed enough that I didn't think it was fair to keep them.
[1] http://article.gmane.org/gmane.comp.bios.edk2.devel/7341