net: dsa: mv88e6xxx: check for mode change in port_setup_mac
authorMarek Behún <marek.behun@nic.cz>
Wed, 14 Aug 2019 14:40:24 +0000 (16:40 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Aug 2019 20:05:17 +0000 (13:05 -0700)
commit927441adea560d59cbbd68b6c26342f44e612271
treec620be6d0681c71f874e5c688c360504a08e9550
parent13b18f1d281bc84d3e0024daa706b767b43826a6
net: dsa: mv88e6xxx: check for mode change in port_setup_mac

The mv88e6xxx_port_setup_mac checks if the requested MAC settings are
different from the current ones, and if not, does nothing (since chaning
them requires putting the link down).

In this check it only looks if the triplet [link, speed, duplex] is
being changed.

This patch adds support to also check if the mode parameter (of type
phy_interface_t) is requested to be changed. The current mode is
computed by the ->port_link_state() method, and if it is different from
PHY_INTERFACE_MODE_NA, we check for equality with the requested mode.

In the implementations of the mv88e6250_port_link_state() method we set
the current mode to PHY_INTERFACE_MODE_NA - so the code does not check
for mode change on 6250.

In the mv88e6352_port_link_state() method, we use the cached cmode of
the port to determine the mode as phy_interface_t (and if it is not
enough, eg. for RGMII, we also look at the port control register for
RX/TX timings).

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c
drivers/net/dsa/mv88e6xxx/port.c
drivers/net/dsa/mv88e6xxx/port.h