• Tuong Lien's avatar
    tipc: fix false detection of retransmit failures · 71204231
    Tuong Lien authored
    This commit eliminates the use of the link 'stale_limit' & 'prev_from'
    (besides the already removed - 'stale_cnt') variables in the detection
    of repeated retransmit failures as there is no proper way to initialize
    them to avoid a false detection, i.e. it is not really a retransmission
    failure but due to a garbage values in the variables.
    
    Instead, a jiffies variable will be added to individual skbs (like the
    way we restrict the skb retransmissions) in order to mark the first skb
    retransmit time. Later on, at the next retransmissions, the timestamp
    will be checked to see if the skb in the link transmq is "too stale",
    that is, the link tolerance time has passed, so that a link reset will
    be ordered. Note, just checking on the first skb in the queue is fine
    enough since it must be the oldest one.
    A counter is also added to keep track the actual skb retransmissions'
    number for later checking when the failure happens.
    
    The downside of this approach is that the skb->cb[] buffer is about to
    be exhausted, however it is always able to allocate another memory area
    and keep a reference to it when needed.
    
    Fixes: 77cf8edb ("tipc: simplify stale link failure criteria")
    Reported-by: default avatarHoang Le <hoang.h.le@dektech.com.au>
    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>
    71204231
msg.h 25.8 KB