mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-07 05:04:00 -05:00
Backport phylink patches for PCS/PHY caps OPs. This makes it easier to align future generic PCS patch and permit supporting special PHY that needs specific tune if "in-band" mode is enabled (for example Aeonsemi PHYs) This is also mainly using the upstream version of the Mediatek patch 739-net-add-negotiation-of-in-band-capabilities. All affected patch automatically refreshed. Link: https://github.com/openwrt/openwrt/pull/20461 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
128 lines
4.0 KiB
Diff
128 lines
4.0 KiB
Diff
From d1a16dbbd84e02d2a6dcfcb8d5c4b8b2c0289f00 Mon Sep 17 00:00:00 2001
|
|
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
Date: Fri, 8 Nov 2024 16:02:00 +0000
|
|
Subject: [PATCH 4/5] net: phylink: remove switch() statement in resolve
|
|
handling
|
|
|
|
The switch() statement doesn't sit very well with the preceeding if()
|
|
statements, so let's just convert everything to if()s. As a result of
|
|
the two preceding commits, there is now only one case in the switch()
|
|
statement. Remove the switch statement and reduce the code indentation.
|
|
Code reformatting will be in the following commit.
|
|
|
|
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
Link: https://patch.msgid.link/E1t9RQu-002Fez-AA@rmk-PC.armlinux.org.uk
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
drivers/net/phy/phylink.c | 94 +++++++++++++++++++--------------------
|
|
1 file changed, 45 insertions(+), 49 deletions(-)
|
|
|
|
--- a/drivers/net/phy/phylink.c
|
|
+++ b/drivers/net/phy/phylink.c
|
|
@@ -1487,60 +1487,56 @@ static void phylink_resolve(struct work_
|
|
link_state = pl->phy_state;
|
|
mac_config = link_state.link;
|
|
} else {
|
|
- switch (pl->cur_link_an_mode) {
|
|
- case MLO_AN_INBAND:
|
|
- phylink_mac_pcs_get_state(pl, &link_state);
|
|
-
|
|
- /* The PCS may have a latching link-fail indicator.
|
|
- * If the link was up, bring the link down and
|
|
- * re-trigger the resolve. Otherwise, re-read the
|
|
- * PCS state to get the current status of the link.
|
|
+ phylink_mac_pcs_get_state(pl, &link_state);
|
|
+
|
|
+ /* The PCS may have a latching link-fail indicator.
|
|
+ * If the link was up, bring the link down and
|
|
+ * re-trigger the resolve. Otherwise, re-read the
|
|
+ * PCS state to get the current status of the link.
|
|
+ */
|
|
+ if (!link_state.link) {
|
|
+ if (cur_link_state)
|
|
+ retrigger = true;
|
|
+ else
|
|
+ phylink_mac_pcs_get_state(pl,
|
|
+ &link_state);
|
|
+ }
|
|
+
|
|
+ /* If we have a phy, the "up" state is the union of
|
|
+ * both the PHY and the MAC
|
|
+ */
|
|
+ if (pl->phydev)
|
|
+ link_state.link &= pl->phy_state.link;
|
|
+
|
|
+ /* Only update if the PHY link is up */
|
|
+ if (pl->phydev && pl->phy_state.link) {
|
|
+ /* If the interface has changed, force a
|
|
+ * link down event if the link isn't already
|
|
+ * down, and re-resolve.
|
|
*/
|
|
- if (!link_state.link) {
|
|
- if (cur_link_state)
|
|
- retrigger = true;
|
|
- else
|
|
- phylink_mac_pcs_get_state(pl,
|
|
- &link_state);
|
|
+ if (link_state.interface !=
|
|
+ pl->phy_state.interface) {
|
|
+ retrigger = true;
|
|
+ link_state.link = false;
|
|
}
|
|
+ link_state.interface = pl->phy_state.interface;
|
|
|
|
- /* If we have a phy, the "up" state is the union of
|
|
- * both the PHY and the MAC
|
|
+ /* If we are doing rate matching, then the
|
|
+ * link speed/duplex comes from the PHY
|
|
*/
|
|
- if (pl->phydev)
|
|
- link_state.link &= pl->phy_state.link;
|
|
-
|
|
- /* Only update if the PHY link is up */
|
|
- if (pl->phydev && pl->phy_state.link) {
|
|
- /* If the interface has changed, force a
|
|
- * link down event if the link isn't already
|
|
- * down, and re-resolve.
|
|
- */
|
|
- if (link_state.interface !=
|
|
- pl->phy_state.interface) {
|
|
- retrigger = true;
|
|
- link_state.link = false;
|
|
- }
|
|
- link_state.interface = pl->phy_state.interface;
|
|
-
|
|
- /* If we are doing rate matching, then the
|
|
- * link speed/duplex comes from the PHY
|
|
- */
|
|
- if (pl->phy_state.rate_matching) {
|
|
- link_state.rate_matching =
|
|
- pl->phy_state.rate_matching;
|
|
- link_state.speed = pl->phy_state.speed;
|
|
- link_state.duplex =
|
|
- pl->phy_state.duplex;
|
|
- }
|
|
-
|
|
- /* If we have a PHY, we need to update with
|
|
- * the PHY flow control bits.
|
|
- */
|
|
- link_state.pause = pl->phy_state.pause;
|
|
- mac_config = true;
|
|
+ if (pl->phy_state.rate_matching) {
|
|
+ link_state.rate_matching =
|
|
+ pl->phy_state.rate_matching;
|
|
+ link_state.speed = pl->phy_state.speed;
|
|
+ link_state.duplex =
|
|
+ pl->phy_state.duplex;
|
|
}
|
|
- break;
|
|
+
|
|
+ /* If we have a PHY, we need to update with
|
|
+ * the PHY flow control bits.
|
|
+ */
|
|
+ link_state.pause = pl->phy_state.pause;
|
|
+ mac_config = true;
|
|
}
|
|
}
|
|
|