On Sun, Aug 11, 2019 at 05:08:11PM +0200, Marek Behún wrote: > The mv88e6xxx_port_setup_mac looks if one of the {link, speed, duplex} > parameters is being changed from the current setting, and if not, does > not do anything. This test is wrong in some situations: this method also > has the mode argument, which can also be changed. > > For example on Turris Omnia, the mode is PHY_INTERFACE_MODE_RGMII_ID, > which has to be set byt the ->port_set_rgmii_delay method. The test does > not look if mode is being changed (in fact there is currently no method > to determine port mode as phy_interface_t type). > > The simplest solution seems to be to drop this test altogether and > simply do the setup when requested.
Hi Marek Unfortunately, that code is there for a reason. phylink can call the ->mac_config() method once per second. It is documented that mac_config() should only reconfigure what, if anything, has changed. And mv88e6xxx_port_setup_mac() needs to disable the port in order to change anything. So the change you propose here, under some conditions, will cause the port to be disabled/enables once per second. We need to fix this by expanding the test, not removing it. My current _guess_ would be, we need to add a ops->port_get_rgmii_delay() so we can see if that is what needs configuring. Andrew