On Wed, Dec 06, 2023 at 06:55:50PM +0000, Russell King (Oracle) wrote: > On Wed, Dec 06, 2023 at 01:45:17AM +0000, Daniel Golle wrote: > > @@ -516,6 +538,21 @@ static struct phylink_pcs *mtk_mac_select_pcs(struct phylink_config *config, > > struct mtk_eth *eth = mac->hw; > > unsigned int sid; > > > > + if (mtk_is_netsys_v3_or_greater(eth)) { > > + switch (interface) { > > + case PHY_INTERFACE_MODE_1000BASEX: > > + case PHY_INTERFACE_MODE_2500BASEX: > > + case PHY_INTERFACE_MODE_SGMII: > > + return mtk_pcs_lynxi_select_pcs(mac->sgmii_pcs_of_node, interface); > > + case PHY_INTERFACE_MODE_5GBASER: > > + case PHY_INTERFACE_MODE_10GBASER: > > + case PHY_INTERFACE_MODE_USXGMII: > > + return mtk_usxgmii_select_pcs(mac->usxgmii_pcs_of_node, interface); > > From what I can see, neither of these two "select_pcs" methods that > you're calling makes any use of the "interface" you pass to them. > I'm not sure what they _could_ do with it either, given that what > you're effectively doing here is getting the phylink_pcs structure from > the driver, and each one only has a single phylink_pcs. Yes, you are right, the interface parameter isn't used, I will drop it from both mtk_*_select_pcs() prototypes. In the long run we may want something like struct phylink_pcs *of_pcs_get(struct device_node *np, phy_interface_t interface) provided by a to-be-built drivers/net/pcs/core.c...