• Kevin Brace's avatar
    via-rhine: Fix for the hardware having a reset failure after resume · d120c9a8
    Kevin Brace authored
    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: default avatarKevin Brace <kevinbrace@bracecomputerlab.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d120c9a8
via-rhine.c 69.6 KB