|
|
@@ -391,6 +391,14 @@ void hsr_prp_prune_nodes(struct timer_list *t)
|
|
|
|
|
|
rcu_read_lock();
|
|
|
list_for_each_entry_rcu(node, &priv->node_db, mac_list) {
|
|
|
+ /* Don't prune own node. Neither time_in[HSR_PT_SLAVE_A]
|
|
|
+ * nor time_in[HSR_PT_SLAVE_B], will ever be updated for
|
|
|
+ * the master port. Thus the master node will be repeatedly
|
|
|
+ * pruned leading to packet loss.
|
|
|
+ */
|
|
|
+ if (hsr_prp_addr_is_self(priv, node->macaddress_A))
|
|
|
+ continue;
|
|
|
+
|
|
|
/* Shorthand */
|
|
|
time_a = node->time_in[HSR_PRP_PT_SLAVE_A];
|
|
|
time_b = node->time_in[HSR_PRP_PT_SLAVE_B];
|