• Tuong Lien's avatar
    tipc: adapt link failover for new Gap-ACK algorithm · 58ee86b8
    Tuong Lien authored
    In commit 0ae955e2656d ("tipc: improve TIPC throughput by Gap ACK
    blocks"), we enhance the link transmq by releasing as many packets as
    possible with the multi-ACKs from peer node. This also means the queue
    is now non-linear and the peer link deferdq becomes vital.
    
    Whereas, in the case of link failover, all messages in the link transmq
    need to be transmitted as tunnel messages in such a way that message
    sequentiality and cardinality per sender is preserved. This requires us
    to maintain the link deferdq somehow, so that when the tunnel messages
    arrive, the inner user messages along with the ones in the deferdq will
    be delivered to upper layer correctly.
    
    The commit accomplishes this by defining a new queue in the TIPC link
    structure to hold the old link deferdq when link failover happens and
    process it upon receipt of tunnel messages.
    
    Also, in the case of link syncing, the link deferdq will not be purged
    to avoid unnecessary retransmissions that in the worst case will fail
    because the packets might have been freed on the sending side.
    Acked-by: default avatarYing Xue <ying.xue@windriver.com>
    Acked-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarTuong Lien <tuong.t.lien@dektech.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    58ee86b8
link.c 70.3 KB