From: Russell King (Oracle) Date: Wed, 16 Oct 2024 09:58:34 +0000 (+0100) Subject: net: phylink: allow mac_select_pcs() to remove a PCS X-Git-Tag: v6.13-rc1~135^2~292 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=486dc391ef439d45db3f7eda2229560fd2b52a78;p=thirdparty%2Fkernel%2Flinux.git net: phylink: allow mac_select_pcs() to remove a PCS phylink has historically not permitted a PCS to be removed. An attempt to permit this with phylink_set_pcs() resulted in comments indicating that there was no need for this. This behaviour has been propagated forward to the mac_select_pcs() approach as it was believed from these comments that changing this would be NAK'd. However, with mac_select_pcs(), it takes more code and thus complexity to maintain this behaviour, which can - and in this case has - resulted in a bug. If mac_select_pcs() returns NULL for a particular interface type, but there is already a PCS in-use, then we skip the pcs_validate() method, but continue using the old PCS. Also, it wouldn't be expected behaviour by implementers of mac_select_pcs(). Allow this by removing this old unnecessary restriction. Signed-off-by: Russell King (Oracle) Reviewed-by: Vladimir Oltean Signed-off-by: Andrew Lunn --- diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 24a3144e870a5..aa1139efc7e42 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -1184,7 +1184,7 @@ static void phylink_major_config(struct phylink *pl, bool restart, return; } - pcs_changed = pcs && pl->pcs != pcs; + pcs_changed = pl->pcs != pcs; } phylink_pcs_poll_stop(pl);