Skip to content

MT7530: Bridge VLAN filtering fails to process untagged ingress traffic on PVID port (post port-disable fix) #18576

Description

@ricardomfmsousa

Describe the bug

Platform:

  • Device: any device with MT7530-like switch (not the OpenWrt One which doesn't have such switch)
  • SoC: MediaTek MT7981 (Filogic 820)
  • Tested OpenWrt Versions:
    • 24.10.0 - r28427-6df0e3d02a (Port eth1 entered disabled state)
    • 24.10.1 - r28597-0425664679 (Port eth1 stays UP, but traffic fails)

Description:

When configuring bridge VLAN filtering on br-lan with the built-in LAN port (eth1) set as an untagged member of a specific VLAN (e.g., VLAN 10) using PVID, communication with the router via that port fails.

  • On older snapshot 24.10.0-r28427, enabling this configuration caused the kernel to put eth1 into a disabled state (see log snippet below).
  • On newer snapshot 24.10.1-r28597, the port eth1 remains UP and LOWER_UP, but untagged ingress traffic (e.g., ARP requests from a client) arriving on eth1 is not delivered to the corresponding logical VLAN interface (br-lan.10). This prevents ARP resolution and any communication with the router's IP on that VLAN interface.
  • Disabling option vlan_filtering '1' on br-lan and attaching the lan interface directly to br-lan works correctly, allowing communication.

OpenWrt version

r28597-0425664679

OpenWrt release

24.10.1

OpenWrt target/subtarget

mediatek/filogic

Device

? (original author claimed "OpenWrt One", but that was just to get our attention -- the OpenWrt One doesn't have an MT7530 switch)

Image kind

Official downloaded image

Steps to reproduce

  1. Factory reset OpenWrt One running a recent snapshot (e.g., 24.10.1).

  2. Configure /etc/config/network similar to the following relevant sections:

    config device 'br_lan'
        option type 'bridge'
        option name 'br-lan'
        list ports 'eth1'
        option vlan_filtering '1'
        # Add CPU tags
        list vlan_config 'vid=10 local=1'
        # ... other CPU tags if needed ...
        # Configure eth1 as untagged access port for VLAN 10
        list vlan_config 'vid=10 port=eth1 pvid=1 untagged=1'
    
    config interface 'lan'
        option device 'br-lan.10' # Use VLAN interface
        option proto 'static'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        # ... other lan options ...
    
  3. Reload network: service network reload

  4. Connect a client computer directly to eth1.

  5. Configure a static IP on the client (e.g., 192.168.10.10/24, gateway 192.168.10.1).

  6. Attempt to ping the router: ping 192.168.10.1

Actual behaviour

  • Ping fails (Destination Host Unreachable or timeout).
  • tcpdump -i eth1 -n arp shows ARP requests arriving from the client.
  • tcpdump -i br-lan.10 -n arp shows no ARP requests arriving on the VLAN interface.
  • ip neigh show dev br-lan.10 shows no entries for the client.
  • (Secondary Issue) The command ip bridge vlan show fails with "Object 'bridge' is unknown".

Expected behaviour

  • Ping should succeed.
  • ARP requests seen on eth1 should also be seen on br-lan.10.
  • ip neigh show dev br-lan.10 should show the client's entry after successful ARP.
  • ip bridge vlan show should ideally display the bridge VLAN configuration.

Additional info

Diagnostic Log Snippet (from older firmware r28427 showing port disable):
kern.info kernel: [ 20.843392] br-lan: port 1(eth1) entered blocking state kern.info kernel: [ 20.848629] br-lan: port 1(eth1) entered disabled state

This appears to be a regression or remaining driver issue specifically related to handling untagged ingress traffic on PVID ports when bridge VLAN filtering is enabled on the MT7981 SoC.

Diffconfig


Terms

  • I am reporting an issue for OpenWrt, not an unsupported fork.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Official ImageSupported Devicebugissue report with a confirmed bugrelease/24.10pull request/issue targeted (also) for OpenWrt 24.10 releasetarget/mediatekpull request/issue for mediatek target

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions