tipc: reduce transmission rate of reset messages when link is down
[cascardo/linux.git] / net / tipc / link.c
index 8b98faf..238b125 100644 (file)
@@ -140,6 +140,7 @@ struct tipc_link {
        char if_name[TIPC_MAX_IF_NAME];
        u32 priority;
        char net_plane;
+       u16 rst_cnt;
 
        /* Failover/synch */
        u16 drop_point;
@@ -699,8 +700,6 @@ static void link_profile_stats(struct tipc_link *l)
                l->stats.msg_length_profile[6]++;
 }
 
-/* tipc_link_timeout - perform periodic task as instructed from node timeout
- */
 /* tipc_link_timeout - perform periodic task as instructed from node timeout
  */
 int tipc_link_timeout(struct tipc_link *l, struct sk_buff_head *xmitq)
@@ -730,7 +729,8 @@ int tipc_link_timeout(struct tipc_link *l, struct sk_buff_head *xmitq)
                l->silent_intv_cnt++;
                break;
        case LINK_RESET:
-               xmit = true;
+               xmit = l->rst_cnt++ <= 4;
+               xmit |= !(l->rst_cnt % 16);
                mtyp = RESET_MSG;
                break;
        case LINK_ESTABLISHING:
@@ -833,6 +833,7 @@ void tipc_link_reset(struct tipc_link *l)
        l->rcv_nxt = 1;
        l->acked = 0;
        l->silent_intv_cnt = 0;
+       l->rst_cnt = 0;
        l->stats.recv_info = 0;
        l->stale_count = 0;
        l->bc_peer_is_up = false;