summaryrefslogtreecommitdiffstats
path: root/net/hsr/hsr_framereg.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-06-03 13:53:20 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-06-03 13:53:20 +0200
commit888dc273ea4e7ca332a6f73d10dfc8f2b212c803 (patch)
tree0c2154dfa92ca6ee761c358e58a3e35831558bb5 /net/hsr/hsr_framereg.c
parenttty: cpm_uart: drop unused iflag macro (diff)
parentLinux 5.2-rc3 (diff)
downloadlinux-888dc273ea4e7ca332a6f73d10dfc8f2b212c803.tar.xz
linux-888dc273ea4e7ca332a6f73d10dfc8f2b212c803.zip
Merge 5.2-rc3 into tty-next
We want the tty/serial fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/hsr/hsr_framereg.c')
-rw-r--r--net/hsr/hsr_framereg.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c
index 9fa9abd83018..2d7a19750436 100644
--- a/net/hsr/hsr_framereg.c
+++ b/net/hsr/hsr_framereg.c
@@ -365,6 +365,14 @@ void hsr_prune_nodes(struct timer_list *t)
rcu_read_lock();
list_for_each_entry_rcu(node, &hsr->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_addr_is_self(hsr, node->macaddress_A))
+ continue;
+
/* Shorthand */
time_a = node->time_in[HSR_PT_SLAVE_A];
time_b = node->time_in[HSR_PT_SLAVE_B];