diff --git a/target/linux/qualcommax/files/drivers/net/pcs/pcs-qca-uniphy.c b/target/linux/qualcommax/files/drivers/net/pcs/pcs-qca-uniphy.c index 3ec4aea477f..89f76ff51ff 100644 --- a/target/linux/qualcommax/files/drivers/net/pcs/pcs-qca-uniphy.c +++ b/target/linux/qualcommax/files/drivers/net/pcs/pcs-qca-uniphy.c @@ -356,16 +356,24 @@ static void qca_uniphy_pcs_get_state_usxgmii(struct qca_uniphy *uniphy, unsigned int val; int ret; + ret = regmap_read(uniphy->regmap, XPCS_KR_STS1, &val); + if (ret) { + state->link = 0; + return; + } + + state->link = !!(val & XPCS_KR_STS1_PLU); + + if (!state->link) + return; + ret = regmap_read(uniphy->regmap, XPCS_MII_AN_INTR_STS, &val); if (ret) { state->link = 0; return; } - state->link = !!(val & XPCS_USXG_AN_LINK_STS); - - if (!state->link) - return; + state->an_complete = !!(val & XPCS_USXG_AN_LINK_STS); switch (FIELD_GET(XPCS_USXG_AN_SPEED_MASK, val)) { case XPCS_USXG_AN_SPEED_10000: