ip -6 nei commands is showing available neighbors only after pinging them. Is there a way to populate the IPv6 neighbor table once the link is up and not only after traffic is being sent?
No. Discovering neighbours requires traffic.
IPv6 introduced something like a broadcast ping, which can discover the IPv6 addresses of neighbours.[*]
This may be useful, if your hosts allow it. I found reports of Windows not responding to multicast ping, including on Windows 7 and 8.1. Even if it did, Windows Firewall blocks ping unless you have set the network type to "Private" ("Home" / "Work").
Discover link local addresses:
ping -c1 ff02::1%br-lan
or, a different way to write the same command:
ping -c1 -I br-lan ff02::1
Discover global addresses:
ping -c1 -I <my-global-ipv6-address> ff02::1
For readers who are not familiar with openwrt,
br-lan is a name commonly used for the lan network interface.
[*] These IPv6 multicast pings cannot be sent from off-link. This means they avoid the problem that IPv4 broadcast pings used to have. At one point it was possible to send IPv4 broadcast pings from off-net. This massively amplified traffic. So it could be used as an attack, by spoofing the ping source address of the attackers target. On current Linux, IPv4 broadcast pings are now ignored by default.