• Jon Paul Maloy's avatar
    tipc: correct settings of broadcast link state · 9a650838
    Jon Paul Maloy authored
    Since commit 52666986 ("tipc: let broadcast packet
    reception use new link receive function") the broadcast send
    link state was meant to always be set to LINK_ESTABLISHED, since
    we don't need this link to follow the regular link FSM rules. It
    was also the intention that this state anyway shouldn't impact
    the run-time working state of the link, since the latter in
    reality is controlled by the number of registered peers.
    
    We have now discovered that this assumption is not quite correct.
    If the broadcast link is reset because of too many retransmissions,
    its state will inadvertently go to LINK_RESETTING, and never go
    back to LINK_ESTABLISHED, because the LINK_FAILURE event was not
    anticipated. This will work well once, but if it happens a second
    time, the reset on a link in LINK_RESETTING has has no effect, and
    neither the broadcast link nor the unicast links will go down as
    they should.
    
    Furthermore, it is confusing that the management tool shows that
    this link is in UP state when that obviously isn't the case.
    
    We now ensure that this state strictly follows the true working
    state of the link. The state is set to LINK_ESTABLISHED when
    the number of peers is non-zero, and to LINK_RESET otherwise.
    Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9a650838
link.c 52.5 KB