netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* r8169 unknown chip XID 688
@ 2024-10-12 19:03 Luc Willems
  2024-10-12 19:53 ` Heiner Kallweit
  2024-10-13  8:44 ` Heiner Kallweit
  0 siblings, 2 replies; 10+ messages in thread
From: Luc Willems @ 2024-10-12 19:03 UTC (permalink / raw)
  To: netdev

using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel

Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
(2024-09-05T10:03Z) x86_64 GNU/Linux

11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
2.5GbE Controller (rev 0c)
        Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
        Flags: fast devsel, IRQ 43, IOMMU group 26
        I/O ports at e000 [size=256]
        Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
        Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
        Capabilities: [70] Express Endpoint, MSI 01
        Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
        Capabilities: [d0] Vital Product Data
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Virtual Channel
        Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
        Capabilities: [174] Transaction Processing Hints
        Capabilities: [200] Latency Tolerance Reporting
        Capabilities: [208] L1 PM Substates
        Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
Len=100 <?>
        Kernel modules: r8169

root@linux-s05:/root# dmesg |grep r8169
[    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
688, contact r8169 maintainers (see MAINTAINERS file)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-12 19:03 r8169 unknown chip XID 688 Luc Willems
@ 2024-10-12 19:53 ` Heiner Kallweit
  2024-10-13  8:44 ` Heiner Kallweit
  1 sibling, 0 replies; 10+ messages in thread
From: Heiner Kallweit @ 2024-10-12 19:53 UTC (permalink / raw)
  To: Luc Willems, netdev

On 12.10.2024 21:03, Luc Willems wrote:
> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
> 
> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
> (2024-09-05T10:03Z) x86_64 GNU/Linux
> 
> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> 2.5GbE Controller (rev 0c)
>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
>         Flags: fast devsel, IRQ 43, IOMMU group 26
>         I/O ports at e000 [size=256]
>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
>         Capabilities: [40] Power Management version 3
>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>         Capabilities: [70] Express Endpoint, MSI 01
>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
>         Capabilities: [d0] Vital Product Data
>         Capabilities: [100] Advanced Error Reporting
>         Capabilities: [148] Virtual Channel
>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
>         Capabilities: [174] Transaction Processing Hints
>         Capabilities: [200] Latency Tolerance Reporting
>         Capabilities: [208] L1 PM Substates
>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
> Len=100 <?>
>         Kernel modules: r8169
> 
> root@linux-s05:/root# dmesg |grep r8169
> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
> 688, contact r8169 maintainers (see MAINTAINERS file)
> 
Thanks for the report!
Vendor driver r8125 mentions a firmware rtl8125d-1.fw for this new chip
version, which hasn't been submitted yet to linux-firmware by Realtek.
I'll ask my contact at Realtek to take care of this.
Can you build an own kernel? If yes, then I'd provide you with an experimental
patch with support for the new chip version once I have it ready.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-12 19:03 r8169 unknown chip XID 688 Luc Willems
  2024-10-12 19:53 ` Heiner Kallweit
@ 2024-10-13  8:44 ` Heiner Kallweit
  2024-10-14  0:05   ` Luc Willems
  1 sibling, 1 reply; 10+ messages in thread
From: Heiner Kallweit @ 2024-10-13  8:44 UTC (permalink / raw)
  To: Luc Willems, netdev

On 12.10.2024 21:03, Luc Willems wrote:
> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
> 
> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
> (2024-09-05T10:03Z) x86_64 GNU/Linux
> 
> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> 2.5GbE Controller (rev 0c)
>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
>         Flags: fast devsel, IRQ 43, IOMMU group 26
>         I/O ports at e000 [size=256]
>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
>         Capabilities: [40] Power Management version 3
>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>         Capabilities: [70] Express Endpoint, MSI 01
>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
>         Capabilities: [d0] Vital Product Data
>         Capabilities: [100] Advanced Error Reporting
>         Capabilities: [148] Virtual Channel
>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
>         Capabilities: [174] Transaction Processing Hints
>         Capabilities: [200] Latency Tolerance Reporting
>         Capabilities: [208] L1 PM Substates
>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
> Len=100 <?>
>         Kernel modules: r8169
> 
> root@linux-s05:/root# dmesg |grep r8169
> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
> 688, contact r8169 maintainers (see MAINTAINERS file)
> 

Below is a patch with experimental support for RTL8125D. Could you
please test it? Few notes:
- Depending on the PHY ID of the integrated PHY you may receive an
  error message that there's no dedicated PHY driver. Please forward the
  error message with the PHY ID in this case.
- As long as the firmware for this chip version isn't available, link
  might be unstable or worst case completely missing. Driver will complain
  about the missing firmware file, but this error message can be ignored for now.

---
 drivers/net/ethernet/realtek/r8169.h          |  1 +
 drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
 .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
 3 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
index e2db944e6..be4c96226 100644
--- a/drivers/net/ethernet/realtek/r8169.h
+++ b/drivers/net/ethernet/realtek/r8169.h
@@ -68,6 +68,7 @@ enum mac_version {
 	/* support for RTL_GIGA_MAC_VER_60 has been removed */
 	RTL_GIGA_MAC_VER_61,
 	RTL_GIGA_MAC_VER_63,
+	RTL_GIGA_MAC_VER_64,
 	RTL_GIGA_MAC_VER_65,
 	RTL_GIGA_MAC_VER_66,
 	RTL_GIGA_MAC_NONE
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 1a2322824..dcd176a77 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -56,6 +56,7 @@
 #define FIRMWARE_8107E_2	"rtl_nic/rtl8107e-2.fw"
 #define FIRMWARE_8125A_3	"rtl_nic/rtl8125a-3.fw"
 #define FIRMWARE_8125B_2	"rtl_nic/rtl8125b-2.fw"
+#define FIRMWARE_8125D_1	"rtl_nic/rtl8125d-1.fw"
 #define FIRMWARE_8126A_2	"rtl_nic/rtl8126a-2.fw"
 #define FIRMWARE_8126A_3	"rtl_nic/rtl8126a-3.fw"
 
@@ -139,6 +140,7 @@ static const struct {
 	[RTL_GIGA_MAC_VER_61] = {"RTL8125A",		FIRMWARE_8125A_3},
 	/* reserve 62 for CFG_METHOD_4 in the vendor driver */
 	[RTL_GIGA_MAC_VER_63] = {"RTL8125B",		FIRMWARE_8125B_2},
+	[RTL_GIGA_MAC_VER_64] = {"RTL8125D",		FIRMWARE_8125D_1},
 	[RTL_GIGA_MAC_VER_65] = {"RTL8126A",		FIRMWARE_8126A_2},
 	[RTL_GIGA_MAC_VER_66] = {"RTL8126A",		FIRMWARE_8126A_3},
 };
@@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
 MODULE_FIRMWARE(FIRMWARE_8107E_2);
 MODULE_FIRMWARE(FIRMWARE_8125A_3);
 MODULE_FIRMWARE(FIRMWARE_8125B_2);
+MODULE_FIRMWARE(FIRMWARE_8125D_1);
 MODULE_FIRMWARE(FIRMWARE_8126A_2);
 MODULE_FIRMWARE(FIRMWARE_8126A_3);
 
@@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
 		tp->tx_lpi_timer = timer_val;
 		r8168_mac_ocp_write(tp, 0xe048, timer_val);
 		break;
-	case RTL_GIGA_MAC_VER_61:
-	case RTL_GIGA_MAC_VER_63:
-	case RTL_GIGA_MAC_VER_65:
-	case RTL_GIGA_MAC_VER_66:
+	case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
 		tp->tx_lpi_timer = timer_val;
 		RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
 		break;
@@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
 		{ 0x7cf, 0x64a,	RTL_GIGA_MAC_VER_66 },
 		{ 0x7cf, 0x649,	RTL_GIGA_MAC_VER_65 },
 
+		/* 8125D family. */
+		{ 0x7cf, 0x688,	RTL_GIGA_MAC_VER_64 },
+
 		/* 8125B family. */
 		{ 0x7cf, 0x641,	RTL_GIGA_MAC_VER_63 },
 
@@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
 	case RTL_GIGA_MAC_VER_61:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
 		break;
-	case RTL_GIGA_MAC_VER_63:
-	case RTL_GIGA_MAC_VER_65:
-	case RTL_GIGA_MAC_VER_66:
+	case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
 		RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
 			RX_PAUSE_SLOT_ON);
 		break;
@@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
 	rtl_hw_start_8125_common(tp);
 }
 
+static void rtl_hw_start_8125d(struct rtl8169_private *tp)
+{
+	rtl_set_def_aspm_entry_latency(tp);
+	rtl_hw_start_8125_common(tp);
+}
+
 static void rtl_hw_start_8126a(struct rtl8169_private *tp)
 {
 	rtl_set_def_aspm_entry_latency(tp);
@@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
 		[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
 		[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
 		[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
+		[RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
 		[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
 		[RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
 	};
@@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
 	/* disable interrupt coalescing */
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_61:
+	case RTL_GIGA_MAC_VER_64:
 		for (i = 0xa00; i < 0xb00; i += 4)
 			RTL_W32(tp, i, 0);
 		break;
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
index cf29b1208..6b70f23c8 100644
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
@@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
 	rtl8125b_config_eee_phy(phydev);
 }
 
+static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
+				   struct phy_device *phydev)
+{
+	r8169_apply_firmware(tp);
+}
+
 static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
 				   struct phy_device *phydev)
 {
@@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
 		[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
 		[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
 		[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
+		[RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
 		[RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
 		[RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
 	};
-- 
2.47.0



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-13  8:44 ` Heiner Kallweit
@ 2024-10-14  0:05   ` Luc Willems
  2024-10-14 10:22     ` Heiner Kallweit
  0 siblings, 1 reply; 10+ messages in thread
From: Luc Willems @ 2024-10-14  0:05 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev

HI ,

installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
with the realtek injected using pci pass through.
i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
related entries because these don't seem to be in this kernel

running this kernel gives me this result now

root@prxmox-kernel:~# uname -a
Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
root@prxmox-kernel:~# dmesg |grep r8169
[    0.000000] Linux version 6.10+unreleased-amd64
(debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
PREEMPT_DYNAMIC Debian 6.10.
11-1~bpo12+1r8169p1 (2024-10-
[    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
[    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49

root@prxmox-kernel:~# modinfo r8169
filename:
/lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
firmware:       rtl_nic/rtl8126a-2.fw
firmware:       rtl_nic/rtl8125d-1.fw
firmware:       rtl_nic/rtl8125b-2.fw
firmware:       rtl_nic/rtl8125a-3.fw
firmware:       rtl_nic/rtl8107e-2.fw
firmware:       rtl_nic/rtl8168fp-3.fw
firmware:       rtl_nic/rtl8168h-2.fw
firmware:       rtl_nic/rtl8168g-3.fw
firmware:       rtl_nic/rtl8168g-2.fw
firmware:       rtl_nic/rtl8106e-2.fw
firmware:       rtl_nic/rtl8106e-1.fw
firmware:       rtl_nic/rtl8411-2.fw
firmware:       rtl_nic/rtl8411-1.fw
firmware:       rtl_nic/rtl8402-1.fw
firmware:       rtl_nic/rtl8168f-2.fw
firmware:       rtl_nic/rtl8168f-1.fw
firmware:       rtl_nic/rtl8105e-1.fw
firmware:       rtl_nic/rtl8168e-3.fw
firmware:       rtl_nic/rtl8168e-2.fw
firmware:       rtl_nic/rtl8168e-1.fw
firmware:       rtl_nic/rtl8168d-2.fw
firmware:       rtl_nic/rtl8168d-1.fw
license:        GPL
softdep:        pre: realtek
description:    RealTek RTL-8169 Gigabit Ethernet driver
author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
depends:        libphy,mdio_devres
retpoline:      Y
intree:         Y
name:           r8169
vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions

root@prxmox-kernel:~# lsmod |grep real
realtek                45056  0
libphy                225280  3 r8169,mdio_devres,realtek
root@prxmox-kernel:~#

On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>
> On 12.10.2024 21:03, Luc Willems wrote:
> > using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
> >
> > Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
> > (2024-09-05T10:03Z) x86_64 GNU/Linux
> >
> > 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> > 2.5GbE Controller (rev 0c)
> >         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
> >         Flags: fast devsel, IRQ 43, IOMMU group 26
> >         I/O ports at e000 [size=256]
> >         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
> >         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
> >         Capabilities: [40] Power Management version 3
> >         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
> >         Capabilities: [70] Express Endpoint, MSI 01
> >         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
> >         Capabilities: [d0] Vital Product Data
> >         Capabilities: [100] Advanced Error Reporting
> >         Capabilities: [148] Virtual Channel
> >         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
> >         Capabilities: [174] Transaction Processing Hints
> >         Capabilities: [200] Latency Tolerance Reporting
> >         Capabilities: [208] L1 PM Substates
> >         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
> > Len=100 <?>
> >         Kernel modules: r8169
> >
> > root@linux-s05:/root# dmesg |grep r8169
> > [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
> > 688, contact r8169 maintainers (see MAINTAINERS file)
> >
>
> Below is a patch with experimental support for RTL8125D. Could you
> please test it? Few notes:
> - Depending on the PHY ID of the integrated PHY you may receive an
>   error message that there's no dedicated PHY driver. Please forward the
>   error message with the PHY ID in this case.
> - As long as the firmware for this chip version isn't available, link
>   might be unstable or worst case completely missing. Driver will complain
>   about the missing firmware file, but this error message can be ignored for now.
>
> ---
>  drivers/net/ethernet/realtek/r8169.h          |  1 +
>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
>  3 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
> index e2db944e6..be4c96226 100644
> --- a/drivers/net/ethernet/realtek/r8169.h
> +++ b/drivers/net/ethernet/realtek/r8169.h
> @@ -68,6 +68,7 @@ enum mac_version {
>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
>         RTL_GIGA_MAC_VER_61,
>         RTL_GIGA_MAC_VER_63,
> +       RTL_GIGA_MAC_VER_64,
>         RTL_GIGA_MAC_VER_65,
>         RTL_GIGA_MAC_VER_66,
>         RTL_GIGA_MAC_NONE
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index 1a2322824..dcd176a77 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -56,6 +56,7 @@
>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
>
> @@ -139,6 +140,7 @@ static const struct {
>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
>  };
> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
>
> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
>                 tp->tx_lpi_timer = timer_val;
>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
>                 break;
> -       case RTL_GIGA_MAC_VER_61:
> -       case RTL_GIGA_MAC_VER_63:
> -       case RTL_GIGA_MAC_VER_65:
> -       case RTL_GIGA_MAC_VER_66:
> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
>                 tp->tx_lpi_timer = timer_val;
>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
>                 break;
> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
>
> +               /* 8125D family. */
> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
> +
>                 /* 8125B family. */
>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
>
> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>         case RTL_GIGA_MAC_VER_61:
>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>                 break;
> -       case RTL_GIGA_MAC_VER_63:
> -       case RTL_GIGA_MAC_VER_65:
> -       case RTL_GIGA_MAC_VER_66:
> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>                         RX_PAUSE_SLOT_ON);
>                 break;
> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>         rtl_hw_start_8125_common(tp);
>  }
>
> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
> +{
> +       rtl_set_def_aspm_entry_latency(tp);
> +       rtl_hw_start_8125_common(tp);
> +}
> +
>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>  {
>         rtl_set_def_aspm_entry_latency(tp);
> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
>         };
> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>         /* disable interrupt coalescing */
>         switch (tp->mac_version) {
>         case RTL_GIGA_MAC_VER_61:
> +       case RTL_GIGA_MAC_VER_64:
>                 for (i = 0xa00; i < 0xb00; i += 4)
>                         RTL_W32(tp, i, 0);
>                 break;
> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
> index cf29b1208..6b70f23c8 100644
> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
>         rtl8125b_config_eee_phy(phydev);
>  }
>
> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
> +                                  struct phy_device *phydev)
> +{
> +       r8169_apply_firmware(tp);
> +}
> +
>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
>                                    struct phy_device *phydev)
>  {
> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
>         };
> --
> 2.47.0
>
>


-- 
T.M.M BV
Luc Willems
Schoolblok 7
2275 Lille


mobile: 0478/959140
email: luc.willems@t-m-m.be

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-14  0:05   ` Luc Willems
@ 2024-10-14 10:22     ` Heiner Kallweit
  2024-10-14 12:31       ` Luc Willems
  0 siblings, 1 reply; 10+ messages in thread
From: Heiner Kallweit @ 2024-10-14 10:22 UTC (permalink / raw)
  To: Luc Willems; +Cc: netdev

On 14.10.2024 02:05, Luc Willems wrote:
> HI ,
> 
> installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
> with the realtek injected using pci pass through.
> i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
> related entries because these don't seem to be in this kernel
> 
> running this kernel gives me this result now
> 
> root@prxmox-kernel:~# uname -a
> Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
> Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
> root@prxmox-kernel:~# dmesg |grep r8169
> [    0.000000] Linux version 6.10+unreleased-amd64
> (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
> 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
> PREEMPT_DYNAMIC Debian 6.10.
> 11-1~bpo12+1r8169p1 (2024-10-
> [    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
> PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
> [    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49
> 
> root@prxmox-kernel:~# modinfo r8169
> filename:
> /lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
> firmware:       rtl_nic/rtl8126a-2.fw
> firmware:       rtl_nic/rtl8125d-1.fw
> firmware:       rtl_nic/rtl8125b-2.fw
> firmware:       rtl_nic/rtl8125a-3.fw
> firmware:       rtl_nic/rtl8107e-2.fw
> firmware:       rtl_nic/rtl8168fp-3.fw
> firmware:       rtl_nic/rtl8168h-2.fw
> firmware:       rtl_nic/rtl8168g-3.fw
> firmware:       rtl_nic/rtl8168g-2.fw
> firmware:       rtl_nic/rtl8106e-2.fw
> firmware:       rtl_nic/rtl8106e-1.fw
> firmware:       rtl_nic/rtl8411-2.fw
> firmware:       rtl_nic/rtl8411-1.fw
> firmware:       rtl_nic/rtl8402-1.fw
> firmware:       rtl_nic/rtl8168f-2.fw
> firmware:       rtl_nic/rtl8168f-1.fw
> firmware:       rtl_nic/rtl8105e-1.fw
> firmware:       rtl_nic/rtl8168e-3.fw
> firmware:       rtl_nic/rtl8168e-2.fw
> firmware:       rtl_nic/rtl8168e-1.fw
> firmware:       rtl_nic/rtl8168d-2.fw
> firmware:       rtl_nic/rtl8168d-1.fw
> license:        GPL
> softdep:        pre: realtek
> description:    RealTek RTL-8169 Gigabit Ethernet driver
> author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
> alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
> alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
> alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
> alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
> alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
> alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
> alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
> alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
> alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
> alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
> alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
> depends:        libphy,mdio_devres
> retpoline:      Y
> intree:         Y
> name:           r8169
> vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions
> 
> root@prxmox-kernel:~# lsmod |grep real
> realtek                45056  0
> libphy                225280  3 r8169,mdio_devres,realtek
> root@prxmox-kernel:~#
> 
> On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>
>> On 12.10.2024 21:03, Luc Willems wrote:
>>> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
>>>
>>> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
>>> (2024-09-05T10:03Z) x86_64 GNU/Linux
>>>
>>> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
>>> 2.5GbE Controller (rev 0c)
>>>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
>>>         Flags: fast devsel, IRQ 43, IOMMU group 26
>>>         I/O ports at e000 [size=256]
>>>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
>>>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
>>>         Capabilities: [40] Power Management version 3
>>>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>>>         Capabilities: [70] Express Endpoint, MSI 01
>>>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
>>>         Capabilities: [d0] Vital Product Data
>>>         Capabilities: [100] Advanced Error Reporting
>>>         Capabilities: [148] Virtual Channel
>>>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
>>>         Capabilities: [174] Transaction Processing Hints
>>>         Capabilities: [200] Latency Tolerance Reporting
>>>         Capabilities: [208] L1 PM Substates
>>>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
>>> Len=100 <?>
>>>         Kernel modules: r8169
>>>
>>> root@linux-s05:/root# dmesg |grep r8169
>>> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
>>> 688, contact r8169 maintainers (see MAINTAINERS file)
>>>
>>
>> Below is a patch with experimental support for RTL8125D. Could you
>> please test it? Few notes:
>> - Depending on the PHY ID of the integrated PHY you may receive an
>>   error message that there's no dedicated PHY driver. Please forward the
>>   error message with the PHY ID in this case.
>> - As long as the firmware for this chip version isn't available, link
>>   might be unstable or worst case completely missing. Driver will complain
>>   about the missing firmware file, but this error message can be ignored for now.
>>
>> ---
>>  drivers/net/ethernet/realtek/r8169.h          |  1 +
>>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
>>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
>>  3 files changed, 24 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>> index e2db944e6..be4c96226 100644
>> --- a/drivers/net/ethernet/realtek/r8169.h
>> +++ b/drivers/net/ethernet/realtek/r8169.h
>> @@ -68,6 +68,7 @@ enum mac_version {
>>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>         RTL_GIGA_MAC_VER_61,
>>         RTL_GIGA_MAC_VER_63,
>> +       RTL_GIGA_MAC_VER_64,
>>         RTL_GIGA_MAC_VER_65,
>>         RTL_GIGA_MAC_VER_66,
>>         RTL_GIGA_MAC_NONE
>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>> index 1a2322824..dcd176a77 100644
>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>> @@ -56,6 +56,7 @@
>>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
>>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
>>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
>> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
>>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
>>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
>>
>> @@ -139,6 +140,7 @@ static const struct {
>>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
>>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
>> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
>>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
>>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
>>  };
>> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
>>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
>>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
>>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
>> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
>>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
>>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
>>
>> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
>>                 tp->tx_lpi_timer = timer_val;
>>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
>>                 break;
>> -       case RTL_GIGA_MAC_VER_61:
>> -       case RTL_GIGA_MAC_VER_63:
>> -       case RTL_GIGA_MAC_VER_65:
>> -       case RTL_GIGA_MAC_VER_66:
>> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
>>                 tp->tx_lpi_timer = timer_val;
>>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
>>                 break;
>> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
>>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
>>
>> +               /* 8125D family. */
>> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
>> +
>>                 /* 8125B family. */
>>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
>>
>> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>         case RTL_GIGA_MAC_VER_61:
>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>                 break;
>> -       case RTL_GIGA_MAC_VER_63:
>> -       case RTL_GIGA_MAC_VER_65:
>> -       case RTL_GIGA_MAC_VER_66:
>> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>                         RX_PAUSE_SLOT_ON);
>>                 break;
>> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>         rtl_hw_start_8125_common(tp);
>>  }
>>
>> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
>> +{
>> +       rtl_set_def_aspm_entry_latency(tp);
>> +       rtl_hw_start_8125_common(tp);
>> +}
>> +
>>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>  {
>>         rtl_set_def_aspm_entry_latency(tp);
>> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
>>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
>>         };
>> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>         /* disable interrupt coalescing */
>>         switch (tp->mac_version) {
>>         case RTL_GIGA_MAC_VER_61:
>> +       case RTL_GIGA_MAC_VER_64:
>>                 for (i = 0xa00; i < 0xb00; i += 4)
>>                         RTL_W32(tp, i, 0);
>>                 break;
>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>> index cf29b1208..6b70f23c8 100644
>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
>>         rtl8125b_config_eee_phy(phydev);
>>  }
>>
>> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
>> +                                  struct phy_device *phydev)
>> +{
>> +       r8169_apply_firmware(tp);
>> +}
>> +
>>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
>>                                    struct phy_device *phydev)
>>  {
>> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
>>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
>>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
>>         };
>> --
>> 2.47.0
>>
>>
> 
> 

Thanks for testing. For PHY ID 0x001cc841 there's no PHY driver yet.
Following isn't a proper patch but just a quick hack to see whether
it makes your NIC work. Could you please apply this change on top
and re-test?

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 166f6a728..1bb8139cb 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -1348,7 +1348,7 @@ static struct phy_driver realtek_drvs[] = {
 		.read_mmd	= rtl822x_read_mmd,
 		.write_mmd	= rtl822x_write_mmd,
 	}, {
-		PHY_ID_MATCH_EXACT(0x001cc840),
+		PHY_ID_MATCH_EXACT(0x001cc841),
 		.name		= "RTL8226B_RTL8221B 2.5Gbps PHY",
 		.get_features	= rtl822x_get_features,
 		.config_aneg	= rtl822x_config_aneg,




^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-14 10:22     ` Heiner Kallweit
@ 2024-10-14 12:31       ` Luc Willems
  2024-10-14 12:48         ` Luc Willems
  0 siblings, 1 reply; 10+ messages in thread
From: Luc Willems @ 2024-10-14 12:31 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev

after last patch, i now have an ens16 interface but not able to assign
ip using static or dhcp

[    0.586421] r8169 0000:00:10.0 eth0: RTL8125D, 10:ff:e0:6b:66:98,
XID 688, IRQ 46
[    0.586424] r8169 0000:00:10.0 eth0: jumbo features [frames: 9194
bytes, tx checksumming: ko]
[    0.789719] r8169 0000:00:10.0 ens16: renamed from eth0
[   13.583533] r8169 0000:00:10.0: firmware: failed to load
rtl_nic/rtl8125d-1.fw (-2)
[   13.583541] r8169 0000:00:10.0: firmware: failed to load
rtl_nic/rtl8125d-1.fw (-2)
[   13.583542] r8169 0000:00:10.0: Direct firmware load for
rtl_nic/rtl8125d-1.fw failed with error -2
[   13.583544] r8169 0000:00:10.0: Unable to load firmware
rtl_nic/rtl8125d-1.fw (-2)
[   13.609457] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-80:00: attached
PHY driver (mii_bus:phy_addr=r8169-0-80:00, irq=MAC)
[   13.737853] r8169 0000:00:10.0 ens16: Link is Down
[   16.937666] r8169 0000:00:10.0 ens16: Link is Up - 2.5Gbps/Full -
flow control rx/tx
root@prxmox-kernel:~#

On Mon, Oct 14, 2024 at 12:22 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>
> On 14.10.2024 02:05, Luc Willems wrote:
> > HI ,
> >
> > installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
> > with the realtek injected using pci pass through.
> > i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
> > related entries because these don't seem to be in this kernel
> >
> > running this kernel gives me this result now
> >
> > root@prxmox-kernel:~# uname -a
> > Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
> > Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
> > root@prxmox-kernel:~# dmesg |grep r8169
> > [    0.000000] Linux version 6.10+unreleased-amd64
> > (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
> > 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
> > PREEMPT_DYNAMIC Debian 6.10.
> > 11-1~bpo12+1r8169p1 (2024-10-
> > [    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
> > PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
> > [    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49
> >
> > root@prxmox-kernel:~# modinfo r8169
> > filename:
> > /lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
> > firmware:       rtl_nic/rtl8126a-2.fw
> > firmware:       rtl_nic/rtl8125d-1.fw
> > firmware:       rtl_nic/rtl8125b-2.fw
> > firmware:       rtl_nic/rtl8125a-3.fw
> > firmware:       rtl_nic/rtl8107e-2.fw
> > firmware:       rtl_nic/rtl8168fp-3.fw
> > firmware:       rtl_nic/rtl8168h-2.fw
> > firmware:       rtl_nic/rtl8168g-3.fw
> > firmware:       rtl_nic/rtl8168g-2.fw
> > firmware:       rtl_nic/rtl8106e-2.fw
> > firmware:       rtl_nic/rtl8106e-1.fw
> > firmware:       rtl_nic/rtl8411-2.fw
> > firmware:       rtl_nic/rtl8411-1.fw
> > firmware:       rtl_nic/rtl8402-1.fw
> > firmware:       rtl_nic/rtl8168f-2.fw
> > firmware:       rtl_nic/rtl8168f-1.fw
> > firmware:       rtl_nic/rtl8105e-1.fw
> > firmware:       rtl_nic/rtl8168e-3.fw
> > firmware:       rtl_nic/rtl8168e-2.fw
> > firmware:       rtl_nic/rtl8168e-1.fw
> > firmware:       rtl_nic/rtl8168d-2.fw
> > firmware:       rtl_nic/rtl8168d-1.fw
> > license:        GPL
> > softdep:        pre: realtek
> > description:    RealTek RTL-8169 Gigabit Ethernet driver
> > author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
> > alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
> > alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
> > alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
> > alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
> > alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
> > alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
> > alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
> > alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
> > alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
> > alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
> > alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
> > depends:        libphy,mdio_devres
> > retpoline:      Y
> > intree:         Y
> > name:           r8169
> > vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions
> >
> > root@prxmox-kernel:~# lsmod |grep real
> > realtek                45056  0
> > libphy                225280  3 r8169,mdio_devres,realtek
> > root@prxmox-kernel:~#
> >
> > On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
> >>
> >> On 12.10.2024 21:03, Luc Willems wrote:
> >>> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
> >>>
> >>> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
> >>> (2024-09-05T10:03Z) x86_64 GNU/Linux
> >>>
> >>> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> >>> 2.5GbE Controller (rev 0c)
> >>>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
> >>>         Flags: fast devsel, IRQ 43, IOMMU group 26
> >>>         I/O ports at e000 [size=256]
> >>>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
> >>>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
> >>>         Capabilities: [40] Power Management version 3
> >>>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
> >>>         Capabilities: [70] Express Endpoint, MSI 01
> >>>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
> >>>         Capabilities: [d0] Vital Product Data
> >>>         Capabilities: [100] Advanced Error Reporting
> >>>         Capabilities: [148] Virtual Channel
> >>>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
> >>>         Capabilities: [174] Transaction Processing Hints
> >>>         Capabilities: [200] Latency Tolerance Reporting
> >>>         Capabilities: [208] L1 PM Substates
> >>>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
> >>> Len=100 <?>
> >>>         Kernel modules: r8169
> >>>
> >>> root@linux-s05:/root# dmesg |grep r8169
> >>> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
> >>> 688, contact r8169 maintainers (see MAINTAINERS file)
> >>>
> >>
> >> Below is a patch with experimental support for RTL8125D. Could you
> >> please test it? Few notes:
> >> - Depending on the PHY ID of the integrated PHY you may receive an
> >>   error message that there's no dedicated PHY driver. Please forward the
> >>   error message with the PHY ID in this case.
> >> - As long as the firmware for this chip version isn't available, link
> >>   might be unstable or worst case completely missing. Driver will complain
> >>   about the missing firmware file, but this error message can be ignored for now.
> >>
> >> ---
> >>  drivers/net/ethernet/realtek/r8169.h          |  1 +
> >>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
> >>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
> >>  3 files changed, 24 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
> >> index e2db944e6..be4c96226 100644
> >> --- a/drivers/net/ethernet/realtek/r8169.h
> >> +++ b/drivers/net/ethernet/realtek/r8169.h
> >> @@ -68,6 +68,7 @@ enum mac_version {
> >>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
> >>         RTL_GIGA_MAC_VER_61,
> >>         RTL_GIGA_MAC_VER_63,
> >> +       RTL_GIGA_MAC_VER_64,
> >>         RTL_GIGA_MAC_VER_65,
> >>         RTL_GIGA_MAC_VER_66,
> >>         RTL_GIGA_MAC_NONE
> >> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> >> index 1a2322824..dcd176a77 100644
> >> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >> @@ -56,6 +56,7 @@
> >>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
> >>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
> >>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
> >> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
> >>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
> >>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
> >>
> >> @@ -139,6 +140,7 @@ static const struct {
> >>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
> >>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
> >>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
> >> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
> >>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
> >>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
> >>  };
> >> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
> >>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
> >>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
> >>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
> >> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
> >>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
> >>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
> >>
> >> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
> >>                 tp->tx_lpi_timer = timer_val;
> >>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
> >>                 break;
> >> -       case RTL_GIGA_MAC_VER_61:
> >> -       case RTL_GIGA_MAC_VER_63:
> >> -       case RTL_GIGA_MAC_VER_65:
> >> -       case RTL_GIGA_MAC_VER_66:
> >> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
> >>                 tp->tx_lpi_timer = timer_val;
> >>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
> >>                 break;
> >> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
> >>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
> >>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
> >>
> >> +               /* 8125D family. */
> >> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
> >> +
> >>                 /* 8125B family. */
> >>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
> >>
> >> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
> >>         case RTL_GIGA_MAC_VER_61:
> >>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
> >>                 break;
> >> -       case RTL_GIGA_MAC_VER_63:
> >> -       case RTL_GIGA_MAC_VER_65:
> >> -       case RTL_GIGA_MAC_VER_66:
> >> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
> >>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> >>                         RX_PAUSE_SLOT_ON);
> >>                 break;
> >> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> >>         rtl_hw_start_8125_common(tp);
> >>  }
> >>
> >> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
> >> +{
> >> +       rtl_set_def_aspm_entry_latency(tp);
> >> +       rtl_hw_start_8125_common(tp);
> >> +}
> >> +
> >>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
> >>  {
> >>         rtl_set_def_aspm_entry_latency(tp);
> >> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
> >>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
> >>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
> >>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
> >> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
> >>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
> >>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
> >>         };
> >> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
> >>         /* disable interrupt coalescing */
> >>         switch (tp->mac_version) {
> >>         case RTL_GIGA_MAC_VER_61:
> >> +       case RTL_GIGA_MAC_VER_64:
> >>                 for (i = 0xa00; i < 0xb00; i += 4)
> >>                         RTL_W32(tp, i, 0);
> >>                 break;
> >> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
> >> index cf29b1208..6b70f23c8 100644
> >> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
> >> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
> >> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
> >>         rtl8125b_config_eee_phy(phydev);
> >>  }
> >>
> >> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
> >> +                                  struct phy_device *phydev)
> >> +{
> >> +       r8169_apply_firmware(tp);
> >> +}
> >> +
> >>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
> >>                                    struct phy_device *phydev)
> >>  {
> >> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
> >>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
> >>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
> >>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
> >> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
> >>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
> >>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
> >>         };
> >> --
> >> 2.47.0
> >>
> >>
> >
> >
>
> Thanks for testing. For PHY ID 0x001cc841 there's no PHY driver yet.
> Following isn't a proper patch but just a quick hack to see whether
> it makes your NIC work. Could you please apply this change on top
> and re-test?
>
> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> index 166f6a728..1bb8139cb 100644
> --- a/drivers/net/phy/realtek.c
> +++ b/drivers/net/phy/realtek.c
> @@ -1348,7 +1348,7 @@ static struct phy_driver realtek_drvs[] = {
>                 .read_mmd       = rtl822x_read_mmd,
>                 .write_mmd      = rtl822x_write_mmd,
>         }, {
> -               PHY_ID_MATCH_EXACT(0x001cc840),
> +               PHY_ID_MATCH_EXACT(0x001cc841),
>                 .name           = "RTL8226B_RTL8221B 2.5Gbps PHY",
>                 .get_features   = rtl822x_get_features,
>                 .config_aneg    = rtl822x_config_aneg,
>
>
>


-- 
T.M.M BV
Luc Willems
Schoolblok 7
2275 Lille


mobile: 0478/959140
email: luc.willems@t-m-m.be

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-14 12:31       ` Luc Willems
@ 2024-10-14 12:48         ` Luc Willems
  2024-10-16  5:44           ` Heiner Kallweit
  0 siblings, 1 reply; 10+ messages in thread
From: Luc Willems @ 2024-10-14 12:48 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev

small correction, it took some time but dhcp has finally assigned an ip address

I could run iperf3 on it, getting 2.35Gbits/sec for a short test.
but after reboot i lost connectivity again , even switching to static
ip did not provide a solution.

so for the moment, not very stable.
seems we need to wait to have specific firmware.





On Mon, Oct 14, 2024 at 2:31 PM Luc Willems <luc.willems@t-m-m.be> wrote:
>
> after last patch, i now have an ens16 interface but not able to assign
> ip using static or dhcp
>
> [    0.586421] r8169 0000:00:10.0 eth0: RTL8125D, 10:ff:e0:6b:66:98,
> XID 688, IRQ 46
> [    0.586424] r8169 0000:00:10.0 eth0: jumbo features [frames: 9194
> bytes, tx checksumming: ko]
> [    0.789719] r8169 0000:00:10.0 ens16: renamed from eth0
> [   13.583533] r8169 0000:00:10.0: firmware: failed to load
> rtl_nic/rtl8125d-1.fw (-2)
> [   13.583541] r8169 0000:00:10.0: firmware: failed to load
> rtl_nic/rtl8125d-1.fw (-2)
> [   13.583542] r8169 0000:00:10.0: Direct firmware load for
> rtl_nic/rtl8125d-1.fw failed with error -2
> [   13.583544] r8169 0000:00:10.0: Unable to load firmware
> rtl_nic/rtl8125d-1.fw (-2)
> [   13.609457] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-80:00: attached
> PHY driver (mii_bus:phy_addr=r8169-0-80:00, irq=MAC)
> [   13.737853] r8169 0000:00:10.0 ens16: Link is Down
> [   16.937666] r8169 0000:00:10.0 ens16: Link is Up - 2.5Gbps/Full -
> flow control rx/tx
> root@prxmox-kernel:~#
>
> On Mon, Oct 14, 2024 at 12:22 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
> >
> > On 14.10.2024 02:05, Luc Willems wrote:
> > > HI ,
> > >
> > > installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
> > > with the realtek injected using pci pass through.
> > > i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
> > > related entries because these don't seem to be in this kernel
> > >
> > > running this kernel gives me this result now
> > >
> > > root@prxmox-kernel:~# uname -a
> > > Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
> > > Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
> > > root@prxmox-kernel:~# dmesg |grep r8169
> > > [    0.000000] Linux version 6.10+unreleased-amd64
> > > (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
> > > 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
> > > PREEMPT_DYNAMIC Debian 6.10.
> > > 11-1~bpo12+1r8169p1 (2024-10-
> > > [    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
> > > PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
> > > [    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49
> > >
> > > root@prxmox-kernel:~# modinfo r8169
> > > filename:
> > > /lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
> > > firmware:       rtl_nic/rtl8126a-2.fw
> > > firmware:       rtl_nic/rtl8125d-1.fw
> > > firmware:       rtl_nic/rtl8125b-2.fw
> > > firmware:       rtl_nic/rtl8125a-3.fw
> > > firmware:       rtl_nic/rtl8107e-2.fw
> > > firmware:       rtl_nic/rtl8168fp-3.fw
> > > firmware:       rtl_nic/rtl8168h-2.fw
> > > firmware:       rtl_nic/rtl8168g-3.fw
> > > firmware:       rtl_nic/rtl8168g-2.fw
> > > firmware:       rtl_nic/rtl8106e-2.fw
> > > firmware:       rtl_nic/rtl8106e-1.fw
> > > firmware:       rtl_nic/rtl8411-2.fw
> > > firmware:       rtl_nic/rtl8411-1.fw
> > > firmware:       rtl_nic/rtl8402-1.fw
> > > firmware:       rtl_nic/rtl8168f-2.fw
> > > firmware:       rtl_nic/rtl8168f-1.fw
> > > firmware:       rtl_nic/rtl8105e-1.fw
> > > firmware:       rtl_nic/rtl8168e-3.fw
> > > firmware:       rtl_nic/rtl8168e-2.fw
> > > firmware:       rtl_nic/rtl8168e-1.fw
> > > firmware:       rtl_nic/rtl8168d-2.fw
> > > firmware:       rtl_nic/rtl8168d-1.fw
> > > license:        GPL
> > > softdep:        pre: realtek
> > > description:    RealTek RTL-8169 Gigabit Ethernet driver
> > > author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
> > > alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
> > > alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
> > > alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
> > > alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
> > > alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
> > > alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
> > > alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
> > > alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
> > > alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
> > > alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
> > > alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
> > > depends:        libphy,mdio_devres
> > > retpoline:      Y
> > > intree:         Y
> > > name:           r8169
> > > vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions
> > >
> > > root@prxmox-kernel:~# lsmod |grep real
> > > realtek                45056  0
> > > libphy                225280  3 r8169,mdio_devres,realtek
> > > root@prxmox-kernel:~#
> > >
> > > On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
> > >>
> > >> On 12.10.2024 21:03, Luc Willems wrote:
> > >>> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
> > >>>
> > >>> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
> > >>> (2024-09-05T10:03Z) x86_64 GNU/Linux
> > >>>
> > >>> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> > >>> 2.5GbE Controller (rev 0c)
> > >>>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
> > >>>         Flags: fast devsel, IRQ 43, IOMMU group 26
> > >>>         I/O ports at e000 [size=256]
> > >>>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
> > >>>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
> > >>>         Capabilities: [40] Power Management version 3
> > >>>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
> > >>>         Capabilities: [70] Express Endpoint, MSI 01
> > >>>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
> > >>>         Capabilities: [d0] Vital Product Data
> > >>>         Capabilities: [100] Advanced Error Reporting
> > >>>         Capabilities: [148] Virtual Channel
> > >>>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
> > >>>         Capabilities: [174] Transaction Processing Hints
> > >>>         Capabilities: [200] Latency Tolerance Reporting
> > >>>         Capabilities: [208] L1 PM Substates
> > >>>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
> > >>> Len=100 <?>
> > >>>         Kernel modules: r8169
> > >>>
> > >>> root@linux-s05:/root# dmesg |grep r8169
> > >>> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
> > >>> 688, contact r8169 maintainers (see MAINTAINERS file)
> > >>>
> > >>
> > >> Below is a patch with experimental support for RTL8125D. Could you
> > >> please test it? Few notes:
> > >> - Depending on the PHY ID of the integrated PHY you may receive an
> > >>   error message that there's no dedicated PHY driver. Please forward the
> > >>   error message with the PHY ID in this case.
> > >> - As long as the firmware for this chip version isn't available, link
> > >>   might be unstable or worst case completely missing. Driver will complain
> > >>   about the missing firmware file, but this error message can be ignored for now.
> > >>
> > >> ---
> > >>  drivers/net/ethernet/realtek/r8169.h          |  1 +
> > >>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
> > >>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
> > >>  3 files changed, 24 insertions(+), 7 deletions(-)
> > >>
> > >> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
> > >> index e2db944e6..be4c96226 100644
> > >> --- a/drivers/net/ethernet/realtek/r8169.h
> > >> +++ b/drivers/net/ethernet/realtek/r8169.h
> > >> @@ -68,6 +68,7 @@ enum mac_version {
> > >>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
> > >>         RTL_GIGA_MAC_VER_61,
> > >>         RTL_GIGA_MAC_VER_63,
> > >> +       RTL_GIGA_MAC_VER_64,
> > >>         RTL_GIGA_MAC_VER_65,
> > >>         RTL_GIGA_MAC_VER_66,
> > >>         RTL_GIGA_MAC_NONE
> > >> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> > >> index 1a2322824..dcd176a77 100644
> > >> --- a/drivers/net/ethernet/realtek/r8169_main.c
> > >> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > >> @@ -56,6 +56,7 @@
> > >>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
> > >>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
> > >>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
> > >> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
> > >>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
> > >>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
> > >>
> > >> @@ -139,6 +140,7 @@ static const struct {
> > >>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
> > >>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
> > >>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
> > >> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
> > >>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
> > >>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
> > >>  };
> > >> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
> > >>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
> > >>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
> > >>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
> > >> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
> > >>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
> > >>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
> > >>
> > >> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
> > >>                 tp->tx_lpi_timer = timer_val;
> > >>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
> > >>                 break;
> > >> -       case RTL_GIGA_MAC_VER_61:
> > >> -       case RTL_GIGA_MAC_VER_63:
> > >> -       case RTL_GIGA_MAC_VER_65:
> > >> -       case RTL_GIGA_MAC_VER_66:
> > >> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
> > >>                 tp->tx_lpi_timer = timer_val;
> > >>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
> > >>                 break;
> > >> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
> > >>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
> > >>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
> > >>
> > >> +               /* 8125D family. */
> > >> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
> > >> +
> > >>                 /* 8125B family. */
> > >>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
> > >>
> > >> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
> > >>         case RTL_GIGA_MAC_VER_61:
> > >>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
> > >>                 break;
> > >> -       case RTL_GIGA_MAC_VER_63:
> > >> -       case RTL_GIGA_MAC_VER_65:
> > >> -       case RTL_GIGA_MAC_VER_66:
> > >> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
> > >>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> > >>                         RX_PAUSE_SLOT_ON);
> > >>                 break;
> > >> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> > >>         rtl_hw_start_8125_common(tp);
> > >>  }
> > >>
> > >> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
> > >> +{
> > >> +       rtl_set_def_aspm_entry_latency(tp);
> > >> +       rtl_hw_start_8125_common(tp);
> > >> +}
> > >> +
> > >>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
> > >>  {
> > >>         rtl_set_def_aspm_entry_latency(tp);
> > >> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
> > >>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
> > >>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
> > >>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
> > >> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
> > >>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
> > >>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
> > >>         };
> > >> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
> > >>         /* disable interrupt coalescing */
> > >>         switch (tp->mac_version) {
> > >>         case RTL_GIGA_MAC_VER_61:
> > >> +       case RTL_GIGA_MAC_VER_64:
> > >>                 for (i = 0xa00; i < 0xb00; i += 4)
> > >>                         RTL_W32(tp, i, 0);
> > >>                 break;
> > >> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
> > >> index cf29b1208..6b70f23c8 100644
> > >> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
> > >> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
> > >> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
> > >>         rtl8125b_config_eee_phy(phydev);
> > >>  }
> > >>
> > >> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
> > >> +                                  struct phy_device *phydev)
> > >> +{
> > >> +       r8169_apply_firmware(tp);
> > >> +}
> > >> +
> > >>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
> > >>                                    struct phy_device *phydev)
> > >>  {
> > >> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
> > >>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
> > >>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
> > >>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
> > >> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
> > >>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
> > >>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
> > >>         };
> > >> --
> > >> 2.47.0
> > >>
> > >>
> > >
> > >
> >
> > Thanks for testing. For PHY ID 0x001cc841 there's no PHY driver yet.
> > Following isn't a proper patch but just a quick hack to see whether
> > it makes your NIC work. Could you please apply this change on top
> > and re-test?
> >
> > diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> > index 166f6a728..1bb8139cb 100644
> > --- a/drivers/net/phy/realtek.c
> > +++ b/drivers/net/phy/realtek.c
> > @@ -1348,7 +1348,7 @@ static struct phy_driver realtek_drvs[] = {
> >                 .read_mmd       = rtl822x_read_mmd,
> >                 .write_mmd      = rtl822x_write_mmd,
> >         }, {
> > -               PHY_ID_MATCH_EXACT(0x001cc840),
> > +               PHY_ID_MATCH_EXACT(0x001cc841),
> >                 .name           = "RTL8226B_RTL8221B 2.5Gbps PHY",
> >                 .get_features   = rtl822x_get_features,
> >                 .config_aneg    = rtl822x_config_aneg,
> >
> >
> >
>
>
> --
> T.M.M BV
> Luc Willems
> Schoolblok 7
> 2275 Lille
>
>
> mobile: 0478/959140
> email: luc.willems@t-m-m.be



-- 
T.M.M BV
Luc Willems
Schoolblok 7
2275 Lille


mobile: 0478/959140
email: luc.willems@t-m-m.be

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-14 12:48         ` Luc Willems
@ 2024-10-16  5:44           ` Heiner Kallweit
  2024-10-17 18:14             ` Luc Willems
  0 siblings, 1 reply; 10+ messages in thread
From: Heiner Kallweit @ 2024-10-16  5:44 UTC (permalink / raw)
  To: Luc Willems; +Cc: netdev

On 14.10.2024 14:48, Luc Willems wrote:
> small correction, it took some time but dhcp has finally assigned an ip address
> 
> I could run iperf3 on it, getting 2.35Gbits/sec for a short test.
> but after reboot i lost connectivity again , even switching to static
> ip did not provide a solution.
> 
> so for the moment, not very stable.
> seems we need to wait to have specific firmware.
> 
Firmware file has been submitted by Realtek, however it may take time until
the next linux-firmware release is published. In the meantime you can get the
firmware file from here:
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8125d-1.fw
Just place it under /lib/firmware/rtl_nic/

> 
> 
> 
> 
> On Mon, Oct 14, 2024 at 2:31 PM Luc Willems <luc.willems@t-m-m.be> wrote:
>>
>> after last patch, i now have an ens16 interface but not able to assign
>> ip using static or dhcp
>>
>> [    0.586421] r8169 0000:00:10.0 eth0: RTL8125D, 10:ff:e0:6b:66:98,
>> XID 688, IRQ 46
>> [    0.586424] r8169 0000:00:10.0 eth0: jumbo features [frames: 9194
>> bytes, tx checksumming: ko]
>> [    0.789719] r8169 0000:00:10.0 ens16: renamed from eth0
>> [   13.583533] r8169 0000:00:10.0: firmware: failed to load
>> rtl_nic/rtl8125d-1.fw (-2)
>> [   13.583541] r8169 0000:00:10.0: firmware: failed to load
>> rtl_nic/rtl8125d-1.fw (-2)
>> [   13.583542] r8169 0000:00:10.0: Direct firmware load for
>> rtl_nic/rtl8125d-1.fw failed with error -2
>> [   13.583544] r8169 0000:00:10.0: Unable to load firmware
>> rtl_nic/rtl8125d-1.fw (-2)
>> [   13.609457] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-80:00: attached
>> PHY driver (mii_bus:phy_addr=r8169-0-80:00, irq=MAC)
>> [   13.737853] r8169 0000:00:10.0 ens16: Link is Down
>> [   16.937666] r8169 0000:00:10.0 ens16: Link is Up - 2.5Gbps/Full -
>> flow control rx/tx
>> root@prxmox-kernel:~#
>>
>> On Mon, Oct 14, 2024 at 12:22 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>>
>>> On 14.10.2024 02:05, Luc Willems wrote:
>>>> HI ,
>>>>
>>>> installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
>>>> with the realtek injected using pci pass through.
>>>> i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
>>>> related entries because these don't seem to be in this kernel
>>>>
>>>> running this kernel gives me this result now
>>>>
>>>> root@prxmox-kernel:~# uname -a
>>>> Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
>>>> Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
>>>> root@prxmox-kernel:~# dmesg |grep r8169
>>>> [    0.000000] Linux version 6.10+unreleased-amd64
>>>> (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
>>>> 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
>>>> PREEMPT_DYNAMIC Debian 6.10.
>>>> 11-1~bpo12+1r8169p1 (2024-10-
>>>> [    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
>>>> PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
>>>> [    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49
>>>>
>>>> root@prxmox-kernel:~# modinfo r8169
>>>> filename:
>>>> /lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
>>>> firmware:       rtl_nic/rtl8126a-2.fw
>>>> firmware:       rtl_nic/rtl8125d-1.fw
>>>> firmware:       rtl_nic/rtl8125b-2.fw
>>>> firmware:       rtl_nic/rtl8125a-3.fw
>>>> firmware:       rtl_nic/rtl8107e-2.fw
>>>> firmware:       rtl_nic/rtl8168fp-3.fw
>>>> firmware:       rtl_nic/rtl8168h-2.fw
>>>> firmware:       rtl_nic/rtl8168g-3.fw
>>>> firmware:       rtl_nic/rtl8168g-2.fw
>>>> firmware:       rtl_nic/rtl8106e-2.fw
>>>> firmware:       rtl_nic/rtl8106e-1.fw
>>>> firmware:       rtl_nic/rtl8411-2.fw
>>>> firmware:       rtl_nic/rtl8411-1.fw
>>>> firmware:       rtl_nic/rtl8402-1.fw
>>>> firmware:       rtl_nic/rtl8168f-2.fw
>>>> firmware:       rtl_nic/rtl8168f-1.fw
>>>> firmware:       rtl_nic/rtl8105e-1.fw
>>>> firmware:       rtl_nic/rtl8168e-3.fw
>>>> firmware:       rtl_nic/rtl8168e-2.fw
>>>> firmware:       rtl_nic/rtl8168e-1.fw
>>>> firmware:       rtl_nic/rtl8168d-2.fw
>>>> firmware:       rtl_nic/rtl8168d-1.fw
>>>> license:        GPL
>>>> softdep:        pre: realtek
>>>> description:    RealTek RTL-8169 Gigabit Ethernet driver
>>>> author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
>>>> alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
>>>> alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
>>>> alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
>>>> alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
>>>> alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
>>>> alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
>>>> alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
>>>> alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
>>>> alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
>>>> alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
>>>> alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
>>>> depends:        libphy,mdio_devres
>>>> retpoline:      Y
>>>> intree:         Y
>>>> name:           r8169
>>>> vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions
>>>>
>>>> root@prxmox-kernel:~# lsmod |grep real
>>>> realtek                45056  0
>>>> libphy                225280  3 r8169,mdio_devres,realtek
>>>> root@prxmox-kernel:~#
>>>>
>>>> On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>>>>
>>>>> On 12.10.2024 21:03, Luc Willems wrote:
>>>>>> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
>>>>>>
>>>>>> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
>>>>>> (2024-09-05T10:03Z) x86_64 GNU/Linux
>>>>>>
>>>>>> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
>>>>>> 2.5GbE Controller (rev 0c)
>>>>>>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
>>>>>>         Flags: fast devsel, IRQ 43, IOMMU group 26
>>>>>>         I/O ports at e000 [size=256]
>>>>>>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
>>>>>>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
>>>>>>         Capabilities: [40] Power Management version 3
>>>>>>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>>>>>>         Capabilities: [70] Express Endpoint, MSI 01
>>>>>>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
>>>>>>         Capabilities: [d0] Vital Product Data
>>>>>>         Capabilities: [100] Advanced Error Reporting
>>>>>>         Capabilities: [148] Virtual Channel
>>>>>>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
>>>>>>         Capabilities: [174] Transaction Processing Hints
>>>>>>         Capabilities: [200] Latency Tolerance Reporting
>>>>>>         Capabilities: [208] L1 PM Substates
>>>>>>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
>>>>>> Len=100 <?>
>>>>>>         Kernel modules: r8169
>>>>>>
>>>>>> root@linux-s05:/root# dmesg |grep r8169
>>>>>> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
>>>>>> 688, contact r8169 maintainers (see MAINTAINERS file)
>>>>>>
>>>>>
>>>>> Below is a patch with experimental support for RTL8125D. Could you
>>>>> please test it? Few notes:
>>>>> - Depending on the PHY ID of the integrated PHY you may receive an
>>>>>   error message that there's no dedicated PHY driver. Please forward the
>>>>>   error message with the PHY ID in this case.
>>>>> - As long as the firmware for this chip version isn't available, link
>>>>>   might be unstable or worst case completely missing. Driver will complain
>>>>>   about the missing firmware file, but this error message can be ignored for now.
>>>>>
>>>>> ---
>>>>>  drivers/net/ethernet/realtek/r8169.h          |  1 +
>>>>>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
>>>>>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
>>>>>  3 files changed, 24 insertions(+), 7 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>>>>> index e2db944e6..be4c96226 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169.h
>>>>> +++ b/drivers/net/ethernet/realtek/r8169.h
>>>>> @@ -68,6 +68,7 @@ enum mac_version {
>>>>>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>>>>         RTL_GIGA_MAC_VER_61,
>>>>>         RTL_GIGA_MAC_VER_63,
>>>>> +       RTL_GIGA_MAC_VER_64,
>>>>>         RTL_GIGA_MAC_VER_65,
>>>>>         RTL_GIGA_MAC_VER_66,
>>>>>         RTL_GIGA_MAC_NONE
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> index 1a2322824..dcd176a77 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>> @@ -56,6 +56,7 @@
>>>>>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
>>>>>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
>>>>>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
>>>>> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
>>>>>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
>>>>>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
>>>>>
>>>>> @@ -139,6 +140,7 @@ static const struct {
>>>>>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
>>>>>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>>>>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
>>>>> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
>>>>>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
>>>>>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
>>>>>  };
>>>>> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
>>>>>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
>>>>>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
>>>>>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
>>>>> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
>>>>>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
>>>>>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
>>>>>
>>>>> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
>>>>>                 tp->tx_lpi_timer = timer_val;
>>>>>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
>>>>>                 break;
>>>>> -       case RTL_GIGA_MAC_VER_61:
>>>>> -       case RTL_GIGA_MAC_VER_63:
>>>>> -       case RTL_GIGA_MAC_VER_65:
>>>>> -       case RTL_GIGA_MAC_VER_66:
>>>>> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
>>>>>                 tp->tx_lpi_timer = timer_val;
>>>>>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
>>>>>                 break;
>>>>> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>>>>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
>>>>>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
>>>>>
>>>>> +               /* 8125D family. */
>>>>> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
>>>>> +
>>>>>                 /* 8125B family. */
>>>>>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
>>>>>
>>>>> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>>>         case RTL_GIGA_MAC_VER_61:
>>>>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>>>                 break;
>>>>> -       case RTL_GIGA_MAC_VER_63:
>>>>> -       case RTL_GIGA_MAC_VER_65:
>>>>> -       case RTL_GIGA_MAC_VER_66:
>>>>> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
>>>>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>>>>                         RX_PAUSE_SLOT_ON);
>>>>>                 break;
>>>>> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>>         rtl_hw_start_8125_common(tp);
>>>>>  }
>>>>>
>>>>> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
>>>>> +{
>>>>> +       rtl_set_def_aspm_entry_latency(tp);
>>>>> +       rtl_hw_start_8125_common(tp);
>>>>> +}
>>>>> +
>>>>>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>>>>  {
>>>>>         rtl_set_def_aspm_entry_latency(tp);
>>>>> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>>>>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>>>>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>>>>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>>>>> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
>>>>>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>>>>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
>>>>>         };
>>>>> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>>>>         /* disable interrupt coalescing */
>>>>>         switch (tp->mac_version) {
>>>>>         case RTL_GIGA_MAC_VER_61:
>>>>> +       case RTL_GIGA_MAC_VER_64:
>>>>>                 for (i = 0xa00; i < 0xb00; i += 4)
>>>>>                         RTL_W32(tp, i, 0);
>>>>>                 break;
>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>> index cf29b1208..6b70f23c8 100644
>>>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
>>>>>         rtl8125b_config_eee_phy(phydev);
>>>>>  }
>>>>>
>>>>> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
>>>>> +                                  struct phy_device *phydev)
>>>>> +{
>>>>> +       r8169_apply_firmware(tp);
>>>>> +}
>>>>> +
>>>>>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
>>>>>                                    struct phy_device *phydev)
>>>>>  {
>>>>> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>>>>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>>>>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>>>>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>>>>> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
>>>>>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
>>>>>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
>>>>>         };
>>>>> --
>>>>> 2.47.0
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> Thanks for testing. For PHY ID 0x001cc841 there's no PHY driver yet.
>>> Following isn't a proper patch but just a quick hack to see whether
>>> it makes your NIC work. Could you please apply this change on top
>>> and re-test?
>>>
>>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>>> index 166f6a728..1bb8139cb 100644
>>> --- a/drivers/net/phy/realtek.c
>>> +++ b/drivers/net/phy/realtek.c
>>> @@ -1348,7 +1348,7 @@ static struct phy_driver realtek_drvs[] = {
>>>                 .read_mmd       = rtl822x_read_mmd,
>>>                 .write_mmd      = rtl822x_write_mmd,
>>>         }, {
>>> -               PHY_ID_MATCH_EXACT(0x001cc840),
>>> +               PHY_ID_MATCH_EXACT(0x001cc841),
>>>                 .name           = "RTL8226B_RTL8221B 2.5Gbps PHY",
>>>                 .get_features   = rtl822x_get_features,
>>>                 .config_aneg    = rtl822x_config_aneg,
>>>
>>>
>>>
>>
>>
>> --
>> T.M.M BV
>> Luc Willems
>> Schoolblok 7
>> 2275 Lille
>>
>>
>> mobile: 0478/959140
>> email: luc.willems@t-m-m.be
> 
> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-16  5:44           ` Heiner Kallweit
@ 2024-10-17 18:14             ` Luc Willems
  2024-10-17 19:27               ` Heiner Kallweit
  0 siblings, 1 reply; 10+ messages in thread
From: Luc Willems @ 2024-10-17 18:14 UTC (permalink / raw)
  To: Heiner Kallweit; +Cc: netdev

install the firmware,
- static ip assignment using /etc/network/interfaces seems to work ok
, system reboots in normal time, and connectivity works using iperf3
(short test)
- dhcp ip assignment still fails , reboot seems to hang on waiting for
dhcp client timeout , and after that a second ifdown/ifup sequences
doesn't seem to work , even ip link show the link up and active

root@prxmox-kernel:~# ifup ens16
Internet Systems Consortium DHCP Client 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/ens16/10:ff:e0:6b:66:98
Sending on   LPF/ens16/10:ff:e0:6b:66:98
Sending on   Socket/fallback
DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 11
DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 11
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
root@prxmox-kernel:~# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
mode DEFAULT group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel
state UP mode DEFAULT group default qlen 1000
   link/ether bc:24:11:e6:79:8f brd ff:ff:ff:ff:ff:ff
   altname enp0s18
3: ens16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel
state UP mode DEFAULT group default qlen 1000
   link/ether 10:ff:e0:6b:66:98 brd ff:ff:ff:ff:ff:ff
   altname enp0s16
root@prxmox-kernel:~#

using hotplug ens16 instead of auto ens16 in the interface seems to
result in the interface staying down state.
ethtool also doesn´t provide any useful info.

switching back to static ip, i can retrieve information using ethtool
on the interface.


 luc




On Wed, Oct 16, 2024 at 7:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>
> On 14.10.2024 14:48, Luc Willems wrote:
> > small correction, it took some time but dhcp has finally assigned an ip address
> >
> > I could run iperf3 on it, getting 2.35Gbits/sec for a short test.
> > but after reboot i lost connectivity again , even switching to static
> > ip did not provide a solution.
> >
> > so for the moment, not very stable.
> > seems we need to wait to have specific firmware.
> >
> Firmware file has been submitted by Realtek, however it may take time until
> the next linux-firmware release is published. In the meantime you can get the
> firmware file from here:
> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8125d-1.fw
> Just place it under /lib/firmware/rtl_nic/
>
> >
> >
> >
> >
> > On Mon, Oct 14, 2024 at 2:31 PM Luc Willems <luc.willems@t-m-m.be> wrote:
> >>
> >> after last patch, i now have an ens16 interface but not able to assign
> >> ip using static or dhcp
> >>
> >> [    0.586421] r8169 0000:00:10.0 eth0: RTL8125D, 10:ff:e0:6b:66:98,
> >> XID 688, IRQ 46
> >> [    0.586424] r8169 0000:00:10.0 eth0: jumbo features [frames: 9194
> >> bytes, tx checksumming: ko]
> >> [    0.789719] r8169 0000:00:10.0 ens16: renamed from eth0
> >> [   13.583533] r8169 0000:00:10.0: firmware: failed to load
> >> rtl_nic/rtl8125d-1.fw (-2)
> >> [   13.583541] r8169 0000:00:10.0: firmware: failed to load
> >> rtl_nic/rtl8125d-1.fw (-2)
> >> [   13.583542] r8169 0000:00:10.0: Direct firmware load for
> >> rtl_nic/rtl8125d-1.fw failed with error -2
> >> [   13.583544] r8169 0000:00:10.0: Unable to load firmware
> >> rtl_nic/rtl8125d-1.fw (-2)
> >> [   13.609457] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-80:00: attached
> >> PHY driver (mii_bus:phy_addr=r8169-0-80:00, irq=MAC)
> >> [   13.737853] r8169 0000:00:10.0 ens16: Link is Down
> >> [   16.937666] r8169 0000:00:10.0 ens16: Link is Up - 2.5Gbps/Full -
> >> flow control rx/tx
> >> root@prxmox-kernel:~#
> >>
> >> On Mon, Oct 14, 2024 at 12:22 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
> >>>
> >>> On 14.10.2024 02:05, Luc Willems wrote:
> >>>> HI ,
> >>>>
> >>>> installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
> >>>> with the realtek injected using pci pass through.
> >>>> i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
> >>>> related entries because these don't seem to be in this kernel
> >>>>
> >>>> running this kernel gives me this result now
> >>>>
> >>>> root@prxmox-kernel:~# uname -a
> >>>> Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
> >>>> Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
> >>>> root@prxmox-kernel:~# dmesg |grep r8169
> >>>> [    0.000000] Linux version 6.10+unreleased-amd64
> >>>> (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
> >>>> 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
> >>>> PREEMPT_DYNAMIC Debian 6.10.
> >>>> 11-1~bpo12+1r8169p1 (2024-10-
> >>>> [    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
> >>>> PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
> >>>> [    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49
> >>>>
> >>>> root@prxmox-kernel:~# modinfo r8169
> >>>> filename:
> >>>> /lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
> >>>> firmware:       rtl_nic/rtl8126a-2.fw
> >>>> firmware:       rtl_nic/rtl8125d-1.fw
> >>>> firmware:       rtl_nic/rtl8125b-2.fw
> >>>> firmware:       rtl_nic/rtl8125a-3.fw
> >>>> firmware:       rtl_nic/rtl8107e-2.fw
> >>>> firmware:       rtl_nic/rtl8168fp-3.fw
> >>>> firmware:       rtl_nic/rtl8168h-2.fw
> >>>> firmware:       rtl_nic/rtl8168g-3.fw
> >>>> firmware:       rtl_nic/rtl8168g-2.fw
> >>>> firmware:       rtl_nic/rtl8106e-2.fw
> >>>> firmware:       rtl_nic/rtl8106e-1.fw
> >>>> firmware:       rtl_nic/rtl8411-2.fw
> >>>> firmware:       rtl_nic/rtl8411-1.fw
> >>>> firmware:       rtl_nic/rtl8402-1.fw
> >>>> firmware:       rtl_nic/rtl8168f-2.fw
> >>>> firmware:       rtl_nic/rtl8168f-1.fw
> >>>> firmware:       rtl_nic/rtl8105e-1.fw
> >>>> firmware:       rtl_nic/rtl8168e-3.fw
> >>>> firmware:       rtl_nic/rtl8168e-2.fw
> >>>> firmware:       rtl_nic/rtl8168e-1.fw
> >>>> firmware:       rtl_nic/rtl8168d-2.fw
> >>>> firmware:       rtl_nic/rtl8168d-1.fw
> >>>> license:        GPL
> >>>> softdep:        pre: realtek
> >>>> description:    RealTek RTL-8169 Gigabit Ethernet driver
> >>>> author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
> >>>> alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
> >>>> alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
> >>>> alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
> >>>> alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
> >>>> alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
> >>>> alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
> >>>> alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
> >>>> alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
> >>>> alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
> >>>> alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
> >>>> depends:        libphy,mdio_devres
> >>>> retpoline:      Y
> >>>> intree:         Y
> >>>> name:           r8169
> >>>> vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions
> >>>>
> >>>> root@prxmox-kernel:~# lsmod |grep real
> >>>> realtek                45056  0
> >>>> libphy                225280  3 r8169,mdio_devres,realtek
> >>>> root@prxmox-kernel:~#
> >>>>
> >>>> On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
> >>>>>
> >>>>> On 12.10.2024 21:03, Luc Willems wrote:
> >>>>>> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
> >>>>>>
> >>>>>> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
> >>>>>> (2024-09-05T10:03Z) x86_64 GNU/Linux
> >>>>>>
> >>>>>> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
> >>>>>> 2.5GbE Controller (rev 0c)
> >>>>>>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
> >>>>>>         Flags: fast devsel, IRQ 43, IOMMU group 26
> >>>>>>         I/O ports at e000 [size=256]
> >>>>>>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
> >>>>>>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
> >>>>>>         Capabilities: [40] Power Management version 3
> >>>>>>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
> >>>>>>         Capabilities: [70] Express Endpoint, MSI 01
> >>>>>>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
> >>>>>>         Capabilities: [d0] Vital Product Data
> >>>>>>         Capabilities: [100] Advanced Error Reporting
> >>>>>>         Capabilities: [148] Virtual Channel
> >>>>>>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
> >>>>>>         Capabilities: [174] Transaction Processing Hints
> >>>>>>         Capabilities: [200] Latency Tolerance Reporting
> >>>>>>         Capabilities: [208] L1 PM Substates
> >>>>>>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
> >>>>>> Len=100 <?>
> >>>>>>         Kernel modules: r8169
> >>>>>>
> >>>>>> root@linux-s05:/root# dmesg |grep r8169
> >>>>>> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
> >>>>>> 688, contact r8169 maintainers (see MAINTAINERS file)
> >>>>>>
> >>>>>
> >>>>> Below is a patch with experimental support for RTL8125D. Could you
> >>>>> please test it? Few notes:
> >>>>> - Depending on the PHY ID of the integrated PHY you may receive an
> >>>>>   error message that there's no dedicated PHY driver. Please forward the
> >>>>>   error message with the PHY ID in this case.
> >>>>> - As long as the firmware for this chip version isn't available, link
> >>>>>   might be unstable or worst case completely missing. Driver will complain
> >>>>>   about the missing firmware file, but this error message can be ignored for now.
> >>>>>
> >>>>> ---
> >>>>>  drivers/net/ethernet/realtek/r8169.h          |  1 +
> >>>>>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
> >>>>>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
> >>>>>  3 files changed, 24 insertions(+), 7 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
> >>>>> index e2db944e6..be4c96226 100644
> >>>>> --- a/drivers/net/ethernet/realtek/r8169.h
> >>>>> +++ b/drivers/net/ethernet/realtek/r8169.h
> >>>>> @@ -68,6 +68,7 @@ enum mac_version {
> >>>>>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
> >>>>>         RTL_GIGA_MAC_VER_61,
> >>>>>         RTL_GIGA_MAC_VER_63,
> >>>>> +       RTL_GIGA_MAC_VER_64,
> >>>>>         RTL_GIGA_MAC_VER_65,
> >>>>>         RTL_GIGA_MAC_VER_66,
> >>>>>         RTL_GIGA_MAC_NONE
> >>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> index 1a2322824..dcd176a77 100644
> >>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> >>>>> @@ -56,6 +56,7 @@
> >>>>>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
> >>>>>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
> >>>>>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
> >>>>> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
> >>>>>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
> >>>>>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
> >>>>>
> >>>>> @@ -139,6 +140,7 @@ static const struct {
> >>>>>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
> >>>>>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
> >>>>>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
> >>>>> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
> >>>>>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
> >>>>>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
> >>>>>  };
> >>>>> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
> >>>>>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
> >>>>>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
> >>>>>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
> >>>>> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
> >>>>>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
> >>>>>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
> >>>>>
> >>>>> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
> >>>>>                 tp->tx_lpi_timer = timer_val;
> >>>>>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
> >>>>>                 break;
> >>>>> -       case RTL_GIGA_MAC_VER_61:
> >>>>> -       case RTL_GIGA_MAC_VER_63:
> >>>>> -       case RTL_GIGA_MAC_VER_65:
> >>>>> -       case RTL_GIGA_MAC_VER_66:
> >>>>> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
> >>>>>                 tp->tx_lpi_timer = timer_val;
> >>>>>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
> >>>>>                 break;
> >>>>> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
> >>>>>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
> >>>>>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
> >>>>>
> >>>>> +               /* 8125D family. */
> >>>>> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
> >>>>> +
> >>>>>                 /* 8125B family. */
> >>>>>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
> >>>>>
> >>>>> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
> >>>>>         case RTL_GIGA_MAC_VER_61:
> >>>>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
> >>>>>                 break;
> >>>>> -       case RTL_GIGA_MAC_VER_63:
> >>>>> -       case RTL_GIGA_MAC_VER_65:
> >>>>> -       case RTL_GIGA_MAC_VER_66:
> >>>>> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
> >>>>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
> >>>>>                         RX_PAUSE_SLOT_ON);
> >>>>>                 break;
> >>>>> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
> >>>>>         rtl_hw_start_8125_common(tp);
> >>>>>  }
> >>>>>
> >>>>> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
> >>>>> +{
> >>>>> +       rtl_set_def_aspm_entry_latency(tp);
> >>>>> +       rtl_hw_start_8125_common(tp);
> >>>>> +}
> >>>>> +
> >>>>>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
> >>>>>  {
> >>>>>         rtl_set_def_aspm_entry_latency(tp);
> >>>>> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
> >>>>>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
> >>>>>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
> >>>>>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
> >>>>> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
> >>>>>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
> >>>>>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
> >>>>>         };
> >>>>> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
> >>>>>         /* disable interrupt coalescing */
> >>>>>         switch (tp->mac_version) {
> >>>>>         case RTL_GIGA_MAC_VER_61:
> >>>>> +       case RTL_GIGA_MAC_VER_64:
> >>>>>                 for (i = 0xa00; i < 0xb00; i += 4)
> >>>>>                         RTL_W32(tp, i, 0);
> >>>>>                 break;
> >>>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
> >>>>> index cf29b1208..6b70f23c8 100644
> >>>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
> >>>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
> >>>>> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
> >>>>>         rtl8125b_config_eee_phy(phydev);
> >>>>>  }
> >>>>>
> >>>>> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
> >>>>> +                                  struct phy_device *phydev)
> >>>>> +{
> >>>>> +       r8169_apply_firmware(tp);
> >>>>> +}
> >>>>> +
> >>>>>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
> >>>>>                                    struct phy_device *phydev)
> >>>>>  {
> >>>>> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
> >>>>>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
> >>>>>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
> >>>>>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
> >>>>> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
> >>>>>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
> >>>>>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
> >>>>>         };
> >>>>> --
> >>>>> 2.47.0
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>
> >>> Thanks for testing. For PHY ID 0x001cc841 there's no PHY driver yet.
> >>> Following isn't a proper patch but just a quick hack to see whether
> >>> it makes your NIC work. Could you please apply this change on top
> >>> and re-test?
> >>>
> >>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> >>> index 166f6a728..1bb8139cb 100644
> >>> --- a/drivers/net/phy/realtek.c
> >>> +++ b/drivers/net/phy/realtek.c
> >>> @@ -1348,7 +1348,7 @@ static struct phy_driver realtek_drvs[] = {
> >>>                 .read_mmd       = rtl822x_read_mmd,
> >>>                 .write_mmd      = rtl822x_write_mmd,
> >>>         }, {
> >>> -               PHY_ID_MATCH_EXACT(0x001cc840),
> >>> +               PHY_ID_MATCH_EXACT(0x001cc841),
> >>>                 .name           = "RTL8226B_RTL8221B 2.5Gbps PHY",
> >>>                 .get_features   = rtl822x_get_features,
> >>>                 .config_aneg    = rtl822x_config_aneg,
> >>>
> >>>
> >>>
> >>
> >>
> >> --
> >> T.M.M BV
> >> Luc Willems
> >> Schoolblok 7
> >> 2275 Lille
> >>
> >>
> >> mobile: 0478/959140
> >> email: luc.willems@t-m-m.be
> >
> >
> >
>


-- 
T.M.M BV
Luc Willems
Schoolblok 7
2275 Lille


mobile: 0478/959140
email: luc.willems@t-m-m.be

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: r8169 unknown chip XID 688
  2024-10-17 18:14             ` Luc Willems
@ 2024-10-17 19:27               ` Heiner Kallweit
  0 siblings, 0 replies; 10+ messages in thread
From: Heiner Kallweit @ 2024-10-17 19:27 UTC (permalink / raw)
  To: Luc Willems; +Cc: netdev

On 17.10.2024 20:14, Luc Willems wrote:
> install the firmware,
> - static ip assignment using /etc/network/interfaces seems to work ok
> , system reboots in normal time, and connectivity works using iperf3
> (short test)
> - dhcp ip assignment still fails , reboot seems to hang on waiting for
> dhcp client timeout , and after that a second ifdown/ifup sequences
> doesn't seem to work , even ip link show the link up and active
> 
Thanks for the retest. If it works with a static ip then it's unlikely
that the DHCP issue is related to the network driver. This happens on
an upper layer. Best check the DHCP traffic between this system and
the DHCP server with e.g. tcpdump.

> root@prxmox-kernel:~# ifup ens16
> Internet Systems Consortium DHCP Client 4.4.3-P1
> Copyright 2004-2022 Internet Systems Consortium.
> All rights reserved.
> For info, please visit https://www.isc.org/software/dhcp/
> 
> Listening on LPF/ens16/10:ff:e0:6b:66:98
> Sending on   LPF/ens16/10:ff:e0:6b:66:98
> Sending on   Socket/fallback
> DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 8
> DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 7
> DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 12
> DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 12
> DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 11
> DHCPDISCOVER on ens16 to 255.255.255.255 port 67 interval 11
> No DHCPOFFERS received.
> No working leases in persistent database - sleeping.
> root@prxmox-kernel:~# ip l
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
> mode DEFAULT group default qlen 1000
>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel
> state UP mode DEFAULT group default qlen 1000
>    link/ether bc:24:11:e6:79:8f brd ff:ff:ff:ff:ff:ff
>    altname enp0s18
> 3: ens16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel
> state UP mode DEFAULT group default qlen 1000
>    link/ether 10:ff:e0:6b:66:98 brd ff:ff:ff:ff:ff:ff
>    altname enp0s16
> root@prxmox-kernel:~#
> 
> using hotplug ens16 instead of auto ens16 in the interface seems to
> result in the interface staying down state.
> ethtool also doesn´t provide any useful info.
> 
> switching back to static ip, i can retrieve information using ethtool
> on the interface.
> 
> 
>  luc
> 
> 
> 
> 
> On Wed, Oct 16, 2024 at 7:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>
>> On 14.10.2024 14:48, Luc Willems wrote:
>>> small correction, it took some time but dhcp has finally assigned an ip address
>>>
>>> I could run iperf3 on it, getting 2.35Gbits/sec for a short test.
>>> but after reboot i lost connectivity again , even switching to static
>>> ip did not provide a solution.
>>>
>>> so for the moment, not very stable.
>>> seems we need to wait to have specific firmware.
>>>
>> Firmware file has been submitted by Realtek, however it may take time until
>> the next linux-firmware release is published. In the meantime you can get the
>> firmware file from here:
>> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8125d-1.fw
>> Just place it under /lib/firmware/rtl_nic/
>>
>>>
>>>
>>>
>>>
>>> On Mon, Oct 14, 2024 at 2:31 PM Luc Willems <luc.willems@t-m-m.be> wrote:
>>>>
>>>> after last patch, i now have an ens16 interface but not able to assign
>>>> ip using static or dhcp
>>>>
>>>> [    0.586421] r8169 0000:00:10.0 eth0: RTL8125D, 10:ff:e0:6b:66:98,
>>>> XID 688, IRQ 46
>>>> [    0.586424] r8169 0000:00:10.0 eth0: jumbo features [frames: 9194
>>>> bytes, tx checksumming: ko]
>>>> [    0.789719] r8169 0000:00:10.0 ens16: renamed from eth0
>>>> [   13.583533] r8169 0000:00:10.0: firmware: failed to load
>>>> rtl_nic/rtl8125d-1.fw (-2)
>>>> [   13.583541] r8169 0000:00:10.0: firmware: failed to load
>>>> rtl_nic/rtl8125d-1.fw (-2)
>>>> [   13.583542] r8169 0000:00:10.0: Direct firmware load for
>>>> rtl_nic/rtl8125d-1.fw failed with error -2
>>>> [   13.583544] r8169 0000:00:10.0: Unable to load firmware
>>>> rtl_nic/rtl8125d-1.fw (-2)
>>>> [   13.609457] RTL8226B_RTL8221B 2.5Gbps PHY r8169-0-80:00: attached
>>>> PHY driver (mii_bus:phy_addr=r8169-0-80:00, irq=MAC)
>>>> [   13.737853] r8169 0000:00:10.0 ens16: Link is Down
>>>> [   16.937666] r8169 0000:00:10.0 ens16: Link is Up - 2.5Gbps/Full -
>>>> flow control rx/tx
>>>> root@prxmox-kernel:~#
>>>>
>>>> On Mon, Oct 14, 2024 at 12:22 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>>>>
>>>>> On 14.10.2024 02:05, Luc Willems wrote:
>>>>>> HI ,
>>>>>>
>>>>>> installed the patch on a debian-backports 6.10.11 kernel in a VM (KVM)
>>>>>> with the realtek injected using pci pass through.
>>>>>> i had to modify the patch a bit, removing the RTL_GIGA_MAC_VER_63
>>>>>> related entries because these don't seem to be in this kernel
>>>>>>
>>>>>> running this kernel gives me this result now
>>>>>>
>>>>>> root@prxmox-kernel:~# uname -a
>>>>>> Linux prxmox-kernel 6.10+unreleased-amd64 #1 SMP PREEMPT_DYNAMIC
>>>>>> Debian 6.10.11-1~bpo12+1r8169p1 (2024-10- x86_64 GNU/Linux
>>>>>> root@prxmox-kernel:~# dmesg |grep r8169
>>>>>> [    0.000000] Linux version 6.10+unreleased-amd64
>>>>>> (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-12 (Debian
>>>>>> 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP
>>>>>> PREEMPT_DYNAMIC Debian 6.10.
>>>>>> 11-1~bpo12+1r8169p1 (2024-10-
>>>>>> [    0.585895] r8169 0000:00:10.0: no dedicated PHY driver found for
>>>>>> PHY ID 0x001cc841, maybe realtek.ko needs to be added to initramfs?
>>>>>> [    0.586010] r8169 0000:00:10.0: probe with driver r8169 failed with error -49
>>>>>>
>>>>>> root@prxmox-kernel:~# modinfo r8169
>>>>>> filename:
>>>>>> /lib/modules/6.10+unreleased-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko.xz
>>>>>> firmware:       rtl_nic/rtl8126a-2.fw
>>>>>> firmware:       rtl_nic/rtl8125d-1.fw
>>>>>> firmware:       rtl_nic/rtl8125b-2.fw
>>>>>> firmware:       rtl_nic/rtl8125a-3.fw
>>>>>> firmware:       rtl_nic/rtl8107e-2.fw
>>>>>> firmware:       rtl_nic/rtl8168fp-3.fw
>>>>>> firmware:       rtl_nic/rtl8168h-2.fw
>>>>>> firmware:       rtl_nic/rtl8168g-3.fw
>>>>>> firmware:       rtl_nic/rtl8168g-2.fw
>>>>>> firmware:       rtl_nic/rtl8106e-2.fw
>>>>>> firmware:       rtl_nic/rtl8106e-1.fw
>>>>>> firmware:       rtl_nic/rtl8411-2.fw
>>>>>> firmware:       rtl_nic/rtl8411-1.fw
>>>>>> firmware:       rtl_nic/rtl8402-1.fw
>>>>>> firmware:       rtl_nic/rtl8168f-2.fw
>>>>>> firmware:       rtl_nic/rtl8168f-1.fw
>>>>>> firmware:       rtl_nic/rtl8105e-1.fw
>>>>>> firmware:       rtl_nic/rtl8168e-3.fw
>>>>>> firmware:       rtl_nic/rtl8168e-2.fw
>>>>>> firmware:       rtl_nic/rtl8168e-1.fw
>>>>>> firmware:       rtl_nic/rtl8168d-2.fw
>>>>>> firmware:       rtl_nic/rtl8168d-1.fw
>>>>>> license:        GPL
>>>>>> softdep:        pre: realtek
>>>>>> description:    RealTek RTL-8169 Gigabit Ethernet driver
>>>>>> author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
>>>>>> alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008126sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
>>>>>> alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
>>>>>> alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
>>>>>> alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
>>>>>> alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
>>>>>> alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
>>>>>> alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
>>>>>> alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008162sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
>>>>>> alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
>>>>>> depends:        libphy,mdio_devres
>>>>>> retpoline:      Y
>>>>>> intree:         Y
>>>>>> name:           r8169
>>>>>> vermagic:       6.10+unreleased-amd64 SMP preempt mod_unload modversions
>>>>>>
>>>>>> root@prxmox-kernel:~# lsmod |grep real
>>>>>> realtek                45056  0
>>>>>> libphy                225280  3 r8169,mdio_devres,realtek
>>>>>> root@prxmox-kernel:~#
>>>>>>
>>>>>> On Sun, Oct 13, 2024 at 10:44 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>>>>>>>
>>>>>>> On 12.10.2024 21:03, Luc Willems wrote:
>>>>>>>> using new gigabyte X870E AORUS ELITE WIFI7 board, running proxmox pve kernel
>>>>>>>>
>>>>>>>> Linux linux-s05 6.8.12-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2
>>>>>>>> (2024-09-05T10:03Z) x86_64 GNU/Linux
>>>>>>>>
>>>>>>>> 11:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125
>>>>>>>> 2.5GbE Controller (rev 0c)
>>>>>>>>         Subsystem: Gigabyte Technology Co., Ltd RTL8125 2.5GbE Controller
>>>>>>>>         Flags: fast devsel, IRQ 43, IOMMU group 26
>>>>>>>>         I/O ports at e000 [size=256]
>>>>>>>>         Memory at dd900000 (64-bit, non-prefetchable) [size=64K]
>>>>>>>>         Memory at dd910000 (64-bit, non-prefetchable) [size=16K]
>>>>>>>>         Capabilities: [40] Power Management version 3
>>>>>>>>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>>>>>>>>         Capabilities: [70] Express Endpoint, MSI 01
>>>>>>>>         Capabilities: [b0] MSI-X: Enable- Count=64 Masked-
>>>>>>>>         Capabilities: [d0] Vital Product Data
>>>>>>>>         Capabilities: [100] Advanced Error Reporting
>>>>>>>>         Capabilities: [148] Virtual Channel
>>>>>>>>         Capabilities: [164] Device Serial Number 01-00-00-00-68-4c-e0-00
>>>>>>>>         Capabilities: [174] Transaction Processing Hints
>>>>>>>>         Capabilities: [200] Latency Tolerance Reporting
>>>>>>>>         Capabilities: [208] L1 PM Substates
>>>>>>>>         Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4
>>>>>>>> Len=100 <?>
>>>>>>>>         Kernel modules: r8169
>>>>>>>>
>>>>>>>> root@linux-s05:/root# dmesg |grep r8169
>>>>>>>> [    6.353276] r8169 0000:11:00.0: error -ENODEV: unknown chip XID
>>>>>>>> 688, contact r8169 maintainers (see MAINTAINERS file)
>>>>>>>>
>>>>>>>
>>>>>>> Below is a patch with experimental support for RTL8125D. Could you
>>>>>>> please test it? Few notes:
>>>>>>> - Depending on the PHY ID of the integrated PHY you may receive an
>>>>>>>   error message that there's no dedicated PHY driver. Please forward the
>>>>>>>   error message with the PHY ID in this case.
>>>>>>> - As long as the firmware for this chip version isn't available, link
>>>>>>>   might be unstable or worst case completely missing. Driver will complain
>>>>>>>   about the missing firmware file, but this error message can be ignored for now.
>>>>>>>
>>>>>>> ---
>>>>>>>  drivers/net/ethernet/realtek/r8169.h          |  1 +
>>>>>>>  drivers/net/ethernet/realtek/r8169_main.c     | 23 +++++++++++++------
>>>>>>>  .../net/ethernet/realtek/r8169_phy_config.c   |  7 ++++++
>>>>>>>  3 files changed, 24 insertions(+), 7 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
>>>>>>> index e2db944e6..be4c96226 100644
>>>>>>> --- a/drivers/net/ethernet/realtek/r8169.h
>>>>>>> +++ b/drivers/net/ethernet/realtek/r8169.h
>>>>>>> @@ -68,6 +68,7 @@ enum mac_version {
>>>>>>>         /* support for RTL_GIGA_MAC_VER_60 has been removed */
>>>>>>>         RTL_GIGA_MAC_VER_61,
>>>>>>>         RTL_GIGA_MAC_VER_63,
>>>>>>> +       RTL_GIGA_MAC_VER_64,
>>>>>>>         RTL_GIGA_MAC_VER_65,
>>>>>>>         RTL_GIGA_MAC_VER_66,
>>>>>>>         RTL_GIGA_MAC_NONE
>>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> index 1a2322824..dcd176a77 100644
>>>>>>> --- a/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_main.c
>>>>>>> @@ -56,6 +56,7 @@
>>>>>>>  #define FIRMWARE_8107E_2       "rtl_nic/rtl8107e-2.fw"
>>>>>>>  #define FIRMWARE_8125A_3       "rtl_nic/rtl8125a-3.fw"
>>>>>>>  #define FIRMWARE_8125B_2       "rtl_nic/rtl8125b-2.fw"
>>>>>>> +#define FIRMWARE_8125D_1       "rtl_nic/rtl8125d-1.fw"
>>>>>>>  #define FIRMWARE_8126A_2       "rtl_nic/rtl8126a-2.fw"
>>>>>>>  #define FIRMWARE_8126A_3       "rtl_nic/rtl8126a-3.fw"
>>>>>>>
>>>>>>> @@ -139,6 +140,7 @@ static const struct {
>>>>>>>         [RTL_GIGA_MAC_VER_61] = {"RTL8125A",            FIRMWARE_8125A_3},
>>>>>>>         /* reserve 62 for CFG_METHOD_4 in the vendor driver */
>>>>>>>         [RTL_GIGA_MAC_VER_63] = {"RTL8125B",            FIRMWARE_8125B_2},
>>>>>>> +       [RTL_GIGA_MAC_VER_64] = {"RTL8125D",            FIRMWARE_8125D_1},
>>>>>>>         [RTL_GIGA_MAC_VER_65] = {"RTL8126A",            FIRMWARE_8126A_2},
>>>>>>>         [RTL_GIGA_MAC_VER_66] = {"RTL8126A",            FIRMWARE_8126A_3},
>>>>>>>  };
>>>>>>> @@ -708,6 +710,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
>>>>>>>  MODULE_FIRMWARE(FIRMWARE_8107E_2);
>>>>>>>  MODULE_FIRMWARE(FIRMWARE_8125A_3);
>>>>>>>  MODULE_FIRMWARE(FIRMWARE_8125B_2);
>>>>>>> +MODULE_FIRMWARE(FIRMWARE_8125D_1);
>>>>>>>  MODULE_FIRMWARE(FIRMWARE_8126A_2);
>>>>>>>  MODULE_FIRMWARE(FIRMWARE_8126A_3);
>>>>>>>
>>>>>>> @@ -2099,10 +2102,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
>>>>>>>                 tp->tx_lpi_timer = timer_val;
>>>>>>>                 r8168_mac_ocp_write(tp, 0xe048, timer_val);
>>>>>>>                 break;
>>>>>>> -       case RTL_GIGA_MAC_VER_61:
>>>>>>> -       case RTL_GIGA_MAC_VER_63:
>>>>>>> -       case RTL_GIGA_MAC_VER_65:
>>>>>>> -       case RTL_GIGA_MAC_VER_66:
>>>>>>> +       case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
>>>>>>>                 tp->tx_lpi_timer = timer_val;
>>>>>>>                 RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
>>>>>>>                 break;
>>>>>>> @@ -2234,6 +2234,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
>>>>>>>                 { 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
>>>>>>>                 { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
>>>>>>>
>>>>>>> +               /* 8125D family. */
>>>>>>> +               { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
>>>>>>> +
>>>>>>>                 /* 8125B family. */
>>>>>>>                 { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
>>>>>>>
>>>>>>> @@ -2501,9 +2504,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
>>>>>>>         case RTL_GIGA_MAC_VER_61:
>>>>>>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
>>>>>>>                 break;
>>>>>>> -       case RTL_GIGA_MAC_VER_63:
>>>>>>> -       case RTL_GIGA_MAC_VER_65:
>>>>>>> -       case RTL_GIGA_MAC_VER_66:
>>>>>>> +       case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
>>>>>>>                 RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
>>>>>>>                         RX_PAUSE_SLOT_ON);
>>>>>>>                 break;
>>>>>>> @@ -3815,6 +3816,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
>>>>>>>         rtl_hw_start_8125_common(tp);
>>>>>>>  }
>>>>>>>
>>>>>>> +static void rtl_hw_start_8125d(struct rtl8169_private *tp)
>>>>>>> +{
>>>>>>> +       rtl_set_def_aspm_entry_latency(tp);
>>>>>>> +       rtl_hw_start_8125_common(tp);
>>>>>>> +}
>>>>>>> +
>>>>>>>  static void rtl_hw_start_8126a(struct rtl8169_private *tp)
>>>>>>>  {
>>>>>>>         rtl_set_def_aspm_entry_latency(tp);
>>>>>>> @@ -3863,6 +3870,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
>>>>>>>                 [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
>>>>>>>                 [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
>>>>>>>                 [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
>>>>>>> +               [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
>>>>>>>                 [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
>>>>>>>                 [RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
>>>>>>>         };
>>>>>>> @@ -3880,6 +3888,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
>>>>>>>         /* disable interrupt coalescing */
>>>>>>>         switch (tp->mac_version) {
>>>>>>>         case RTL_GIGA_MAC_VER_61:
>>>>>>> +       case RTL_GIGA_MAC_VER_64:
>>>>>>>                 for (i = 0xa00; i < 0xb00; i += 4)
>>>>>>>                         RTL_W32(tp, i, 0);
>>>>>>>                 break;
>>>>>>> diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>>>> index cf29b1208..6b70f23c8 100644
>>>>>>> --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>>>> +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
>>>>>>> @@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
>>>>>>>         rtl8125b_config_eee_phy(phydev);
>>>>>>>  }
>>>>>>>
>>>>>>> +static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
>>>>>>> +                                  struct phy_device *phydev)
>>>>>>> +{
>>>>>>> +       r8169_apply_firmware(tp);
>>>>>>> +}
>>>>>>> +
>>>>>>>  static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
>>>>>>>                                    struct phy_device *phydev)
>>>>>>>  {
>>>>>>> @@ -1160,6 +1166,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
>>>>>>>                 [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
>>>>>>>                 [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
>>>>>>>                 [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
>>>>>>> +               [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
>>>>>>>                 [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
>>>>>>>                 [RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
>>>>>>>         };
>>>>>>> --
>>>>>>> 2.47.0
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> Thanks for testing. For PHY ID 0x001cc841 there's no PHY driver yet.
>>>>> Following isn't a proper patch but just a quick hack to see whether
>>>>> it makes your NIC work. Could you please apply this change on top
>>>>> and re-test?
>>>>>
>>>>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>>>>> index 166f6a728..1bb8139cb 100644
>>>>> --- a/drivers/net/phy/realtek.c
>>>>> +++ b/drivers/net/phy/realtek.c
>>>>> @@ -1348,7 +1348,7 @@ static struct phy_driver realtek_drvs[] = {
>>>>>                 .read_mmd       = rtl822x_read_mmd,
>>>>>                 .write_mmd      = rtl822x_write_mmd,
>>>>>         }, {
>>>>> -               PHY_ID_MATCH_EXACT(0x001cc840),
>>>>> +               PHY_ID_MATCH_EXACT(0x001cc841),
>>>>>                 .name           = "RTL8226B_RTL8221B 2.5Gbps PHY",
>>>>>                 .get_features   = rtl822x_get_features,
>>>>>                 .config_aneg    = rtl822x_config_aneg,
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> T.M.M BV
>>>> Luc Willems
>>>> Schoolblok 7
>>>> 2275 Lille
>>>>
>>>>
>>>> mobile: 0478/959140
>>>> email: luc.willems@t-m-m.be
>>>
>>>
>>>
>>
> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-10-17 19:27 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-12 19:03 r8169 unknown chip XID 688 Luc Willems
2024-10-12 19:53 ` Heiner Kallweit
2024-10-13  8:44 ` Heiner Kallweit
2024-10-14  0:05   ` Luc Willems
2024-10-14 10:22     ` Heiner Kallweit
2024-10-14 12:31       ` Luc Willems
2024-10-14 12:48         ` Luc Willems
2024-10-16  5:44           ` Heiner Kallweit
2024-10-17 18:14             ` Luc Willems
2024-10-17 19:27               ` Heiner Kallweit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).