net: hsr: Fix node prune function for forget time expiry
authorAaron Kramer <a-kramer@ti.com>
Fri, 5 Apr 2019 17:31:36 +0000 (13:31 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 7 Apr 2019 01:32:21 +0000 (18:32 -0700)
HSR should forget nodes after configured node forget time expiry based
on HSR_NODE_FORGET_TIME. As part of hsr_prune_nodes(), code checks to
see if entries are to be flushed out if not heard for longer than forget
time. But currently hsr_prune_nodes() is called only once during device
creation. Restart the timer at the end of hsr_prune_nodes() so that
hsr_prune_nodes() gets called periodically and forgotten entries are
removed from node table.

Signed-off-by: Aaron Kramer <a-kramer@ti.com>
Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/hsr/hsr_framereg.c

index a3cc30ac8a5a24690115510e2cf641743ca0493f..9fa9abd83018a73e54b238343eb00fa00dd6d53b 100644 (file)
@@ -405,6 +405,10 @@ void hsr_prune_nodes(struct timer_list *t)
                }
        }
        rcu_read_unlock();
+
+       /* Restart timer */
+       mod_timer(&hsr->prune_timer,
+                 jiffies + msecs_to_jiffies(PRUNE_PERIOD));
 }
 
 void *hsr_get_next_node(struct hsr_priv *hsr, void *_pos,