What's wrong with the WAN port (MT7981)

Hi,

Since recent (last 6 months) snapshots (also latest rc2) I'm having a weird issue with my travel router. (it has MT7981)

For some reason, it doesn't recognize the link if I boot the device with cable plugged and I cannot even manually do autoneg via ethtool after then. But if I boot the device unplugged, ethtool allows me to set autoneg, then I can establish the link once I plug the cable.

Then I checked the issues, .

I'm just trying to understand what could cause this, thanks!

What device you have?

ubus call system board
ethtool wan
ethtool -i wan
mii-tool -v wan # (and some other port, just to see whether "good" and "bad" port has same phy circuit)

ubus output:

root@tr3000:~# ubus call system board
{
        "kernel": "6.6.65",
        "hostname": "tr3000",
        "system": "ARMv8 Processor rev 4",
        "model": "Cudy TR3000 v1",
        "board_name": "cudy,tr3000-v1",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "SNAPSHOT",
                "revision": "r28330-15e173bf7e",
                "target": "mediatek/filogic",
                "description": "OpenWrt SNAPSHOT r28330-15e173bf7e",
                "builddate": "1734122402"
        }
}

ethtool -i eth0: (this time booted without plugging cable, I'm able to set autoneg this way.)

root@tr3000:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: external
        Auto-negotiation: off
        MDI-X: Unknown
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: no

On this step if I do ethtool -s eth0 autoneg on speed 1000 duplex full, it detects link.

So, next one ethtool -i eth0:

root@tr3000:~# ethtool -i eth0
driver: mtk_soc_eth
version: 6.6.65
firmware-version:
expansion-rom-version:
bus-info: 15100000.ethernet
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

And mii-tool for eth0 and eth1:

root@tr3000:~# mii-tool -v eth0
SIOCGMIIREG on eth0 failed: Invalid argument
SIOCGMIIREG on eth0 failed: Invalid argument
SIOCGMIIREG on eth0 failed: Invalid argument
SIOCGMIIREG on eth0 failed: Invalid argument
SIOCGMIIREG on eth0 failed: Invalid argument
  No MII transceiver present!.
root@tr3000:~# mii-tool -v eth1
eth1: negotiated 1000baseT-FD flow-control, link ok
  product info: vendor 00:e8:a5, model 6 rev 1
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

And bonus: booted with cable plugged in and here's the weird thing:

root@tr3000:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: external
        Auto-negotiation: off
        MDI-X: Unknown
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: no

And autoneg does not do anything, link remains down.

And here comes the dmesg output (with cable plugged before booting):

root@tr3000:~# dmesg
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.6.65 (builder@buildhost) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r28330-15e173bf7e) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 SMP Fri Dec 13 20:40:02 2024
[    0.000000] Machine model: Cudy TR3000 v1
[    0.000000] OF: reserved mem: 0x0000000042ff0000..0x0000000042ffffff (64 KiB) map non-reusable ramoops@42ff0000
[    0.000000] OF: reserved mem: 0x0000000043000000..0x000000004302ffff (192 KiB) nomap non-reusable secmon@43000000
[    0.000000] OF: reserved mem: 0x0000000047c80000..0x0000000047d7ffff (1024 KiB) nomap non-reusable wmcpu-reserved@47c80000
[    0.000000] OF: reserved mem: 0x0000000047d80000..0x0000000047dbffff (256 KiB) nomap non-reusable wo-emi@47d80000
[    0.000000] OF: reserved mem: 0x0000000047dc0000..0x0000000047ffffff (2304 KiB) nomap non-reusable wo-data@47dc0000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000005fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x0000000042ffffff]
[    0.000000]   node   0: [mem 0x0000000043000000-0x000000004302ffff]
[    0.000000]   node   0: [mem 0x0000000043030000-0x0000000047c7ffff]
[    0.000000]   node   0: [mem 0x0000000047c80000-0x0000000047ffffff]
[    0.000000]   node   0: [mem 0x0000000048000000-0x000000005fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000005fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 18 pages/cpu s35560 r8192 d29976 u73728
[    0.000000] pcpu-alloc: s35560 r8192 d29976 u73728 alloc=18*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: kernel page table isolation disabled by kernel configuration
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line:
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129024
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
[    0.000000] software IO TLB: area num 2.
[    0.000000] software IO TLB: mapped [mem 0x000000005fd68000-0x000000005fde8000] (0MB)
[    0.000000] Memory: 496080K/524288K available (9024K kernel code, 998K rwdata, 2612K rodata, 448K init, 305K bss, 28208K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 640 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x000000000c080000
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer(s) running at 13.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2ff89eacb, max_idle_ns: 440795202429 ns
[    0.000000] sched_clock: 56 bits at 13MHz, resolution 76ns, wraps every 4398046511101ns
[    0.000071] Calibrating delay loop (skipped), value calculated using timer frequency.. 26.00 BogoMIPS (lpj=130000)
[    0.000080] pid_max: default: 32768 minimum: 301
[    0.003008] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.003016] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.005189] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.005714] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[    0.005858] rcu: Hierarchical SRCU implementation.
[    0.005861] rcu:     Max phase no-delay instances is 1000.
[    0.006237] smp: Bringing up secondary CPUs ...
[    0.006597] Detected VIPT I-cache on CPU1
[    0.006640] GICv3: CPU1: found redistributor 1 region 0:0x000000000c0a0000
[    0.006669] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.006737] smp: Brought up 1 node, 2 CPUs
[    0.006742] SMP: Total of 2 processors activated.
[    0.006745] CPU features: detected: 32-bit EL0 Support
[    0.006748] CPU features: detected: CRC32 instructions
[    0.006780] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.006783] CPU: All CPU(s) started at EL2
[    0.006785] alternatives: applying system-wide alternatives
[    0.010309] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.010325] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.011597] pinctrl core: initialized pinctrl subsystem
[    0.012642] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.013171] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.013199] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.013219] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.013564] thermal_sys: Registered thermal governor 'fair_share'
[    0.013568] thermal_sys: Registered thermal governor 'bang_bang'
[    0.013571] thermal_sys: Registered thermal governor 'step_wise'
[    0.013573] thermal_sys: Registered thermal governor 'user_space'
[    0.013611] ASID allocator initialised with 65536 entries
[    0.014522] pstore: Using crash dump compression: deflate
[    0.014528] pstore: Registered ramoops as persistent store backend
[    0.014530] ramoops: using 0x10000@0x42ff0000, ecc: 0
[    0.021632] Modules: 29376 pages in range for non-PLT usage
[    0.021640] Modules: 520896 pages in range for PLT usage
[    0.022584] cryptd: max_cpu_qlen set to 1000
[    0.023716] SCSI subsystem initialized
[    0.023963] libata version 3.00 loaded.
[    0.025523] clocksource: Switched to clocksource arch_sys_counter
[    0.027764] NET: Registered PF_INET protocol family
[    0.027883] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.029284] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.029297] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.029306] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.029335] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, linear)
[    0.029431] TCP: Hash tables configured (established 4096 bind 4096)
[    0.029748] MPTCP token hash table entries: 512 (order: 1, 12288 bytes, linear)
[    0.029856] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.029871] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.030217] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.030253] PCI: CLS 0 bytes, default 64
[    0.031321] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[    0.036225] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.036234] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.070471] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.081340] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    0.084811] printk: console [ttyS0] disabled
[    0.105179] 11002000.serial: ttyS0 at MMIO 0x11002000 (irq = 72, base_baud = 2500000) is a ST16650V2
[    0.105220] printk: console [ttyS0] enabled
[    0.850686] loop: module loaded
[    0.856719] spi-nand spi0.0: calibration result: 0x3
[    0.861764] spi-nand spi0.0: ESMT SPI NAND was found.
[    0.866840] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[    0.875304] Signature found at block 1023 [0x07fe0000]
[    0.880464] NMBM management region starts at block 960 [0x07800000]
[    0.887692] First info table with writecount 0 found in block 960
[    0.896602] Second info table with writecount 0 found in block 963
[    0.902782] NMBM has been successfully attached
[    0.907647] 6 fixed-partitions partitions found on MTD device spi0.0
[    0.914232] Creating 6 MTD partitions on "spi0.0":
[    0.919108] 0x000000000000-0x000000100000 : "BL2"
[    0.924741] 0x000000100000-0x000000180000 : "u-boot-env"
[    0.930766] 0x000000180000-0x000000380000 : "Factory"
[    0.937525] 0x000000380000-0x0000003c0000 : "bdinfo"
[    0.943296] 0x0000003c0000-0x0000005c0000 : "FIP"
[    0.949408] 0x0000005c0000-0x0000045c0000 : "ubi"
[    0.983901] ubi0: default fastmap pool size: 25
[    0.988451] ubi0: default fastmap WL pool size: 12
[    0.993235] ubi0: attaching mtd5
[    1.212922] ubi0: scanning is finished
[    1.222566] ubi0: attached mtd5 (name "ubi", size 64 MiB)
[    1.227984] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    1.234845] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    1.241624] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    1.248577] ubi0: good PEBs: 512, bad PEBs: 0, corrupted PEBs: 0
[    1.254570] ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
[    1.261782] ubi0: max/mean erase counter: 15/10, WL threshold: 4096, image sequence number: 895542881
[    1.270989] ubi0: available PEBs: 0, total reserved PEBs: 512, PEBs reserved for bad PEB handling: 19
[    1.280202] ubi0: background thread "ubi_bgt0d" started, PID 256
[    1.286850] block ubiblock0_1: created from ubi0:1(rootfs)
[    1.292335] ubiblock: device ubiblock0_1 (rootfs) set to be root filesystem
[    1.798685] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc081800000, irq 75
[    1.808569] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc081800000, irq 75
[    1.818330] i2c_dev: i2c /dev entries driver
[    1.824351] mtk-wdt 1001c000.watchdog: Watchdog enabled (timeout=31 sec, nowayout=0)
[    1.833529] NET: Registered PF_INET6 protocol family
[    1.839890] Segment Routing with IPv6
[    1.843577] In-situ OAM (IOAM) with IPv6
[    1.847575] NET: Registered PF_PACKET protocol family
[    1.852652] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    1.865873] 8021q: 802.1Q VLAN Support v1.8
[    1.895384] phy phy-soc:usb-phy@11e10000.1: type_sw - reg 0x218, index 0
[    1.903151] clk: Disabling unused clocks
[    1.913169] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
[    1.920533] Freeing unused kernel memory: 448K
[    1.925061] Run /sbin/init as init process
[    1.929157]   with arguments:
[    1.932113]     /sbin/init
[    1.934807]   with environment:
[    1.937939]     HOME=/
[    1.940286]     TERM=linux
[    2.127678] init: Console is alive
[    2.131200] init: - watchdog -
[    2.589282] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    2.618061] usbcore: registered new interface driver usbfs
[    2.623588] usbcore: registered new interface driver hub
[    2.628959] usbcore: registered new device driver usb
[    2.634688] gpio_button_hotplug: loading out-of-tree module taints kernel.
[    2.647131] xhci-mtk 11200000.usb: xHCI Host Controller
[    2.652371] xhci-mtk 11200000.usb: new USB bus registered, assigned bus number 1
[    2.662779] xhci-mtk 11200000.usb: hcc params 0x01403f99 hci version 0x110 quirks 0x0000000000200010
[    2.671985] xhci-mtk 11200000.usb: irq 79, io mem 0x11200000
[    2.677756] xhci-mtk 11200000.usb: xHCI Host Controller
[    2.682975] xhci-mtk 11200000.usb: new USB bus registered, assigned bus number 2
[    2.690384] xhci-mtk 11200000.usb: Host supports USB 3.2 Enhanced SuperSpeed
[    2.697921] hub 1-0:1.0: USB hub found
[    2.701706] hub 1-0:1.0: 1 port detected
[    2.706108] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    2.714591] hub 2-0:1.0: USB hub found
[    2.718399] hub 2-0:1.0: 1 port detected
[    2.726695] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    2.744227] init: - preinit -
[    3.197095] mtk_soc_eth 15100000.ethernet eth1: PHY [mdio-bus:00] driver [MediaTek MT7981 PHY] (irq=POLL)
[    3.211795] mtk_soc_eth 15100000.ethernet eth1: configuring for phy/gmii link mode
[    5.335523] random: crng init done
[    6.315723] mtk_soc_eth 15100000.ethernet eth1: Link is Up - 1Gbps/Full - flow control rx/tx
[    7.450319] UBIFS (ubi0:2): Mounting in unauthenticated mode
[    7.456103] UBIFS (ubi0:2): background thread "ubifs_bgt0_2" started, PID 769
[    7.481611] UBIFS (ubi0:2): recovery needed
[    7.589759] UBIFS (ubi0:2): recovery completed
[    7.594263] UBIFS (ubi0:2): UBIFS: mounted UBI device 0, volume 2, name "rootfs_data"
[    7.602102] UBIFS (ubi0:2): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[    7.612007] UBIFS (ubi0:2): FS size: 47362048 bytes (45 MiB, 373 LEBs), max 383 LEBs, journal size 2412544 bytes (2 MiB, 19 LEBs)
[    7.623648] UBIFS (ubi0:2): reserved for root: 2237026 bytes (2184 KiB)
[    7.630253] UBIFS (ubi0:2): media format: w5/r0 (latest is w5/r0), UUID 00E797F4-A662-4709-9627-3FACC74BCE78, small LPT model
[    7.645861] mount_root: switching to ubifs overlay
[    7.655532] overlayfs: null uuid detected in lower fs '/', falling back to xino=off,index=off,nfs_export=off.
[    7.670670] urandom-seed: Seeding with /etc/urandom.seed
[    7.730421] mtk_soc_eth 15100000.ethernet eth1: Link is Down
[    7.747942] procd: - early -
[    7.750885] procd: - watchdog -
[    8.307961] procd: - watchdog -
[    8.312519] procd: - ubus -
[    8.468681] procd: - init -
[    8.802355] kmodloader: loading kernel modules from /etc/modules.d/*
[    8.835671] crypto-safexcel 10320000.crypto: EIP97:230(0,1,4,4)-HIA:270(0,5,5),PE:150/433(alg:7fcdfc00)/0/0/0
[    8.862900] Loading modules backported from Linux version v6.11.2-0-g7aa21fec187b
[    8.870441] Backport generated by backports.git v6.1.110-1-32-gc61f71fe0942
[    8.878332] usbcore: registered new interface driver ipheth
[    8.893370] usbcore: registered new interface driver cdc_ether
[    8.996407] urngd: v1.0.2 started.
[    9.240301] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20240823161240a
[    9.240301]
[    9.423731] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20240823161304
[    9.520435] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20240823161841
[    9.617712] mt798x-wmac 18000000.wifi: registering led 'mt76-phy0'
[    9.669375] mt798x-wmac 18000000.wifi: registering led 'mt76-phy1'
[    9.718703] PPP generic driver version 2.4.2
[    9.724077] NET: Registered PF_PPPOX protocol family
[    9.730528] usbcore: registered new interface driver rndis_host
[    9.738875] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
[    9.746771] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
[    9.760248] kmodloader: done loading kernel modules from /etc/modules.d/*
[    9.770647] mtdblock: MTD device 'bdinfo' is NAND, please consider using UBI block devices instead.
[    9.985085] mtdblock: MTD device 'bdinfo' is NAND, please consider using UBI block devices instead.
[   13.434368] mtk_soc_eth 15100000.ethernet eth1: PHY [mdio-bus:00] driver [MediaTek MT7981 PHY] (irq=POLL)
[   13.449357] mtk_soc_eth 15100000.ethernet eth1: configuring for phy/gmii link mode
[   13.457728] br-lan: port 1(eth1) entered blocking state
[   13.462959] br-lan: port 1(eth1) entered disabled state
[   13.468258] mtk_soc_eth 15100000.ethernet eth1: entered allmulticast mode
[   13.475230] mtk_soc_eth 15100000.ethernet eth1: entered promiscuous mode
[   13.755626] mtk_soc_eth 15100000.ethernet eth0: PHY [mdio-bus:01] driver [RTL8221B-VB-CG 2.5Gbps PHY (C45)] (irq=POLL)
[   13.766379] mtk_soc_eth 15100000.ethernet eth0: configuring for phy/2500base-x link mode
[   15.310683] br-lan: port 2(phy0-ap0) entered blocking state
[   15.316350] br-lan: port 2(phy0-ap0) entered disabled state
[   15.321963] mt798x-wmac 18000000.wifi phy0-ap0: entered allmulticast mode
[   15.328991] mt798x-wmac 18000000.wifi phy0-ap0: entered promiscuous mode
[   15.335883] br-lan: port 2(phy0-ap0) entered blocking state
[   15.341479] br-lan: port 2(phy0-ap0) entered forwarding state
[   15.347414] br-lan: port 2(phy0-ap0) entered disabled state
[   15.566730] br-lan: port 2(phy0-ap0) entered blocking state
[   15.572321] br-lan: port 2(phy0-ap0) entered forwarding state
[   15.841188] br-lan: port 3(phy1-ap0) entered blocking state
[   15.846865] br-lan: port 3(phy1-ap0) entered disabled state
[   15.852474] mt798x-wmac 18000000.wifi phy1-ap0: entered allmulticast mode
[   15.859508] mt798x-wmac 18000000.wifi phy1-ap0: entered promiscuous mode
[   15.866390] br-lan: port 3(phy1-ap0) entered blocking state
[   15.871959] br-lan: port 3(phy1-ap0) entered forwarding state
[   16.356647] br-lan: port 3(phy1-ap0) entered disabled state
[   16.555783] mtk_soc_eth 15100000.ethernet eth1: Link is Up - 1Gbps/Full - flow control rx/tx
[   16.555813] br-lan: port 1(eth1) entered blocking state
[   16.569475] br-lan: port 1(eth1) entered forwarding state
[   16.611542] br-lan: port 3(phy1-ap0) entered blocking state
[   16.617144] br-lan: port 3(phy1-ap0) entered forwarding state
[  143.435657] mtk_soc_eth 15100000.ethernet eth1: Link is Down
[  143.442131] br-lan: port 1(eth1) entered disabled state
[  406.555721] mtk_soc_eth 15100000.ethernet eth1: Link is Up - 1Gbps/Full - flow control rx/tx
[  406.555750] br-lan: port 1(eth1) entered blocking state
[  406.569389] br-lan: port 1(eth1) entered forwarding state
[  442.236185] mtk_soc_eth 15100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[  444.705435] mtk_soc_eth 15100000.ethernet eth0: Link is Down
[  447.836061] mtk_soc_eth 15100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[  480.395653] mtk_soc_eth 15100000.ethernet eth1: Link is Down
[  480.402057] br-lan: port 1(eth1) entered disabled state
[  482.155763] mtk_soc_eth 15100000.ethernet eth0: Link is Down
[  866.235717] mtk_soc_eth 15100000.ethernet eth1: Link is Up - 1Gbps/Full - flow control rx/tx
[  866.235746] br-lan: port 1(eth1) entered blocking state
[  866.249381] br-lan: port 1(eth1) entered forwarding state

For some reason:

[   13.766379] mtk_soc_eth 15100000.ethernet eth0: configuring for phy/2500base-x link mode

I don't understand why it's trying to set the link to 2.5G, switch ports are 1G. Tried with several different switches (mt6000, ax3600), issue remains the same.

eth0 is dsa parent, it has fixed mii link to a switch. 1gbps for anything up to 7621 and 2.5gbps from 7622 onwards.
I was asking mii-tool against (if you have 2.5gbps or) any lanX port with real life ethernet connector.

Check

ip link

lan1@eth5 would be form of DSA ports, where I ask to run mii-tool and ethtool against lan1 part.

here's the ip link output:

root@tr3000:~# ip link
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: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 80:af:ca:29:76:25 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP mode DEFAULT group default qlen 1000
    link/ether 80:af:ca:29:76:24 brd ff:ff:ff:ff:ff:ff
4: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 80:af:ca:29:76:24 brd ff:ff:ff:ff:ff:ff
5: phy0-ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
    link/ether 80:af:ca:29:76:24 brd ff:ff:ff:ff:ff:ff
6: phy1-ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
    link/ether 82:af:ca:29:76:25 brd ff:ff:ff:ff:ff:ff

In case necessary:

root@tr3000:~# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd60:1ba8:b093::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth1'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.152.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option device 'eth0'
        option proto 'dhcp'

config interface 'wan6'
        option device 'eth0'
        option proto 'dhcpv6'

One step further:

I've reversed the wan and lan, magically it started working :exploding_head:

@therpa What exactly do you mean by “reversed the wan and lan” to get it working?

changed ports of interfaces, eth1 for WAN eth0 for LAN

Hmmm, I tried that as well, but no luck on the Ruijie X60 Pro.

Problem is related, as we don't know why that fixed it for you, it's hard to diagnose.

Thanks for the clarification!