Commit bb25c3855a12cc58e33cd7ee9b69943790fe35f7
Committed by
David S. Miller
1 parent
1c8e77fb36
tipc: remove joining group member from congested list
When we receive a JOIN message from a peer member, the message may contain an advertised window value ADV_IDLE that permits removing the member in question from the tipc_group::congested list. However, since the removal has been made conditional on that the advertised window is *not* ADV_IDLE, we miss this case. This has the effect that a sender sometimes may enter a state of permanent, false, broadcast congestion. We fix this by unconditinally removing the member from the congested list before calling tipc_member_update(), which might potentially sort it into the list again. Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 2 additions and 4 deletions Side-by-side Diff
net/tipc/group.c
... | ... | @@ -689,10 +689,8 @@ |
689 | 689 | msg_set_grp_bc_seqno(ehdr, m->bc_syncpt); |
690 | 690 | __skb_queue_tail(inputq, m->event_msg); |
691 | 691 | } |
692 | - if (m->window < ADV_IDLE) | |
693 | - tipc_group_update_member(m, 0); | |
694 | - else | |
695 | - list_del_init(&m->congested); | |
692 | + list_del_init(&m->congested); | |
693 | + tipc_group_update_member(m, 0); | |
696 | 694 | return; |
697 | 695 | case GRP_LEAVE_MSG: |
698 | 696 | if (!m) |