When hostapd iface (ap1) is bridged to eth0, pinging from one client to another that is connected to the same interface won't work until another host on eth0 pings that client. ap_isolate
is not set. No issues with non-bridged hostapd interface.
Solution is to set hairpin mode:
echo 1 > /sys/devices/virtual/net/br0/lower_ap1/brport/hairpin_mode
To make it permanent when using systemd-networkd:
$ cat /etc/systemd/network/ap1.network
[Match]
Name=ap1
[Network]
Bridge=br0
[Bridge]
HairPin=true
Solution was found here: https://bbs.archlinux.org/viewtopic.php?id=240343