Wifi Issues when using multiple SSIDs from a single physical AP

Hi,

So I am using a Zyxel nbg6817 router. Since I started using more than one SSID with the N physical AP, I have been having wifi issues. At least once per day my devices stop being able to obtain an IP address from the router. When I look in dmesg on the router, I see messages such as:

[   52.263236] ath10k_pci 0001:01:00.0: Invalid peer id 1 or peer stats buffer, peer: 9bdf2760  sta: 00000000
[ 1562.726486] ath10k_pci 0001:01:00.0: Invalid VHT mcs 15 peer stats
[ 1769.840155] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 1906.610840] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 2057.762091] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 2096.025647] ath10k_pci 0001:01:00.0: htt tx: fixing invalid VHT TX rate code 0xff
[ 2140.823502] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 2613.905716] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 2934.945796] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 3192.876984] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 3743.688316] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 3754.628504] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 3901.208867] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[11534.629861] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[14538.059089] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[14540.699377] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[14723.919747] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[14726.570078] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[15458.612892] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[15478.783295] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[15518.643332] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[15538.263370] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[15558.993675] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[15578.503552] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[16855.938180] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[17114.009095] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[18351.454385] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[18651.615884] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[18651.815858] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[20547.994469] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[23001.918254] ath10k_pci 0001:01:00.0: mac flush vdev 1 drop 0 queues 0x2 ar->paused: 0x0  arvif->paused: 0x0

It recovers when I reboot the router. What could be the issue and how can I diagnose/solve it?

Thanks!

Let's review your config to understand what you've got going on:

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

Ok, so this is what I have

{
        "kernel": "5.15.167",
        "hostname": "*hostname*",
        "system": "ARMv7 Processor rev 0 (v7l)",
        "model": "ZyXEL NBG6817",
        "board_name": "zyxel,nbg6817",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.5",
                "revision": "r24106-10cc5fcd00",
                "target": "ipq806x/generic",
                "description": "OpenWrt 23.05.5 r24106-10cc5fcd00"
        }
}
config interface 'loopback'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'
        option device 'lo'

config globals 'globals'
        option ula_prefix '1234:5678:90ab::/48'

config interface 'lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option delegate '0'
        option device 'br-lan'

config interface 'lan_only'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option delegate '0'
        option device 'br-lan_only'

config device 'lan_eth1_1_dev'
        option name 'eth1.1'
        option macaddr '22:33:44:55:66:77'

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

config device 'wan_eth0_2_dev'
        option name 'eth0.2'
        option macaddr '22:33:44:55:66:78'

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

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

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

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '0t 5'
        option vid '2'

config interface 'cavpn'
        option proto 'wireguard'
        list addresses '10.1.2.3'
        option private_key '**********'

config wireguard_cavpn
        option public_key '***********'
        option description 'Peer'
        option persistent_keepalive '25'
        list allowed_ips '0.0.0.0/0'
        option endpoint_port '12345'
        option route_allowed_ips '1'
        option endpoint_host '1.2.3.4'

config route 'novpnroute'
        option interface 'wan'
        option target '0.0.0.0'
        option netmask '0.0.0.0'
        option gateway '3.4.5.1'
        option table 'novpn'

config rule
        option in 'lan'
        option src '192.168.1.13/32'
        option lookup 'novpn'

config route
        option target '7.8.9.10'
        option interface 'wan'

config route
        option target '7.8.9.10'
        option interface 'wan'

config interface 'guest'
        option type 'bridge'
        option proto 'static'
        option netmask '255.255.255.0'
        option delegate '0'
        option ipaddr '192.168.3.1'

config rule
        option in 'guest'
        option src '192.168.3.0/24'
        option lookup 'novpn'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth1.1'

config device
        option name 'br-lan_only'
        option type 'bridge'
        list ports 'eth1.2'
config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11a'
        option path 'soc/1b500000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option htmode 'VHT80'
        option channel 'auto'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'ssid1'
        option encryption 'psk2'
        option key 'key1'

config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11g'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option htmode 'HT20'
        option channel 'auto'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option key 'key1'
        option ssid 'ssid1'
        option encryption 'psk2'

config wifi-iface 'wifinet2'
        option encryption 'psk2'
        option device 'radio1'
        option mode 'ap'
        option key 'key1_guest'
        option ssid 'ssid1_guest'
        option network 'guest'
        option disabled '1'

config wifi-iface 'wifinet3'
        option ssid 'ssid1_lan'
        option encryption 'psk2'
        option device 'radio0'
        option mode 'ap'
        option network 'lan_only'
        option key 'key1_lan'
        option disassoc_low_ack '0'
        option disabled '1'

config wifi-iface 'wifinet4'
        option ssid 'ssid1_lan'
        option encryption 'psk2'
        option device 'radio1'
        option mode 'ap'
        option network 'lan_only'
        option key 'key1_lan'
        option disassoc_low_ack '0'

config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option local '/lan/'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option noresolv '1'
        list server '2.3.4.5'
        list server '2.3.4.6'
        option localservice '1'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option leasetime '12h'
        option limit '141'

config dhcp 'lan_only'
        option start '100'
        option leasetime '12h'
        option limit '150'
        option interface 'lan_only'
#       option dhcp_option=option::router
        option dhcp_option=option::dns-server

config dhcp 'guest'
        option interface 'guest'
        option start '100'
        option leasetime '12h'
        option limit '141'
        option dhcp_option '6,3.4.5.6'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

config tag 'ispdns'
        option dhcp_option '6,3.4.5.6'

config host
        option mac '00:11:22:33:44:55'
        option name 'device'
        option dns '1'
        option tag 'ispdns'
        option ip '192.168.1.13'


config defaults
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'

config zone
        option name 'lan_only'
        list network 'lan_only'
        option output 'ACCEPT'
        option input 'DROP'
        option forward 'DROP'

config zone
        option name 'wan'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
        list network 'wan'
        list network 'wan6'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'
        option enabled '0'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'
        option enabled '0'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'
        option enabled '0'

config include
        option path '/etc/firewall.user'

config zone
        option name 'wgzone'
        option input 'REJECT'
        option forward 'REJECT'
        option masq '1'
        option output 'ACCEPT'
        option mtu_fix '1'
        list network 'cavpn'

config forwarding
        option dest 'wgzone'
        option src 'lan'

config forwarding
        option dest 'wan'
        option src 'lan'

config zone
        option name 'lan2lanonly'
        option input 'ACCEPT'
        option forward 'REJECT'
        list network 'lan'
        option output 'ACCEPT'

config forwarding
        option dest 'lan_only'
        option src 'lan2lanonly'

config rule
        option src_port '68'
        option src 'lan_only'
        option name 'Allow_LAN_Only_DHCP'
        option target 'ACCEPT'
        option dest_port '67'
        list proto 'udp'

config zone
        option name 'guest'
        option input 'ACCEPT'
        list network 'guest'
        option output 'ACCEPT'
        option forward 'REJECT'

config forwarding
        option dest 'wan'
        option src 'guest'

config rule
        option dest_port '53'
        list proto 'udp'
        option name 'Allow_LAN_Only_DNS'
        list src_ip '192.168.2.0/28'
        list dest_ip '192.168.2.1'
        option target 'ACCEPT'
        option src 'lan_only'
        option family 'ipv4'

config rule
        option dest_port '123'
        option src 'lan_only'
        option name 'Allow_LAN_Only_NTP'
        list src_ip '192.168.2.0/28'
        option family 'ipv4'
        option target 'ACCEPT'
        list proto 'udp'
        list dest_ip '192.168.1.20'
        option dest 'lan'

The syntax of your wifi radio config does not jive wit the version of OpenWrt that you are running. I think that is the problem.

How did this config get into place? Was it present previously and then you upgraded to the latest OpenWrt? Or, did you restore a backup? Or did you manually restore or edit the files?

Yes it was there before I updated, and I restored them from a backup if I recall properly. I had not updated for quite a few years. So what is the proper syntax now?

Typically, the hwmode is replaced by a band (5g or 2g) and the path may also be different (and not something that I can just provide as an example).

I'd recommend making a backup, resetting to defaults, and then manually recreating the config, using your backup as a human-readable reference only.

1 Like

Ok I will give that a try. It is a bit strange that it does work for a while then stops rather than not working at all.

Yeah, I'm not sure why that is. There could be other factors at play -- including possibly things like power adapters and the like. But start by working with a known good config that is syntactically correct.

i see this issue with all my openwrt devices. i have to reboot once a day or so, and then they work fine again. all my devices are old and tired, perhaps that's why.

This is not normal or common.

If you have failing or marginal hardware, especially power supplies or capacitors, this could explain it. Otherwise there is likely a configuration issue. (or less likely but still possible, a bug).

1 Like

My only ath10k device on 23.05.5 is marginal with a lot of error messages. However on mine when the radio crashes the driver self recovers it. So it was more of a drop and then recovery.

My suggestion would be see if on snapshot there are less error messages/crashes. I didn't do extensive testing on mine but there were less error messages on snapshot.

I just moved the device to single SSID as I wanted to use it mostly as a router/switch.

You may try replacing -ct driver and firmware to mainline (without -ct in package name) or vice versa.
(keep board data package and uninstall 2 packages and reinstall 2 replacements)

1 Like

Ok so I deleted the wireless config file, rebooted, and redid it using the web service. It did not seem to fix the issue I have. I have ESP32-based devices that keep dropping from my network and are unable to recover. I see these messages on the router:

[ 1124.785579] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 1607.335891] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 1780.875812] ath10k_pci 0001:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 1875.203008] ath10k_pci 0001:01:00.0: htt tx: fixing invalid VHT TX rate code 0xff
[ 2545.087212] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 2780.750566] ath10k_pci 0000:01:00.0: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
[ 3019.754490] ath10k_pci 0001:01:00.0: mac flush vdev 2 drop 0 queues 0x4 ar->paused: 0x0  arvif->paused: 0x0
[ 3019.844521] ath10k_pci 0001:01:00.0: mac flush vdev 2 drop 0 queues 0x4 ar->paused: 0x0  arvif->paused: 0x0

Somehow it seems that the devices drop less frequently if I ping them continuously. The same type of devices with the same firmware seem to be doing fine on another wireless network, so I think it has something to do with my router. I don't seem to have issues with AC or with wired.

Let's see the latest /etc/config/wireless file.

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'soc/1b500000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option cell_density '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option channel '1'
        option band '2g'
        option htmode 'HT20'
        option cell_density '0'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option mode 'ap'
        option ssid 'ssid'
        option encryption 'psk2'
        option key 'key'
        option network 'lan'

config wifi-iface 'wifinet1'
        option device 'radio1'
        option mode 'ap'
        option ssid 'ssid'
        option encryption 'psk2'
        option key 'key'
        option network 'lan'

config wifi-iface 'wifinet2'
        option device 'radio1'
        option mode 'ap'
        option ssid 'ssid_guest'
        option encryption 'psk2'
        option key 'key_guest'
        option network 'guest'

config wifi-iface 'wifinet3'
        option device 'radio1'
        option mode 'ap'
        option ssid 'ssid_lan'
        option encryption 'psk2'
        option key 'key_lan'
        option network 'lan_only'

that looks fine.

If you disable one or more of the SSIDs, does it solve the problem?

Ok I will try testing that overnight and see the result

So I let it run overnight with only my lan_only SSID enabled and it run perfectly fine. Reenabled one SSID this morning and most of my devices on lan_only were disconnected within 15 minutes

Which driver+fw ?

1 Like

What could I do now to diagnose the issue? Thanks!