diff -Naur a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
--- a/drivers/net/dsa/mt7530.c	2022-11-25 14:10:39.452491570 +0800
+++ b/drivers/net/dsa/mt7530.c	2022-11-28 09:47:11.157096408 +0800
@@ -2476,7 +2476,7 @@
 mt7531_cpu_port_config(struct dsa_switch *ds, int port)
 {
 	struct mt7530_priv *priv = ds->priv;
-	phy_interface_t interface;
+	phy_interface_t interface = PHY_INTERFACE_MODE_NA;
 	int speed;
 
 	switch (port) {
@@ -2496,6 +2496,8 @@
 		priv->p6_interface = interface;
 		break;
 	};
+	if (interface == PHY_INTERFACE_MODE_NA)
+		dev_err(priv->dev, "invalid interface\n");
 
 	if (interface == PHY_INTERFACE_MODE_2500BASEX)
 		speed = SPEED_2500;
diff -Naur a/drivers/net/dsa/mt7531_phy.c b/drivers/net/dsa/mt7531_phy.c
--- a/drivers/net/dsa/mt7531_phy.c	2022-11-25 14:10:47.032465430 +0800
+++ b/drivers/net/dsa/mt7531_phy.c	2022-11-29 09:56:05.024665073 +0800
@@ -252,7 +252,7 @@
 	u16 dev1e_17a_tmp, dev1e_e0_tmp;
 
 	/* *** Iext/Rext Cal start ************ */
-	all_ana_cal_status = ANACAL_INIT;
+	//all_ana_cal_status = ANACAL_INIT;
 	/* analog calibration enable, Rext calibration enable */
 	/* 1e_db[12]:rg_cal_ckinv, [8]:rg_ana_calen, [4]:rg_rext_calen, [0]:rg_zcalen_a */
 	/* 1e_dc[0]:rg_txvos_calen */
@@ -296,7 +296,7 @@
 			all_ana_cal_status = ANACAL_FINISH;
 			//printk("  GE Rext AnaCal Done! (%d)(0x%x)  \r\n", cnt, rg_zcal_ctrl);
 		} else {
-			dev1e_17a_tmp = tc_phy_read_dev_reg(ds, PHY0, 0x1e, 0x017a);
+			//dev1e_17a_tmp = tc_phy_read_dev_reg(ds, PHY0, 0x1e, 0x017a);
 			dev1e_e0_tmp =	tc_phy_read_dev_reg(ds, PHY0, 0x1e, 0xe0);
 			if ((rg_zcal_ctrl == 0x3F) || (rg_zcal_ctrl == 0x00)) {
 				all_ana_cal_status = ANACAL_SATURATION;  /* need to FT(IC fail?) */
@@ -718,32 +718,34 @@
 				} else if (phyaddr == 1) {
 					if (calibration_pair == ANACAL_PAIR_A)
 						tx_amp_temp = tx_amp_temp - 1;
-					else if(calibration_pair == ANACAL_PAIR_B)
-						tx_amp_temp = tx_amp_temp ;
+					//else if(calibration_pair == ANACAL_PAIR_B)
+					//	tx_amp_temp = tx_amp_temp;
 					else if(calibration_pair == ANACAL_PAIR_C)
 						tx_amp_temp = tx_amp_temp - 1;
 					else if(calibration_pair == ANACAL_PAIR_D)
 						tx_amp_temp = tx_amp_temp - 1;
 				} else if (phyaddr == 2) {
-					if (calibration_pair == ANACAL_PAIR_A)
-						tx_amp_temp = tx_amp_temp;
-					else if(calibration_pair == ANACAL_PAIR_B)
+					//if (calibration_pair == ANACAL_PAIR_A)
+					//	tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_B)
+					if(calibration_pair == ANACAL_PAIR_B)
 						tx_amp_temp = tx_amp_temp - 1;
-					else if(calibration_pair == ANACAL_PAIR_C)
-						tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_C)
+					//	tx_amp_temp = tx_amp_temp;
 					else if(calibration_pair == ANACAL_PAIR_D)
 						tx_amp_temp = tx_amp_temp - 1;
-				} else if (phyaddr == 3) {
-					tx_amp_temp = tx_amp_temp;
+				//} else if (phyaddr == 3) {
+				//	tx_amp_temp = tx_amp_temp;
 				} else if (phyaddr == 4) {
-					if (calibration_pair == ANACAL_PAIR_A)
-						tx_amp_temp = tx_amp_temp;
-					else if(calibration_pair == ANACAL_PAIR_B)
+					//if (calibration_pair == ANACAL_PAIR_A)
+					//	tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_B)
+					if(calibration_pair == ANACAL_PAIR_B)
 						tx_amp_temp = tx_amp_temp - 1;
-					else if(calibration_pair == ANACAL_PAIR_C)
-						tx_amp_temp = tx_amp_temp;
-					else if(calibration_pair == ANACAL_PAIR_D)
-						tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_C)
+					//	tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_D)
+					//	tx_amp_temp = tx_amp_temp;
 				}
 				reg_temp = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, tx_amp_reg)&(~0xff00);
 				tc_phy_write_dev_reg(ds, phyaddr, 0x1e, tx_amp_reg_100,(tx_amp_temp|((tx_amp_temp)<<tx_amp_reg_shift)));
@@ -858,7 +860,7 @@
 					reg_backup = 0x0000;
 					reg_backup |= ((tx_amp_temp << 10) | (tx_amp_temp << 0));
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x12, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x12);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x12);
 					//printk("PORT[%d] 1e.012 = %x (OFFSET_1000M_PAIR_A)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x16);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -866,7 +868,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (tx_amp_temp << 0);
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x16, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x16);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x16);
 					//printk("PORT[%d] 1e.016 = %x (OFFSET_TESTMODE_1000M_PAIR_A)\n", phyaddr, reg_backup);
 				}
 				else if(calibration_pair == ANACAL_PAIR_B){
@@ -876,7 +878,7 @@
 					reg_backup = 0x0000;
                                        reg_backup |= ((tx_amp_temp << 8) | (tx_amp_temp << 0));
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x17, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x17);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x17);
 					//printk("PORT[%d] 1e.017 = %x (OFFSET_1000M_PAIR_B)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x18);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -884,7 +886,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (tx_amp_temp << 0);
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x18, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x18);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x18);
 					//printk("PORT[%d] 1e.018 = %x (OFFSET_TESTMODE_1000M_PAIR_B)\n", phyaddr, reg_backup);
 				}
 				else if(calibration_pair == ANACAL_PAIR_C){
@@ -894,7 +896,7 @@
 					reg_backup = (reg_backup & (~0x3f00));
 					reg_backup |= (tx_amp_temp << 8);
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x19, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x19);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x19);
 					//printk("PORT[%d] 1e.019 = %x (OFFSET_1000M_PAIR_C)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x20);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -902,7 +904,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (tx_amp_temp << 0);
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x20, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x20);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x20);
 					//printk("PORT[%d] 1e.020 = %x (OFFSET_TESTMODE_1000M_PAIR_C)\n", phyaddr, reg_backup);
 				}
 				else if(calibration_pair == ANACAL_PAIR_D){
@@ -912,7 +914,7 @@
 					reg_backup = (reg_backup & (~0x3f00));
 					reg_backup |= (tx_amp_temp << 8);
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x21, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x21);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x21);
 					//printk("PORT[%d] 1e.021 = %x (OFFSET_1000M_PAIR_D)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x22);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -920,7 +922,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (tx_amp_temp << 0);
 					tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x22, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x22);
+					//reg_backup = tc_phy_read_dev_reg(ds,  phyaddr, 0x1e, 0x22);
 					//printk("PORT[%d] 1e.022 = %x (OFFSET_TESTMODE_1000M_PAIR_D)\n", phyaddr, reg_backup);
 				}
 
@@ -1352,7 +1354,7 @@
 
 int mt7531_phy_setup(struct dsa_switch *ds)
 {
-	int ret;
+	int ret = 0;
 	int i;
 
 	mt7531_phy_setting(ds);
diff -Naur a/drivers/net/phy/mtk/mt753x/mt7531.c b/drivers/net/phy/mtk/mt753x/mt7531.c
--- a/drivers/net/phy/mtk/mt753x/mt7531.c	2022-11-25 14:11:51.944272549 +0800
+++ b/drivers/net/phy/mtk/mt753x/mt7531.c	2022-11-25 14:19:49.970820719 +0800
@@ -1062,6 +1062,7 @@
 	u32 pmcr;
 	u32 speed;
 
+	pdev = container_of(gsw->dev, struct platform_device, dev);
 	switch_node = of_find_node_by_name(NULL, "switch0");
 	if (switch_node == NULL) {
 		dev_err(&pdev->dev, "switch node invaild\n");
@@ -1074,7 +1075,6 @@
 		return -EIO;
 	}
 
-	pdev = container_of(gsw->dev, struct platform_device, dev);
 	gsw->sysctrl_base = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
 							"mediatek,sysctrl");
 	if (IS_ERR(gsw->sysctrl_base)) {
diff -Naur a/drivers/net/phy/mtk/mt753x/mt753x_common.c b/drivers/net/phy/mtk/mt753x/mt753x_common.c
--- a/drivers/net/phy/mtk/mt753x/mt753x_common.c	2022-11-25 14:12:06.308223474 +0800
+++ b/drivers/net/phy/mtk/mt753x/mt753x_common.c	2022-11-25 14:21:52.038450276 +0800
@@ -49,6 +49,9 @@
 	case MAC_SPD_2500:
 		speed = "2.5Gbps";
 		break;
+	default:
+		dev_info(gsw->dev, "Invalid speed\n");
+		return;
 	}
 
 	if (pmsr & MAC_LNK_STS) {
diff -Naur a/drivers/net/phy/mtk/mt753x/mt753x_mdio.c b/drivers/net/phy/mtk/mt753x/mt753x_mdio.c
--- a/drivers/net/phy/mtk/mt753x/mt753x_mdio.c	2022-11-25 14:12:29.064162894 +0800
+++ b/drivers/net/phy/mtk/mt753x/mt753x_mdio.c	2022-11-25 17:04:01.973949052 +0800
@@ -495,7 +495,7 @@
 	struct device_node *np = gsw->dev->of_node;
 	struct reset_control *rstc;
 	int mcm;
-	int ret = -EINVAL;
+	int ret;
 
 	mcm = of_property_read_bool(np, "mediatek,mcm");
 	if (mcm) {
diff -Naur a/drivers/net/phy/mtk/mt753x/mt753x_nl.c b/drivers/net/phy/mtk/mt753x/mt753x_nl.c
--- a/drivers/net/phy/mtk/mt753x/mt753x_nl.c	2022-11-25 14:12:12.292202033 +0800
+++ b/drivers/net/phy/mtk/mt753x/mt753x_nl.c	2022-11-25 17:01:26.881930912 +0800
@@ -75,8 +75,10 @@
 		len = snprintf(buf, sizeof(buf),
 			       "id: %d, model: %s, node: %s\n",
 			       gsw->id, gsw->name, gsw->dev->of_node->name);
-		strncat(buff, buf, size - total);
-		total += len;
+		if (len == strlen(buf)) {
+			strncat(buff, buf, size - total);
+			total += len;
+		}
 	}
 
 	mt753x_put_gsw();
diff -Naur a/drivers/net/phy/mtk/mt753x/mt753x_phy.c b/drivers/net/phy/mtk/mt753x/mt753x_phy.c
--- a/drivers/net/phy/mtk/mt753x/mt753x_phy.c	2022-11-25 14:12:34.160149995 +0800
+++ b/drivers/net/phy/mtk/mt753x/mt753x_phy.c	2022-11-29 14:12:28.261884707 +0800
@@ -141,7 +141,7 @@
 	u16 dev1e_17a_tmp, dev1e_e0_tmp;
 
 	/* *** Iext/Rext Cal start ************ */
-	all_ana_cal_status = ANACAL_INIT;
+	//all_ana_cal_status = ANACAL_INIT;
 	/* analog calibration enable, Rext calibration enable */
 	/* 1e_db[12]:rg_cal_ckinv, [8]:rg_ana_calen, [4]:rg_rext_calen, [0]:rg_zcalen_a */
 	/* 1e_dc[0]:rg_txvos_calen */
@@ -185,7 +185,7 @@
 			all_ana_cal_status = ANACAL_FINISH;
 			//printk("  GE Rext AnaCal Done! (%d)(0x%x)  \r\n", cnt, rg_zcal_ctrl);
 		} else {
-			dev1e_17a_tmp = tc_phy_read_dev_reg(gsw, PHY0, 0x1e, 0x017a);
+			//dev1e_17a_tmp = tc_phy_read_dev_reg(gsw, PHY0, 0x1e, 0x017a);
 			dev1e_e0_tmp =	tc_phy_read_dev_reg(gsw, PHY0, 0x1e, 0xe0);
 			if ((rg_zcal_ctrl == 0x3F) || (rg_zcal_ctrl == 0x00)) {
 				all_ana_cal_status = ANACAL_SATURATION;  /* need to FT(IC fail?) */
@@ -580,33 +580,35 @@
 				} else if (phyaddr == 1) {
 					if (calibration_pair == ANACAL_PAIR_A)
 						tx_amp_temp = tx_amp_temp - 1;
-					else if(calibration_pair == ANACAL_PAIR_B)
-						tx_amp_temp = tx_amp_temp ;
+					//else if(calibration_pair == ANACAL_PAIR_B)
+					//	tx_amp_temp = tx_amp_temp;
 					else if(calibration_pair == ANACAL_PAIR_C)
 						tx_amp_temp = tx_amp_temp - 1;
 					else if(calibration_pair == ANACAL_PAIR_D)
 						tx_amp_temp = tx_amp_temp - 1;
 				} else if (phyaddr == 2) {
-					if (calibration_pair == ANACAL_PAIR_A)
-						tx_amp_temp = tx_amp_temp;
-					else if(calibration_pair == ANACAL_PAIR_B)
+					//if (calibration_pair == ANACAL_PAIR_A)
+					//	tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_B)
+					if(calibration_pair == ANACAL_PAIR_B)
 						tx_amp_temp = tx_amp_temp - 1;
-					else if(calibration_pair == ANACAL_PAIR_C)
-						tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_C)
+					//	tx_amp_temp = tx_amp_temp;
 					else if(calibration_pair == ANACAL_PAIR_D)
 						tx_amp_temp = tx_amp_temp - 1;
-				} else if (phyaddr == 3) {
-					tx_amp_temp = tx_amp_temp;
+				//} else if (phyaddr == 3) {
+				//	tx_amp_temp = tx_amp_temp;
 				} else if (phyaddr == 4) {
-					if (calibration_pair == ANACAL_PAIR_A)
-						tx_amp_temp = tx_amp_temp;
-					else if(calibration_pair == ANACAL_PAIR_B)
+					//if (calibration_pair == ANACAL_PAIR_A)
+					//	tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_B)
+					if(calibration_pair == ANACAL_PAIR_B)
 						tx_amp_temp = tx_amp_temp - 1;
-					else if(calibration_pair == ANACAL_PAIR_C)
-						tx_amp_temp = tx_amp_temp;
-					else if(calibration_pair == ANACAL_PAIR_D)
-						tx_amp_temp = tx_amp_temp;
-				}								
+					//else if(calibration_pair == ANACAL_PAIR_C)
+					//	tx_amp_temp = tx_amp_temp;
+					//else if(calibration_pair == ANACAL_PAIR_D)
+					//	tx_amp_temp = tx_amp_temp;
+				}
 				reg_temp = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, tx_amp_reg)&(~0xff00);
 				tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, tx_amp_reg_100,(tx_amp_temp|((tx_amp_temp)<<tx_amp_reg_shift)));
 				tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, tx_amp_reg, (tx_amp_temp|((tx_amp_temp)<<tx_amp_reg_shift)));
@@ -704,7 +706,7 @@
                                        reg_backup = 0x0000;
                                        reg_backup |= ((reg_tmp << 10) | (reg_tmp << 0));
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x12, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x12);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x12);
 					//printk("PORT[%d] 1e.012 = %x (OFFSET_1000M_PAIR_A)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x16);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -712,7 +714,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (reg_tmp << 0);
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x16, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x16);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x16);
 					//printk("PORT[%d] 1e.016 = %x (OFFSET_TESTMODE_1000M_PAIR_A)\n", phyaddr, reg_backup);
 				}
 				else if(calibration_pair == ANACAL_PAIR_B){
@@ -722,7 +724,7 @@
                                        reg_backup = 0x0000;
                                        reg_backup |= ((reg_tmp << 8) | (reg_tmp << 0));
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x17, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x17);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x17);
 					//printk("PORT[%d] 1e.017 = %x (OFFSET_1000M_PAIR_B)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x18);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -730,7 +732,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (reg_tmp << 0);
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x18, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x18);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x18);
 					//printk("PORT[%d] 1e.018 = %x (OFFSET_TESTMODE_1000M_PAIR_B)\n", phyaddr, reg_backup);
 				}
 				else if(calibration_pair == ANACAL_PAIR_C){
@@ -740,7 +742,7 @@
 					reg_backup = (reg_backup & (~0x3f00));
 					reg_backup |= (reg_tmp << 8);
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x19, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x19);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x19);
 					//printk("PORT[%d] 1e.019 = %x (OFFSET_1000M_PAIR_C)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x20);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -748,7 +750,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (reg_tmp << 0);
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x20, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x20);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x20);
 					//printk("PORT[%d] 1e.020 = %x (OFFSET_TESTMODE_1000M_PAIR_C)\n", phyaddr, reg_backup);
 				}
 				else if(calibration_pair == ANACAL_PAIR_D){
@@ -758,7 +760,7 @@
 					reg_backup = (reg_backup & (~0x3f00));
 					reg_backup |= (reg_tmp << 8);
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x21, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x21);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x21);
 					//printk("PORT[%d] 1e.021 = %x (OFFSET_1000M_PAIR_D)\n", phyaddr, reg_backup);
 					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x22);
 					reg_tmp = ((reg_backup & 0x3f) >> 0);
@@ -766,7 +768,7 @@
 					reg_backup = (reg_backup & (~0x3f));
 					reg_backup |= (reg_tmp << 0);
 					tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x22, reg_backup);
-					reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x22);
+					//reg_backup = tc_phy_read_dev_reg(gsw,  phyaddr, 0x1e, 0x22);
 					//printk("PORT[%d] 1e.022 = %x (OFFSET_TESTMODE_1000M_PAIR_D)\n", phyaddr, reg_backup);
 				}
 
