kernel: bump 6.1 to 6.1.86
[openwrt/openwrt.git] / target / linux / generic / hack-6.1 / 750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
index 8b7f2f095577fd02ee73a145b690f7389cb26ddd..a2bd3a3dbbc26be7bae749945f2d129f4adbe4a3 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/pcs/pcs-mtk-lynxi.c
 +++ b/drivers/net/pcs/pcs-mtk-lynxi.c
-@@ -92,14 +92,23 @@ static void mtk_pcs_lynxi_get_state(stru
+@@ -114,14 +114,23 @@ static void mtk_pcs_lynxi_get_state(stru
                                    struct phylink_link_state *state)
  {
        struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
@@ -40,14 +40,14 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +      phylink_mii_c22_pcs_decode_state(state, bmsr, FIELD_GET(SGMII_LPA, adv));
  }
  
- static int mtk_pcs_lynxi_config(struct phylink_pcs *pcs, unsigned int mode,
-@@ -134,7 +143,8 @@ static int mtk_pcs_lynxi_config(struct p
-               /* 1000base-X or 2500base-X autoneg */
-               sgm_mode = SGMII_REMOTE_FAULT_DIS;
-               use_an = linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
--                                         advertising);
-+                                         advertising) &&
-+                       !(interface == PHY_INTERFACE_MODE_2500BASEX);
-       } else {
-               /* 1000base-X or 2500base-X without autoneg */
-               sgm_mode = 0;
+ static void mtk_sgmii_reset(struct mtk_pcs_lynxi *mpcs)
+@@ -163,7 +172,8 @@ static int mtk_pcs_lynxi_config(struct p
+       if (neg_mode & PHYLINK_PCS_NEG_INBAND)
+               sgm_mode |= SGMII_REMOTE_FAULT_DIS;
+-      if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED) {
++      if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED &&
++          interface != PHY_INTERFACE_MODE_2500BASEX) {
+               if (interface == PHY_INTERFACE_MODE_SGMII)
+                       sgm_mode |= SGMII_SPEED_DUPLEX_AN;
+               bmcr = BMCR_ANENABLE;