Dual 5Ghz radios and batman-adv - why half BW?

Greetings community!
I have 3x Linksys EA8300s and have succeeded in setting up an encrypted mesh with batman-adv over 802.11s, utuilizing all 3 radios as mesh links. AP roaming works well with DAWN / 802.11r, etc. I'm running a recent 21.02 snapshot I built to include the packages I want. I chose batman-adv so I can make use of VLANs.

My only issue is that it seems no matter how I configure the mesh, the bandwidth is half when connected to an AP over one mesh hop. Before you all jump on me and say 'duh', hear me out.
If the AP and mesh are operating on different radios of equal bandwidth, both links should support simultaneous comms and use all the bandwidth - right? I ruled out a CPU bottleneck. (reports 20% during testing on remote node.)

My configuration (all nodes configured identically, except for static ip address, test APs, etc.)

There is zero traffic on the system as I haven't distributed the wifi passwords yet... There are 3 nodes and all are in range of eachother, and can see all 3 radio links.

A batctl neighbor report claims ~195-175 Mbit on BOTH radios 0 and 2. Batman-adv is claims radio 0 as the main channel.
A batctl throughput test reports ~185 Mbit between the nodes on radio 0. That tracks.
When connected to radio 2 AP on remote node, iperf reports 90 Mbit.
When connected to radio 0 AP on remote node, iperf reports ~35-60 Mbit.
When connected to either radio on an AP next to the iperf server, I get ~200 Mbit.

here's a snip of /etc/config/network

<usual stuff left out>

config interface 'bat0'
        option proto 'batadv'
        option routing_algo 'BATMAN_V'
        option ipv6 '0'
        option aggregated_ogms '1'
        option ap_isolation '0'
        option bonding '0'
        option fragmentation '0'
        option gw_mode 'off'
        option log_level '0'
        option orig_interval '1000'
        option bridge_loop_avoidance '1'
        option distributed_arp_table '1'
        option multicast_mode '1'
        option multicast_fanout '16'
        option network_coding '0'
        option hop_penalty '30'
        option isolation_mark '0x00000000/0x00000000'

config interface 'bat0_hardif_mesh0'
        option proto 'batadv_hardif'
        option master 'bat0'
        option mtu '1560'
        option throughput_override '0'

config interface 'bat0_hardif_mesh1'
        option proto 'batadv_hardif'
        option master 'bat0'
        option mtu '1560'
        option throughput_override '0'

config interface 'bat0_hardif_mesh2'
        option proto 'batadv_hardif'
        option master 'bat0'
        option mtu '1560'
        option throughput_override '0'

config interface 'bat0_100'
        option proto 'batadv_vlan'
        option device 'bat0.100'
        option ap_isolation '1'

config device
        option type 'bridge'
        option name 'br-lan100'
        list ports 'bat0.100'
        list ports 'eth0.100'
        option bridge_empty '1'
        option mtu '1500'
        option ipv6 '0'

and a snip of /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11a'
        option path 'soc/40000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option htmode 'VHT80'
        option country 'US'
        option cell_density '0'
        option channel '149'

config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11g'
        option path 'platform/soc/a000000.wifi'
        option country 'US'
        option cell_density '0'
        option htmode 'HT40'
        option channel '1'

config wifi-device 'radio2'
        option type 'mac80211'
        option channel '36'
        option hwmode '11a'
        option path 'platform/soc/a800000.wifi'
        option htmode 'VHT80'
        option country 'US'
        option cell_density '0'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option mode 'ap'
        option ssid 'Private'
        option encryption 'psk2'
        option key 'XXXXXXXX'
        option ieee80211r '1'
        option ieee80211k '1'
        option ieee80211v '1'
        option nasid '2222'
        option mobility_domain '2222'
        option ft_over_ds '1'
        option ft_psk_generate_local '1'
        option network 'lan'

config wifi-iface 'wifinet1'
        option device 'radio1'
        option mode 'ap'
        option ssid 'Guest'
        option network 'lan100'
        option encryption 'psk2'
        option key 'XXXXXXXX'
        option ieee80211r '1'
        option ieee80211k '1'
        option ieee80211v '1'
        option nasid '1111'
        option mobility_domain '1111'
        option ft_over_ds '1'
        option ft_psk_generate_local '1'

config wifi-iface 'wifinet2'
        option device 'radio0'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_fwding '0'
        option mesh_rssi_threshold '0'
        option key 'XXXXXXXX'
        option mesh_id 'mesh0'
        option network 'bat0_hardif_mesh0'
        option ifname 'meshif0'
        option mesh_ttl '1'

config wifi-iface 'wifinet3'
        option device 'radio1'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id 'mesh1'
        option mesh_fwding '0'
        option mesh_rssi_threshold '0'
        option key 'XXXXXXXX'
        option network 'bat0_hardif_mesh1'
        option ifname 'meshif1'
        option mesh_ttl '1'

config wifi-iface 'wifinet4'
        option device 'radio2'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id 'mesh2'
        option mesh_fwding '0'
        option mesh_rssi_threshold '0'
        option key 'XXXXXXXX'
        option network 'bat0_hardif_mesh2'
        option ifname 'meshif2'
        option mesh_ttl '1'

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

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

Why cant the remote node AP's pull > 100 Mbit????

What channels are the radios on?
And what if you put them all very near each other?
It definitely will work as you expect... I have a similar setup as part of the Maxwell system. I use 36 and 149, with 80 MHz for each.

I use 36, 149, and 1. Which version of openwrt are you on? I am now wondering if there is some bottleneck with the bridge interface or something, perhaps introduced in 21.02... although I haven't tried it one 19.07 My LAN config looks like this:

config device
        option name 'br-lan'
        option type 'bridge'
        option ipv6 '0'
        list ports 'bat0'
        list ports 'eth0'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipv6 '0'
        option ipaddr 'XXXX'
        option gateway 'XXXX'
        list dns 'XXXX'

I use 19.07, but I doubt that's the issue.

Necro update:
It appears the lower bandwidth was not related to batman-adv, but instead the 802.11s mesh throughput being lower than I had expected.

I've recently been updating my home wifi setup and tried a few other technologies to bridge my vlans wirelessly. I was able to run some cable so I reduced my need for wireless nodes from 2 to one. This opened up some opportunity to try some tunneling technologies.

I found that the throughput of a vxlan tunnel was the same ~100Mbps as batman-adv, also set up over 802.11s (left that way for ease of connecting). Then I confirmed on my phone that I can get 350 Mbps over that radio when configured as an AP - so I tried setting up the bridging radios as a dedicated AP / station and run vxlan over that. My bandwidth improved to ~170 Mbps. It seems I'll just have to live with that until I get better hardware. :slight_smile:

Still confused at the number I see in LUCI saying the radio connection is 833Mbps...