gianfar: Avoid unnecessary reg accesses in adjust_link()
authorClaudiu Manoil <claudiu.manoil@freescale.com>
Wed, 30 Apr 2014 11:27:21 +0000 (14:27 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Apr 2014 20:12:23 +0000 (16:12 -0400)
commit6ce29b0e2a04ea85617cd21099af67449a76f589
tree646809dbccfa024bccc007e5d4449fff7cefaed0
parent0cda345d1b2201dd15591b163e3c92bad5191745
gianfar: Avoid unnecessary reg accesses in adjust_link()

For phy devices that don't issue interrupts upon link
state changes, phylib polls the link state resulting in
repeated calls to adjust_link(), even if the link state
didn't change.  As a result, some mac registers are
repeatedly read and written with the same values, which
is not ok.

To fix this, adjust_link() has been refactored to check
first whether the link state has changed and to take action
only if needed, updating mac registers and local state
variables.  The 'new_state' local flag, set if one of the
link params changed (link, speed or duplex), has been
rendered useless and removed by this refactoring.

Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/gianfar.c