[][kernel][common][eth][Add 1000basex AN support for the SGMII]

[Description]
Add 1000basex AN support for the SGMII.

If without this patch, some SFP Optical modules might not link up with
the link partner.

[Release-log]
N/A


Change-Id: I256726f7d5f1e7bc99f0b2293c7290352a0f3fc6
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7479629
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
index c42b28a..4841134 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
@@ -424,6 +424,17 @@
 		sgm_mode = SGMII_IF_MODE_SGMII |
 			   SGMII_REMOTE_FAULT_DIS |
 			   SGMII_SPEED_DUPLEX_AN;
+	} else if (phylink_autoneg_inband(mode)) {
+		/* 1000base-X or HSGMII with autoneg */
+		if (interface == PHY_INTERFACE_MODE_2500BASEX)
+			return -EINVAL;
+
+		bmcr = linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
+					 advertising) ? SGMII_AN_ENABLE : 0;
+		if (bmcr)
+			sgm_mode = SGMII_SPEED_DUPLEX_AN;
+		else
+			speed = SGMII_SPEED_1000;
 	} else {
 		/* 1000base-X or HSGMII without autoneg */
 		speed = SGMII_SPEED_1000;