Yocto based on OpenWrt

Hi all,

I have been working on a project where we are using the Omega2+ with the power and ethernet addons.

Since this board is to be added to a Yocto based project, I can't use the mainline or Onion OpenWRT builds so I've been trying to create a meta to support the Omega2+. To do that, I extracted the Linux 4.14.43 kernel source and device tree from the latest OpenWRT.

I have successfully built an kernel, initramfs and rootfs and booted them using the web updater from the UBoot and a sd-card. The kernel configuration was extracted from the OpenWRT and modified to my requirements (mainly, systemd, ext2/4 filesystem support and removed wireless stuff). The defconfig can be found here.

The problem is with the ethernet port. I can't make it work, I always get the following messages:

[ 6186.097454] mtk_soc_eth 10100000.ethernet eth0: transmit timed out
[ 6186.103746] mtk_soc_eth 10100000.ethernet eth0: dma_cfg:00000057
[ 6186.109874] mtk_soc_eth 10100000.ethernet eth0: tx_ring=0, base=07f8c000, max=1024, ctx=3, dtx=0, fdx=0, next=3
[ 6186.120125] mtk_soc_eth 10100000.ethernet eth0: rx_ring=0, base=07220000, max=1024, calc=1023, drx=0

I saw some reports of this issue in the web (here) but without a clear resolution.

I confirmed the internal switch configuration with swconfig and I see no differences to the mainline or Onion OpenWRT builds.

Strange enough, I can see RX packets arriving to the board correctly (with tcpdump and by pinging) but no TX packets are leaving. ifconfig reports an high packet error:

eth0      Link encap:Ethernet  HWaddr 40:A3:6B:C1:AD:1D  
          inet addr:  Bcast:  Mask:
          inet6 addr: fe80::42a3:6bff:fec1:ad1d%2012397072/64 Scope:Link
          RX packets:36 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:34 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6948 (6.7 KiB)  TX bytes:10836 (10.5 KiB)

I'm using systemd-networkd to configure the interface:





Can someone help me out?

For anyone with this problem, the switch must be configured before bringing up eth0.

These commands are needed for everything to work:

swconfig dev switch0 set reset 1
swconfig dev switch0 set enable_vlan 0
swconfig dev switch0 set apply 1