Jump to content

Network bridge fails to initialize (VLAN in promisc mode not supported)


Recommended Posts

Posted

Hello,

 

I tried to setup a network bridge on the Orange Pi 5 to utilize with Qemu/KVM and some virtual machines I have.  Here is my armbianmonitor output: https://paste.armbian.com/dajivikohi

 

I edited /etc/netplan/armbian-default.yaml and modified it to setup a simple network bridge.  I've done this countless times on other hardware I have.  I rebooted, but the bridge fails to initialize and the screen gets an error dumped out every 5-10 seconds:

 

rk_gmac-dumac: fe1c0000.ethernet eth0: Adding VLAN in promisc mode not supported

rk_gmac-dumac: fe1c0000.ethernet eth0: failed to initialize vlan filtering on this port

 

Is bridging really not supported on this network interface?  Does anyone know if there's a workaround for this?  I don't even need VLANs, but it seems like the bridge itself is trying to enable vlan filtering.

 

Thanks.

 

Posted

This is because the only branch supporting orangepi5 is legacy (with 5.10.x kernel), and there's a bug related to briding. Here's a workaround patch for it:

 

https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/Workaround-for-issue-Bridge-mode-on-EQoS-module-will-not-work/ta-p/1559302

 

You can build the kernel using https://github.com/armbian/build with this patch:

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
index d2d344b23..b84549ec0 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
@@ -450,12 +450,6 @@ static int dwmac4_add_hw_vlan_rx_fltr(struct net_device *dev,
 	if (vid > 4095)
 		return -EINVAL;
 
-	if (hw->promisc) {
-		netdev_err(dev,
-			   "Adding VLAN in promisc mode not supported\n");
-		return -EPERM;
-	}
-
 	/* Single Rx VLAN Filter */
 	if (hw->num_vlan == 1) {
 		/* For single VLAN filter, VID 0 means VLAN promiscuous */
@@ -505,12 +499,6 @@ static int dwmac4_del_hw_vlan_rx_fltr(struct net_device *dev,
 {
 	int i, ret = 0;
 
-	if (hw->promisc) {
-		netdev_err(dev,
-			   "Deleting VLAN in promisc mode not supported\n");
-		return -EPERM;
-	}
-
 	/* Single Rx VLAN Filter */
 	if (hw->num_vlan == 1) {
 		if ((hw->vlan_filter[0] & GMAC_VLAN_TAG_VID) == vid) {

 

Posted (edited)

Is this patch applied in 23.11? I still get a slightly different error:

[  +0.069878] br0: port 1(end1) entered blocking state
[  +0.000007] br0: port 1(end1) entered disabled state
[  +0.000245] rk_gmac-dwmac fe1c0000.ethernet end1: Timeout accessing MAC_VLAN_Tag_Filter
[  +0.016328] rk_gmac-dwmac fe1c0000.ethernet end1: failed to initialize vlan filtering on this port

 

 

Edited by Oskar Enoksson
Posted

If anyone experiences this "Timeout accessing MAC_VLAN_Tag_Filter" error: it seems related to an energy saving function (eee) in the ethernet interface. See

Linux kernel mailing list.

 

The problem disappeared for me if I disabled this eee function by

sudo ethtool --set-eee end1 eee off

 

About the "Adding VLAN in promisc mode not supported" problem (the original problem described in this thread) it seems to be fixed in 23.11. Bridging works without kernel patch.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines