A race condition in the MII layer causes spurious link down events, see:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252165
. In statchg, on link down, check if the PHY reports the link as
actually down using the BMSR register, if not, force the status of the
link to back up. Do the same in a MII linkchg handler.
I have tested this patch with an ASIX AX88772B USB 2.0 interface, and it
fixes the link flaps.
Differential Review:
Signed-off-by: Rafael Kitover <rkitover@gmail.com>