net: aquantia: Regression on reset with 1.x firmware
authorIgor Russkikh <igor.russkikh@aquantia.com>
Wed, 11 Apr 2018 12:23:24 +0000 (15:23 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Apr 2018 14:41:36 +0000 (10:41 -0400)
commitcce96d1883dae4b79f44890e5118243d806da286
tree95da1b3901f16652f5e735a7b70051d1eb4615d2
parent53765341ee821c0a0f1dec41adc89c9096ad694c
net: aquantia: Regression on reset with 1.x firmware

On ASUS XG-C100C with 1.5.44 firmware a special mode called "dirty wake"
is active. With this mode when motherboard gets powered (but no poweron
happens yet), NIC automatically enables powersave link and watches
for WOL packet.
This normally allows to powerup the PC after AC power failures.

Not all motherboards or bios settings gives power to PCI slots,
so this mode is not enabled on all the hardware.

4.16 linux driver introduced full hardware reset sequence
This is required since before that we had no NIC hardware
reset implemented and there were side effects of "not clean start".

But this full reset is incompatible with "dirty wake" WOL feature
it keeps the PHY link in a special mode forever. As a consequence,
driver sees no link and no traffic.

To fix this we forcibly change FW state to idle state before doing
the full reset. This makes FW to restore link state.

Fixes: c8c82eb net: aquantia: Introduce global AQC hardware reset sequence
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c