Netgear R6220 not able to get IP address for WAN interface

I am setting up my 2nd OpenWRT device - R6220.
The 1st one, TL-WR841N/ND v9 worked as soon as I installed software.
I am setting up R6220 as a router, connected directly to a cable modem.
All settings are default, i.e. WAN port is configured as DHCP.
The cable is connected to the modem, but the port is down.
The rest of the ports seem to be working.
I bought this modem on ebay, so it is possible that it is faulty.
I am using build OpenWrt 19.07.7 r11306-c4a6851c72 / LuCI openwrt-19.07 branch git-21.044.30835-34e0d65.
Interestingly, I was able to connect to Internet for few minutes, but after that internet disconnected and I was never able to connect again.
If I replace R6220 with TL-WR841N, everything starts working.
I re-installed the OEM firmware and all is working great.
Any suggestions?

Alex

Update: WAN comes up after unplugging and plugging back the cable to the modem.
Need to figure out how to have it connecting without reconnecting the cable.
My other router, TL-WR841N/ND v9, running 18.06 does not have this problem.

Here is my relevant system log:

Sat Feb 20 18:51:59 2021 kern.info kernel: [   15.191236] mt76x2e 0000:01:00.0: Firmware running!
Sat Feb 20 18:51:59 2021 kern.debug kernel: [   15.203754] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
Sat Feb 20 18:51:59 2021 kern.info kernel: [   15.214794] PPP generic driver version 2.4.2
Sat Feb 20 18:51:59 2021 kern.info kernel: [   15.226630] NET: Registered protocol family 24
Sat Feb 20 18:51:59 2021 user.info kernel: [   15.240194] kmodloader: done loading kernel modules from /etc/modules.d/*
Sat Feb 20 18:52:00 2021 user.notice dnsmasq: DNS rebinding protection is active, will discard upstream RFC1918 responses!
Sat Feb 20 18:52:00 2021 user.notice dnsmasq: Allowing 127.0.0.0/8 responses
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: started, version 2.80 cachesize 150
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: DNS service limited to local subnets
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-nettlehash no-DNSSEC no-ID loop-detect inotify dumpfile
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain test
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain onion
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain localhost
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain local
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain invalid
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain bind
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: using local addresses only for domain lan
Sat Feb 20 18:52:01 2021 daemon.warn dnsmasq[966]: no servers found in /tmp/resolv.conf.auto, will retry
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: read /etc/hosts - 4 addresses
Sat Feb 20 18:52:01 2021 daemon.info dnsmasq[966]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses
Sat Feb 20 18:52:01 2021 authpriv.info dropbear[999]: Not backgrounding
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: 8021ad
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: 8021q
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: macvlan
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: veth
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: bridge
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: Network device
Sat Feb 20 18:52:03 2021 user.notice : Added device handler type: tunnel
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/network reload dependency on /etc/config/dhcp
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/network reload dependency on /etc/config/radvd
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/wireless reload dependency on /etc/config/network
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/firewall reload dependency on /etc/config/luci-splash
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/firewall reload dependency on /etc/config/qos
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/firewall reload dependency on /etc/config/miniupnpd
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up /etc/config/dhcp reload dependency on /etc/config/odhcpd
Sat Feb 20 18:52:05 2021 user.notice ucitrack: Setting up non-init /etc/config/fstab reload handler: /sbin/block mount
Sat Feb 20 18:52:06 2021 user.notice ucitrack: Setting up /etc/config/system reload trigger for non-procd /etc/init.d/led
Sat Feb 20 18:52:06 2021 user.notice ucitrack: Setting up /etc/config/system reload dependency on /etc/config/luci_statistics
Sat Feb 20 18:52:06 2021 user.notice ucitrack: Setting up /etc/config/system reload dependency on /etc/config/dhcp
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.771322] mtk_soc_eth 1e100000.ethernet: PPE started
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.812102] br-lan: port 1(eth0.1) entered blocking state
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.822986] br-lan: port 1(eth0.1) entered disabled state
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.834341] device eth0.1 entered promiscuous mode
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.843964] device eth0 entered promiscuous mode
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.868796] br-lan: port 1(eth0.1) entered blocking state
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.879656] br-lan: port 1(eth0.1) entered forwarding state
Sat Feb 20 18:52:06 2021 kern.info kernel: [   22.891300] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'lan' is enabled
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'lan' is setting up now
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'lan' is now up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'loopback' is enabled
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'loopback' is setting up now
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'loopback' is now up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'wan' is enabled
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'wan6' is enabled
Sat Feb 20 18:52:06 2021 daemon.notice netifd: bridge 'br-lan' link is up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'lan' has link connectivity
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Network device 'eth0' link is up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: VLAN 'eth0.1' link is up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Network device 'lo' link is up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'loopback' has link connectivity
Sat Feb 20 18:52:06 2021 daemon.notice netifd: VLAN 'eth0.2' link is up
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'wan' has link connectivity
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'wan' is setting up now
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'wan6' has link connectivity
Sat Feb 20 18:52:06 2021 daemon.notice netifd: Interface 'wan6' is setting up now
Sat Feb 20 18:52:07 2021 user.notice firewall: Reloading firewall due to ifup of lan (br-lan)
Sat Feb 20 18:52:07 2021 daemon.notice netifd: wan (1358): udhcpc: started, v1.30.1
Sat Feb 20 18:52:07 2021 daemon.notice procd: /etc/rc.d/S96led: setting up led wan
Sat Feb 20 18:52:07 2021 kern.info kernel: [   23.841816] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
Sat Feb 20 18:52:07 2021 daemon.err odhcp6c[1356]: Failed to send RS (Address not available)
Sat Feb 20 18:52:07 2021 daemon.err odhcpd[1095]: Failed to send to ff02::1%lan@br-lan (Address not available)
Sat Feb 20 18:52:07 2021 daemon.notice netifd: wan (1358): udhcpc: sending discover
Sat Feb 20 18:52:08 2021 user.notice mac80211: Failed command: iw phy phy0 set antenna 0xffffffff 0xffffffff
Sat Feb 20 18:52:09 2021 daemon.err hostapd: Configuration file: /var/run/hostapd-phy1.conf
Sat Feb 20 18:52:09 2021 daemon.err hostapd: Configuration file: /var/run/hostapd-phy0.conf
Sat Feb 20 18:52:09 2021 daemon.info procd: - init complete -
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.102168] IPv6: ADDRCONF(NETDEV_UP): wlan1: link is not ready
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.127888] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.146803] br-lan: port 2(wlan1) entered blocking state
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.157866] br-lan: port 2(wlan1) entered disabled state
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.169289] device wlan1 entered promiscuous mode
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.180690] br-lan: port 3(wlan0) entered blocking state
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.191383] br-lan: port 3(wlan0) entered disabled state
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.202594] device wlan0 entered promiscuous mode
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.212213] br-lan: port 3(wlan0) entered blocking state
Sat Feb 20 18:52:09 2021 kern.info kernel: [   26.222875] br-lan: port 3(wlan0) entered forwarding state
Sat Feb 20 18:52:09 2021 daemon.notice hostapd: wlan1: interface state UNINITIALIZED->HT_SCAN
Sat Feb 20 18:52:09 2021 daemon.err hostapd: Using interface wlan0 with hwaddr cc:40:d0:aa:80:20 and ssid "OpenWrt"
Sat Feb 20 18:52:09 2021 daemon.notice hostapd: wlan0: interface state UNINITIALIZED->ENABLED
Sat Feb 20 18:52:09 2021 daemon.notice hostapd: wlan0: AP-ENABLED
Sat Feb 20 18:52:10 2021 kern.info kernel: [   26.269011] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Sat Feb 20 18:52:10 2021 daemon.notice netifd: Network device 'wlan0' link is up
Sat Feb 20 18:52:10 2021 daemon.err hostapd: Using interface wlan1 with hwaddr cc:40:d0:aa:80:24 and ssid "OpenWrt"
Sat Feb 20 18:52:10 2021 daemon.notice netifd: wan (1358): udhcpc: sending discover
Sat Feb 20 18:52:10 2021 kern.info kernel: [   27.248297] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready
Sat Feb 20 18:52:10 2021 kern.info kernel: [   27.261836] br-lan: port 2(wlan1) entered blocking state
Sat Feb 20 18:52:10 2021 kern.info kernel: [   27.272556] br-lan: port 2(wlan1) entered forwarding state
Sat Feb 20 18:52:10 2021 daemon.notice hostapd: wlan1: interface state HT_SCAN->ENABLED
Sat Feb 20 18:52:10 2021 daemon.notice hostapd: wlan1: AP-ENABLED
Sat Feb 20 18:52:11 2021 daemon.notice netifd: Network device 'wlan1' link is up
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[966]: exiting on receipt of SIGTERM
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: started, version 2.80 cachesize 150
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: DNS service limited to local subnets
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-nettlehash no-DNSSEC no-ID loop-detect inotify dumpfile
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq-dhcp[1978]: DHCP, IP range 192.168.1.100 -- 192.168.1.249, lease time 12h
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain test
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain onion
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain localhost
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain local
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain invalid
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain bind
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: using local addresses only for domain lan
Sat Feb 20 18:52:13 2021 daemon.warn dnsmasq[1978]: no servers found in /tmp/resolv.conf.auto, will retry
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: read /etc/hosts - 4 addresses
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: read /tmp/hosts/dhcp.cfg01411c - 2 addresses
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq-dhcp[1978]: read /etc/ethers - 0 addresses
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: read /etc/hosts - 4 addresses
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq[1978]: read /tmp/hosts/dhcp.cfg01411c - 2 addresses
Sat Feb 20 18:52:13 2021 daemon.info dnsmasq-dhcp[1978]: read /etc/ethers - 0 addresses
Sat Feb 20 18:52:14 2021 daemon.notice netifd: wan (1358): udhcpc: sending discover
Sat Feb 20 18:52:14 2021 daemon.err uhttpd[1151]: luci: accepted login on /admin/system/reboot for root from 192.168.1.101
Sat Feb 20 19:00:33 2021 daemon.err uhttpd[1151]: luci: accepted login on /admin/network/network for root from 192.168.1.100

The piece below happens after I unplug and plug the cable:

Sat Feb 20 19:00:48 2021 kern.info kernel: [  545.101516] mtk_soc_eth 1e100000.ethernet eth0: port 4 link down
Sat Feb 20 19:00:51 2021 kern.info kernel: [  548.064353] mtk_soc_eth 1e100000.ethernet eth0: port 4 link up
Sat Feb 20 19:00:53 2021 daemon.notice netifd: wan (1358): udhcpc: sending select for 69.120.216.128
Sat Feb 20 19:00:53 2021 daemon.notice netifd: wan (1358): udhcpc: lease of 69.120.216.128 obtained, lease time 43200
Sat Feb 20 19:00:53 2021 daemon.notice netifd: Interface 'wan' is now up
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: reading /tmp/resolv.conf.auto
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain test
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain onion
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain localhost
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain local
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain invalid
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain bind
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using local addresses only for domain lan
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using nameserver 65.19.96.252#53
Sat Feb 20 19:00:53 2021 daemon.info dnsmasq[1978]: using nameserver 65.19.96.253#53
Sat Feb 20 19:00:53 2021 user.notice firewall: Reloading firewall due to ifup of wan (eth0.2)

Similar issue with my Netgear WNDR4300v1 on the WAN side while DD-WRT doesn't have this issue.

Found a potential solution:
https://dev.archive.openwrt.org/ticket/18680
but I have no idea how to apply it to my configuration.
Here is my network config:

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd17:f59f:c88b::/48'

config interface 'lan'
	option type 'bridge'
	option ifname 'eth0.1'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config device 'lan_eth0_1_dev'
	option name 'eth0.1'
	option macaddr 'cc:40:d0:aa:80:20'

config interface 'wan'
	option ifname 'eth0.2'
	option proto 'dhcp'

config device 'wan_eth0_2_dev'
	option name 'eth0.2'
	option macaddr 'cc:40:d0:aa:80:21'

config interface 'wan6'
	option ifname 'eth0.2'
	option proto 'dhcpv6'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '4 6t'

I believe you just need to swap one of "0 1 2 3" in line 2 with "4" in line 4, and the new number in line 4 will be your WAN port. Then refer to this table to locate the actual physical port, e.g. if you swap 0 with 4 then you use physical port labeled 'LAN4' for WAN.

config switch_vlan
	option ports '0 1 2 3 6t'
config switch_vlan
	option ports '4 6t'

You can also verify port numbers by their link status change with this:

@vgaetera , @ppmm
Thank you for your help, I will try your suggestions.

1 Like

I tried this config:

config switch_vlan
	option ports '1 2 3 4 6t'
config switch_vlan
	option ports '0 6t'

and the router is bricked - the PC, connected to the router does not get IP address and thus not able to connect to router.

Hard to imagine router is bricked because of the change. Have you tried other LAN ports or wireless?

1 Like

Not exactly like that I hope, you still need the device and vlan number options in each one. What @ppmm was saying to do was only change the ports options in the existing configuration to move ports from one VLAN to another.

Because it is common for a WAN port to get damaged by lightning coming through the cable or DSL line and modem. Running for a few hours with stock firmware is the best way to check for hardware problems on a "new to you" used router.

1 Like

Oh boy... What's the effect of only having this?
Sounds like router can be saved by doing tftp flash.

config switch_vlan
	option ports '1 2 3 4 6t'
config switch_vlan
	option ports '0 6t'

Ethernet will not work. If you left yourself a way to log in by wifi, do that. Otherwise use the reset button to reset to defaults or to boot into failsafe mode. It should not be necessary to reflash.

3 Likes

Is that the only change I need to make, or I also need to re-assignt enthernet ports (eth0 etc)

config switch_vlan
	option ports '1 2 3 4 6t'
config switch_vlan
	option ports '0 6t'

I am not worried about bricking - looks like wifi is open and I can try to connect there, I can also do reset and finally I can push OEM firmware, which I have done already in the past.
I am positive this is not hardware problem - I received 2nd R6220 device and it has the same problem.

Rebuild the whole switch section like this then change the numbers.

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '3 6t'

[/quote]
here I've removed port 3 from VLAN 1 (lan and added it to VLAN 2 (wan). This has no practical use other than if you think port 4 is bad, now you can plug the modem into port 3 instead. Note that port 4 is not in any VLAN now. This means that no packets can pass to or from it. Leave it unconnected.

If you've been changing many configurations it would be best to go back to default and start over. Default works like stock firmware set to defaults except wifi is turned off.

I think I made it work now. It is about the same configuration I tried initially. I suspect that maybe I did not reboot properly 1st time - I just pulled a plug without sync and reboot commands.
Here is my configuration:

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0 1 2 4 6t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '3 6t'

This configuration above works in case where the WAN port is connected to another upstream router, but it still does not work with WAN port, connected to my cable modem...
I still have to unplug and plug the cable back between the WAN port and modem to get connection to the internet.
Any suggestions?

One theory is that your Netgear R6220 and my Netgear WNDR4300 do not reset ethernet network switch throughout the reboot process, and so there's no physical port down event, and then cable modem is not willing to hand out new IP. I just find this [OpenWrt Wiki] swconfig and there's not an equivalent port disable command found on my router.

--> If the theory stands, chances are if you configure your wan interface with last known WAN IP it will work.]
<-- Nope, this is wrong. Manually putting the previous WAN IP and default route in does not work.

root@WNDR4300:/etc/config# swconfig dev switch0 help
switch0: ag71xx-mdio.0(Atheros AR8327), ports: 7 (cpu @ 0), vlans: 4096
     --switch
	Attribute 1 (int): enable_vlan (Enable VLAN mode)
	Attribute 2 (none): reset_mibs (Reset all MIB counters)
	Attribute 3 (int): ar8xxx_mib_poll_interval (MIB polling interval in msecs (0 to disable))
	Attribute 4 (int): ar8xxx_mib_type (MIB type (0=basic 1=extended))
	Attribute 5 (int): enable_mirror_rx (Enable mirroring of RX packets)
	Attribute 6 (int): enable_mirror_tx (Enable mirroring of TX packets)
	Attribute 7 (int): mirror_monitor_port (Mirror monitor port)
	Attribute 8 (int): mirror_source_port (Mirror source port)
	Attribute 9 (int): arl_age_time (ARL age time (secs))
	Attribute 10 (string): arl_table (Get ARL table)
	Attribute 11 (none): flush_arl_table (Flush ARL table)
	Attribute 12 (int): igmp_snooping (Enable IGMP Snooping)
	Attribute 13 (int): igmp_v3 (Enable IGMPv3 support)
	Attribute 14 (none): apply (Activate changes in the hardware)
	Attribute 15 (none): reset (Reset the switch)
     --vlan
	Attribute 1 (int): vid (VLAN ID (0-4094))
	Attribute 2 (ports): ports (VLAN port mapping)
     --port
	Attribute 1 (none): reset_mib (Reset single port MIB counters)
	Attribute 2 (string): mib (Get port's MIB counters)
	Attribute 3 (int): enable_eee (Enable EEE PHY sleep mode)
	Attribute 4 (none): flush_arl_table (Flush port's ARL table entries)
	Attribute 5 (int): igmp_snooping (Enable port's IGMP Snooping)
	Attribute 6 (int): vlan_prio (Port VLAN default priority (VLAN PCP) (0-7))
	Attribute 7 (int): pvid (Primary VLAN ID)
	Attribute 8 (unknown): link (Get port link information)

So far is the cable disconnection/connection the only working workaround?
Did you try interface reset at software level, something like

ifconfig eth0 down && sleep 5 && ifconfig eth0 up

Quick update - upgraded to 21.02 and it works as expected now!
Not only that, but now WAN port works correctly - I connect to modem from WAN port as opposed to LAN port.

The only caveat is that it takes a couple of minutes for the router to realize that modem is up and initiate a connection to the internet.