via-rhine: Fix for the hardware having a reset failure after resume
authorKevin Brace <kevinbrace@bracecomputerlab.com>
Tue, 29 Sep 2020 20:09:40 +0000 (13:09 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Sep 2020 21:23:45 +0000 (14:23 -0700)
commitd120c9a81e32c43cba8017dec873b6a414898716
tree288e9a4fbbcf902471ceae08a397edab8ad5c0ad
parent6667df916fceca7d585b34d8bb7a4aea2402f11f
via-rhine: Fix for the hardware having a reset failure after resume

In rhine_resume() and rhine_suspend(), the code calls netif_running()
to see if the network interface is down or not.  If it is down (i.e.,
netif_running() returning false), they will skip any housekeeping work
within the function relating to the hardware.  This becomes a problem
when the hardware resumes from a standby since it is counting on
rhine_resume() to map its MMIO and power up rest of the hardware.
Not getting its MMIO remapped and rest of the hardware powered
up lead to a soft reset failure and hardware disappearance.  The
solution is to map its MMIO and power up rest of the hardware inside
rhine_open() before soft reset is to be performed.  This solution was
verified on ASUS P5V800-VM mainboard's integrated Rhine-II Ethernet
MAC inside VIA Technologies VT8251 South Bridge.

Signed-off-by: Kevin Brace <kevinbrace@bracecomputerlab.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/via/via-rhine.c