[PATCH v3 10/12] net/r8169: add support for RTL8125K

Howard Wang howard_wang at realsil.com.cn
Thu Feb 12 06:59:00 CET 2026


This device supports network speeds up to 2.5Gbps.

Signed-off-by: Howard Wang <howard_wang at realsil.com.cn>
---
 drivers/net/r8169/base/rtl8125d.c     |  7 +++++
 drivers/net/r8169/base/rtl8125d_mcu.c |  1 +
 drivers/net/r8169/r8169_compat.h      |  1 +
 drivers/net/r8169/r8169_ethdev.c      |  3 ++
 drivers/net/r8169/r8169_hw.c          | 42 +++++++++++----------------
 drivers/net/r8169/r8169_phy.c         |  1 +
 6 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/drivers/net/r8169/base/rtl8125d.c b/drivers/net/r8169/base/rtl8125d.c
index ac500587e0..70b82858ef 100644
--- a/drivers/net/r8169/base/rtl8125d.c
+++ b/drivers/net/r8169/base/rtl8125d.c
@@ -10,6 +10,7 @@
 /*
  * For RTL8125D, CFG_METHOD_56,57
  * For RTL8168KD, CFG_METHOD_59
+ * For RTL8125K, CFG_METHOD_61
  */
 
 static void
@@ -26,6 +27,7 @@ hw_ephy_config_8125d(struct rtl_hw *hw)
 	case CFG_METHOD_56:
 	case CFG_METHOD_57:
 	case CFG_METHOD_59:
+	case CFG_METHOD_61:
 		/* Nothing to do */
 		break;
 	}
@@ -278,6 +280,7 @@ hw_phy_config_8125d(struct rtl_hw *hw)
 		break;
 	case CFG_METHOD_57:
 	case CFG_METHOD_59:
+	case CFG_METHOD_61:
 		rtl_hw_phy_config_8125d_2(hw);
 		break;
 	}
@@ -302,6 +305,9 @@ hw_mac_mcu_config_8125d(struct rtl_hw *hw)
 	case CFG_METHOD_59:
 		rtl_set_mac_mcu_8125d_2(hw);
 		break;
+	default:
+		/* no mac mcu patch code */
+		break;
 	}
 }
 
@@ -314,6 +320,7 @@ hw_phy_mcu_config_8125d(struct rtl_hw *hw)
 		break;
 	case CFG_METHOD_57:
 	case CFG_METHOD_59:
+	case CFG_METHOD_61:
 		rtl_set_phy_mcu_8125d_2(hw);
 		break;
 	}
diff --git a/drivers/net/r8169/base/rtl8125d_mcu.c b/drivers/net/r8169/base/rtl8125d_mcu.c
index 304bad2998..953c80da5b 100644
--- a/drivers/net/r8169/base/rtl8125d_mcu.c
+++ b/drivers/net/r8169/base/rtl8125d_mcu.c
@@ -10,6 +10,7 @@
 /*
  * For RTL8125D, CFG_METHOD_56,57
  * For RTL8168KD, CFG_METHOD_59
+ * For RTL8125K, CFG_METHOD_61
  */
 
 /* ------------------------------------MAC 8125D------------------------------------- */
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index 4339522f2d..91c84c7633 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -529,6 +529,7 @@ enum RTL_chipset_name {
 	RTL8125CP,
 	RTL8168KD,
 	RTL9151A,
+	RTL8125K,
 	RTL8126A,
 	RTL8168EP,
 	RTL8168FP,
diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c
index 625f50853e..72e014e22b 100644
--- a/drivers/net/r8169/r8169_ethdev.c
+++ b/drivers/net/r8169/r8169_ethdev.c
@@ -172,6 +172,7 @@ _rtl_setup_link(struct rte_eth_dev *dev)
 		case RTL8125D:
 		case RTL8125CP:
 		case RTL9151A:
+		case RTL8125K:
 			speed_mode = SPEED_2500;
 			break;
 		case RTL8126A:
@@ -428,6 +429,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	case CFG_METHOD_57:
 	case CFG_METHOD_58:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 	case CFG_METHOD_70:
 	case CFG_METHOD_71:
 	case CFG_METHOD_91:
@@ -474,6 +476,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	case RTL8125D:
 	case RTL8125CP:
 	case RTL9151A:
+	case RTL8125K:
 		dev_info->speed_capa |= RTE_ETH_LINK_SPEED_2_5G;
 		break;
 	}
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index ef2b0654a5..aa5e160feb 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -602,6 +602,7 @@ rtl_stop_all_request(struct rtl_hw *hw)
 	case CFG_METHOD_58:
 	case CFG_METHOD_59:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 	case CFG_METHOD_70:
 	case CFG_METHOD_71:
 	case CFG_METHOD_91:
@@ -660,6 +661,7 @@ rtl_wait_txrx_fifo_empty(struct rtl_hw *hw)
 	case CFG_METHOD_58:
 	case CFG_METHOD_59:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 	case CFG_METHOD_70:
 	case CFG_METHOD_71:
 	case CFG_METHOD_91:
@@ -898,6 +900,7 @@ rtl8125_set_rx_desc_type(struct rtl_hw *hw)
 	case CFG_METHOD_58:
 	case CFG_METHOD_59:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 		RTL_W8(hw, 0xD8, RTL_R8(hw, 0xD8) & ~EnableRxDescV4_0);
 		break;
 	case CFG_METHOD_70:
@@ -1016,7 +1019,8 @@ rtl8125_hw_config(struct rtl_hw *hw)
 	rtl_oob_mutex_lock(hw);
 
 	if (hw->mcfg == CFG_METHOD_56 || hw->mcfg == CFG_METHOD_57 ||
-	    hw->mcfg == CFG_METHOD_59 || hw->mcfg == CFG_METHOD_60)
+	    hw->mcfg == CFG_METHOD_59 || hw->mcfg == CFG_METHOD_60 ||
+	    hw->mcfg == CFG_METHOD_61)
 		rtl_mac_ocp_write(hw, 0xE0C0, 0x4403);
 	else
 		rtl_mac_ocp_write(hw, 0xE0C0, 0x4000);
@@ -1222,10 +1226,11 @@ rtl_set_hw_ops(struct rtl_hw *hw)
 	case CFG_METHOD_55:
 		hw->hw_ops = rtl8125bp_ops;
 		return 0;
-	/* 8125D and 8168KD */
+	/* 8125D, 8168KD, 8125K */
 	case CFG_METHOD_56:
 	case CFG_METHOD_57:
 	case CFG_METHOD_59:
+	case CFG_METHOD_61:
 		hw->hw_ops = rtl8125d_ops;
 		return 0;
 	/* 8125CP */
@@ -1527,6 +1532,9 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 	case CFG_METHOD_60:
 		hw->chipset_name = RTL9151A;
 		break;
+	case CFG_METHOD_61:
+		hw->chipset_name = RTL8125K;
+		break;
 	case CFG_METHOD_70:
 	case CFG_METHOD_71:
 		hw->chipset_name = RTL8126A;
@@ -1547,6 +1555,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 	case RTL8125D:
 	case RTL8125CP:
 	case RTL9151A:
+	case RTL8125K:
 		speed_mode = SPEED_2500;
 		break;
 	case RTL8126A:
@@ -1659,29 +1668,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 	case CFG_METHOD_37:
 		hw->HwSuppCheckPhyDisableModeVer = 2;
 		break;
-	case CFG_METHOD_23:
-	case CFG_METHOD_27:
-	case CFG_METHOD_28:
-	case CFG_METHOD_31:
-	case CFG_METHOD_32:
-	case CFG_METHOD_33:
-	case CFG_METHOD_34:
-	case CFG_METHOD_48:
-	case CFG_METHOD_49:
-	case CFG_METHOD_50:
-	case CFG_METHOD_51:
-	case CFG_METHOD_52:
-	case CFG_METHOD_53:
-	case CFG_METHOD_54:
-	case CFG_METHOD_55:
-	case CFG_METHOD_56:
-	case CFG_METHOD_57:
-	case CFG_METHOD_58:
-	case CFG_METHOD_59:
-	case CFG_METHOD_60:
-	case CFG_METHOD_70:
-	case CFG_METHOD_71:
-	case CFG_METHOD_91:
+	default:
 		hw->HwSuppCheckPhyDisableModeVer = 3;
 		break;
 	}
@@ -1702,6 +1689,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 	case CFG_METHOD_58:
 	case CFG_METHOD_59:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 	case CFG_METHOD_91:
 		hw->HwSuppTxNoCloseVer = 6;
 		break;
@@ -1791,6 +1779,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 		break;
 	case CFG_METHOD_57:
 	case CFG_METHOD_59:
+	case CFG_METHOD_61:
 		hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_57;
 		break;
 	case CFG_METHOD_58:
@@ -1850,6 +1839,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 	case CFG_METHOD_58:
 	case CFG_METHOD_59:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 	case CFG_METHOD_91:
 		hw->HwSuppIntMitiVer = 6;
 		break;
@@ -2362,6 +2352,8 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
 			hw->mcfg = CFG_METHOD_56;
 		} else if (ic_version_id == 0x100000) {
 			hw->mcfg = CFG_METHOD_57;
+		} else if (ic_version_id == 0x200000) {
+			hw->mcfg = CFG_METHOD_61;
 		} else if (ic_version_id == 0x300000) {
 			hw->mcfg = CFG_METHOD_60;
 		} else {
diff --git a/drivers/net/r8169/r8169_phy.c b/drivers/net/r8169/r8169_phy.c
index de6e512375..079b9e5f00 100644
--- a/drivers/net/r8169/r8169_phy.c
+++ b/drivers/net/r8169/r8169_phy.c
@@ -1051,6 +1051,7 @@ rtl_disable_eee(struct rtl_hw *hw)
 	case CFG_METHOD_58:
 	case CFG_METHOD_59:
 	case CFG_METHOD_60:
+	case CFG_METHOD_61:
 		rtl_clear_mac_ocp_bit(hw, 0xE040, (BIT_1 | BIT_0));
 
 		rtl_set_eth_phy_ocp_bit(hw, 0xA432, BIT_4);
-- 
2.34.1



More information about the dev mailing list