[PATCH net-next v3 10/47] net: phylink: Adjust link settings based on rate adaptation

From: Sean Anderson
Date: Fri Jul 15 2022 - 18:01:55 EST


If the phy is configured to use pause-based rate adaptation, ensure that
the link is full duplex with pause frame reception enabled. Note that these
settings may be overridden by ethtool.

Signed-off-by: Sean Anderson <sean.anderson@xxxxxxxx>
---

Changes in v3:
- New

drivers/net/phy/phylink.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 7fa21941878e..7f65413aa778 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -1445,6 +1445,10 @@ static void phylink_phy_change(struct phy_device *phydev, bool up)
pl->phy_state.speed = phy_interface_speed(phydev->interface,
phydev->speed);
pl->phy_state.duplex = phydev->duplex;
+ if (phydev->rate_adaptation == RATE_ADAPT_PAUSE) {
+ pl->phy_state.duplex = DUPLEX_FULL;
+ rx_pause = true;
+ }
pl->phy_state.pause = MLO_PAUSE_NONE;
if (tx_pause)
pl->phy_state.pause |= MLO_PAUSE_TX;
--
2.35.1.1320.gc452695387.dirty