diff --git a/mesh/net.c b/mesh/net.c
index 9a56d2e..bfb9c44 100644
--- a/mesh/net.c
+++ b/mesh/net.c
/* If first beacon seen, accept without judgement */
if (net->iv_upd_state == IV_UPD_INIT) {
if (ivu) {
+ /* Ignore beacons with IVU if IV already updated */
+ if (iv_index == net->iv_index && !net->iv_update)
+ return;
+
/* Other devices will be accepting old or new iv_index,
* but we don't know how far through update they are.
* Starting permissive state will allow us maximum
return;
}
+ /* Ignore beacons with IVU if IV already updated */
+ if (iv_index == net->iv_index)
+ return;
+
if (!net->iv_update) {
l_info("iv_upd_state = IV_UPD_UPDATING");
net->iv_upd_state = IV_UPD_UPDATING;