| Date | Wed, 24 May 2023 20:35:10 +0300 | From | Vladimir Oltean <> | Subject | Re: [PATCH net-next 06/30] net: dsa: mt7530: improve code path for setting up port 5 |
| |
On Mon, May 22, 2023 at 03:15:08PM +0300, arinc9.unal@gmail.com wrote: > From: Arınç ÜNAL <arinc.unal@arinc9.com> > > There're two code paths for setting up port 5: > > mt7530_setup() > -> mt7530_setup_port5() > > mt753x_phylink_mac_config() > -> mt753x_mac_config() > -> mt7530_mac_config() > -> mt7530_setup_port5() > > Currently mt7530_setup_port5() from mt7530_setup() always runs. If port 5 > is used as a CPU, DSA, or user port, mt7530_setup_port5() from > mt753x_phylink_mac_config() won't run. That is because priv->p5_interface > set on mt7530_setup_port5() will match state->interface on > mt753x_phylink_mac_config() which will stop running mt7530_setup_port5() > again. > > mt7530_setup_port5() from mt753x_phylink_mac_config() won't run when port 5 > is disabled or used for PHY muxing as port 5 won't be defined on the > devicetree. > > Therefore, mt7530_setup_port5() will never run from > mt753x_phylink_mac_config(). > > Address this by not running mt7530_setup_port5() from mt7530_setup() if > port 5 is used as a CPU, DSA, or user port. For the cases of PHY muxing or > the port being disabled, call mt7530_setup_port5() from mt7530_setup().
So TL;DR: mt7530_setup() -> mt7530_setup_port5() short-circuits mt753x_phylink_mac_config() -> ... -> mt7530_setup_port5() through the stateful variable priv->p5_interface, such that port 5 is effectively never configured by phylink, but statically at probe time. The main goal of the patch is to undo the short-circuit, and let phylink configure port 5.
It is worth stating that we know phylink will always be present, because mt7530 isn't in the dsa_switches_apply_workarounds[] array. Otherwise this strategy would have been problematic with some device trees.
> Do not set priv->p5_interface on mt7530_setup_port5(). There won't be a > case where mt753x_phylink_mac_config() runs after mt7530_setup_port5() > anymore.
The bulk of the change is difficult enough to follow. I believe this part could be done through a separate patch, and the rest would still work.
|