Skip to content

Commit

Permalink
net: dsa: mv88e6xxx: Only reconfigure MAC when something changes
Browse files Browse the repository at this point in the history
phylink will call the mac_config() callback once per second when
polling a PHY or a fixed link. The MAC driver is not supposed to
reconfigure the MAC if nothing has changed.

Make the mv88e6xxx driver look at the current configuration of the
port, and return early if nothing has changed.

Signed-off-by: Andrew Lunn <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
lunn authored and davem330 committed Apr 19, 2019
1 parent 0768e17 commit a26deec
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions drivers/net/dsa/mv88e6xxx/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -553,11 +553,28 @@ int mv88e6xxx_port_setup_mac(struct mv88e6xxx_chip *chip, int port, int link,
int speed, int duplex, int pause,
phy_interface_t mode)
{
struct phylink_link_state state;
int err;

if (!chip->info->ops->port_set_link)
return 0;

if (!chip->info->ops->port_link_state)
return 0;

err = chip->info->ops->port_link_state(chip, port, &state);
if (err)
return err;

/* Has anything actually changed? We don't expect the
* interface mode to change without one of the other
* parameters also changing
*/
if (state.link == link &&
state.speed == speed &&
state.duplex == duplex)
return 0;

/* Port's MAC control must not be changed unless the link is down */
err = chip->info->ops->port_set_link(chip, port, 0);
if (err)
Expand Down

0 comments on commit a26deec

Please sign in to comment.