Any SFP+ slot set to 1G through the RCW (Using 1G SFPs: bl2_qspi_*_xg1_sfp_1g.pbl or bl2_qspi_*_both_sfp_1g.pbl in the bl2 flash partition, built by build-atf.sh) does not link under Linux: the device tree Linux gets still says phy-connection-type = "10gbase-r" for that DPMAC while the lane runs at 1G. Seen here with the top slot at 1G (dpmac1, bl2_qspi_1600_xg1_sfp_1g.pbl). U-Boot’s ten64_fdt_fixup_sfps() is applied to U-Boot’s own device tree only (board_fix_fdt()), not to the one handed to the OS (ft_board_setup()), so U-Boot’s networking works and Linux’s doesn’t. Same in ten64-rebase-2026-02, where the one-1G case additionally patches ethernet@2 in the FDT fixup while the DPC fixup a few lines above (and the hardware) use DPMAC1.
Fix, on the v0.9.1 tree (df72b6d8416, board/traverse/ten64/ten64.c):
diff --git i/board/traverse/ten64/ten64.c w/board/traverse/ten64/ten64.c
index b6dcb321cdb..2c6ea608b45 100644
--- i/board/traverse/ten64/ten64.c
+++ w/board/traverse/ten64/ten64.c
@@ -405,6 +405,13 @@ int ft_board_setup(void *blob, struct bd_info *bd)
if (IS_ENABLED(CONFIG_FSL_MC_ENET))
fdt_fixup_board_enet(blob);
+ /* Also tell the OS which SFP+ ports the RCW runs at 1G, as done
+ * for U-Boot's own FDT in board_fix_fdt(). The mode written is
+ * "sgmii"; Linux selects 1000BASE-X or SGMII per inserted module
+ * anyway, as the PCS supports both on the same lane.
+ */
+ ten64_fdt_fixup_sfps(blob, false);
+
ten64_fdt_change_sfp_mode(blob);
fdt_fixup_icid(blob);
Workaround without reflashing, at the U-Boot prompt (s during autoboot), for OpenWrt in slot B, using the bootm subcommands and fdt set:
ubi part ubib
ubi read 0xa0000000 kernel
setenv bootargs root=/dev/ubiblock0_1 earlycon ubi.mtd=ubib
bootm start 0xa0000000#ten64
bootm loados
bootm ramdisk
bootm fdt
fdt set /soc/fsl-mc@80c000000/dpmacs/ethernet@1 phy-connection-type 1000base-x
bootm prep
bootm go