We discovered the problem: when vlan's parent interface is changed, vlans still use old link layer address since vlan_lladdr_fn is not executed.
This patch adds the check and enqueues lladdr_task if L2 address is different.
This is how to reproduce:
# ifconfig vlan1 create vlandev mce3 vlan 1 # ifconfig vlan1 inet 10.0.0.1/24 # ifconfig vlan1 inet6 fc00::1 # (ndp -an; arp -an) | grep vlan1 # ifconfig vlan1 -vlandev # ifconfig vlan1 vlandev ix1 vlan1 # (ndp -an; arp -an) | grep vlan1