Index: sys/dev/rt/if_rt.c =================================================================== --- sys/dev/rt/if_rt.c +++ sys/dev/rt/if_rt.c @@ -33,6 +33,9 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_platform.h" +#include "opt_rt305x.h" + #include "if_rtvar.h" #include "if_rtreg.h" @@ -58,9 +61,6 @@ #include #include -#include "opt_platform.h" -#include "opt_rt305x.h" - #ifdef FDT #include #include @@ -402,6 +402,12 @@ device_printf(dev, "%cT%x Ethernet MAC (rev 0x%08x)\n", sc->rt_chipid >= 0x7600 ? 'M' : 'R', sc->rt_chipid, sc->mac_rev); + if (sc->rt_chipid == RT_CHIPID_MT7620) { + /* GDMA1 Frames Destination Port set to Port 0 CPU */ + RT_WRITE(sc, GDMA1_BASE + GDMA_FWD_CFG, + RT_READ(sc, GDMA1_BASE + GDMA_FWD_CFG) + & ~(GDM_XFRC_P_MASK)); + } /* RT5350: No GDMA, PSE, CDMA, PPE */ RT_WRITE(sc, GE_PORT_BASE + 0x0C00, // UDPCS, TCPCS, IPCS=1 RT_READ(sc, GE_PORT_BASE + 0x0C00) | (0x7<<16)); Index: sys/dev/rt/if_rtreg.h =================================================================== --- sys/dev/rt/if_rtreg.h +++ sys/dev/rt/if_rtreg.h @@ -105,7 +105,11 @@ #define FOE_TS_TIMESTAMP_MASK 0x0000ffff #define FOE_TS_TIMESTAMP_SHIFT 0 +#if defined(MT7620) +#define GDMA1_BASE 0x0600 +#else #define GDMA1_BASE 0x0020 +#endif #define GDMA2_BASE 0x0060 #define CDMA_BASE 0x0080