MFC r221565-221568,221579:
r221565:
Reuse the TX descriptor(DPD) if xl_encap() failed instead of just
picking the next available one. This may explain why xl(4) sees TX
underrun error with no queued frame. I hope this addresses a long
standing xl(4) watchdog timeout issue as well.
Obtained from: OpenBSD
r221566,221579:
Rename xl_stats_update() callout handler to xl_tick() and move MII
tick driving logic to xl_tick(). Now xl_tick() handles MII tick as
well as periodic updating of statistics.
This change removes a hack used in interrupt handler where it
wanted to update statistics without driving MII tick.
r221567:
Rearm watchdog timer if driver kick controller to recover from TX
underrun error.
While here, prepend 0x to status code to show TX status is hex
number.
r221568:
XL_DMACTL is 32bit register, use 32bit write macro.
While I'm here add more bits for the register.
git-svn-id: svn://svn.freebsd.org/base/stable/8@222387
ccf9f872-aa2e-dd11-9fc8-
001c23d0bc1f