Commit 7b6f087f authored by Ying Xue's avatar Ying Xue Committed by David S. Miller

tipc: remove retransmission queue

TIPC retransmission queue is intended to record which messages
should be retransmitted when bearer is not congested. However,
as the retransmission queue becomes useless with the removal of
bearer congestion mechanism, it should be removed.
Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
Reviewed-by: default avatarJon Maloy <jon.maloy@ericsson.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8965d250
...@@ -458,8 +458,6 @@ void tipc_link_reset(struct tipc_link *l_ptr) ...@@ -458,8 +458,6 @@ void tipc_link_reset(struct tipc_link *l_ptr)
skb_queue_splice_init(&l_ptr->waiting_sks, &owner->waiting_sks); skb_queue_splice_init(&l_ptr->waiting_sks, &owner->waiting_sks);
owner->action_flags |= TIPC_WAKEUP_USERS; owner->action_flags |= TIPC_WAKEUP_USERS;
} }
l_ptr->retransm_queue_head = 0;
l_ptr->retransm_queue_size = 0;
l_ptr->last_out = NULL; l_ptr->last_out = NULL;
l_ptr->first_out = NULL; l_ptr->first_out = NULL;
l_ptr->next_out = NULL; l_ptr->next_out = NULL;
...@@ -870,38 +868,9 @@ static void tipc_link_sync_rcv(struct tipc_node *n, struct sk_buff *buf) ...@@ -870,38 +868,9 @@ static void tipc_link_sync_rcv(struct tipc_node *n, struct sk_buff *buf)
*/ */
static u32 tipc_link_push_packet(struct tipc_link *l_ptr) static u32 tipc_link_push_packet(struct tipc_link *l_ptr)
{ {
struct sk_buff *buf = l_ptr->first_out; struct sk_buff *buf = l_ptr->next_out;
u32 r_q_size = l_ptr->retransm_queue_size;
u32 r_q_head = l_ptr->retransm_queue_head;
/* Step to position where retransmission failed, if any, */
/* consider that buffers may have been released in meantime */
if (r_q_size && buf) {
u32 last = lesser(mod(r_q_head + r_q_size),
link_last_sent(l_ptr));
u32 first = buf_seqno(buf);
while (buf && less(first, r_q_head)) {
first = mod(first + 1);
buf = buf->next;
}
l_ptr->retransm_queue_head = r_q_head = first;
l_ptr->retransm_queue_size = r_q_size = mod(last - first);
}
/* Continue retransmission now, if there is anything: */
if (r_q_size && buf) {
msg_set_ack(buf_msg(buf), mod(l_ptr->next_in_no - 1));
msg_set_bcast_ack(buf_msg(buf), l_ptr->owner->bclink.last_in);
tipc_bearer_send(l_ptr->bearer_id, buf, &l_ptr->media_addr);
l_ptr->retransm_queue_head = mod(++r_q_head);
l_ptr->retransm_queue_size = --r_q_size;
l_ptr->stats.retransmitted++;
return 0;
}
/* Send one deferred data message, if send window not full: */ /* Send one deferred data message, if send window not full: */
buf = l_ptr->next_out;
if (buf) { if (buf) {
struct tipc_msg *msg = buf_msg(buf); struct tipc_msg *msg = buf_msg(buf);
u32 next = msg_seqno(msg); u32 next = msg_seqno(msg);
...@@ -1025,8 +994,6 @@ void tipc_link_retransmit(struct tipc_link *l_ptr, struct sk_buff *buf, ...@@ -1025,8 +994,6 @@ void tipc_link_retransmit(struct tipc_link *l_ptr, struct sk_buff *buf,
retransmits--; retransmits--;
l_ptr->stats.retransmitted++; l_ptr->stats.retransmitted++;
} }
l_ptr->retransm_queue_head = l_ptr->retransm_queue_size = 0;
} }
/** /**
......
...@@ -130,8 +130,6 @@ struct tipc_stats { ...@@ -130,8 +130,6 @@ struct tipc_stats {
* @oldest_deferred_in: ptr to first inbound message in queue * @oldest_deferred_in: ptr to first inbound message in queue
* @newest_deferred_in: ptr to last inbound message in queue * @newest_deferred_in: ptr to last inbound message in queue
* @unacked_window: # of inbound messages rx'd without ack'ing back to peer * @unacked_window: # of inbound messages rx'd without ack'ing back to peer
* @retransm_queue_size: number of messages to retransmit
* @retransm_queue_head: sequence number of first message to retransmit
* @next_out: ptr to first unsent outbound message in queue * @next_out: ptr to first unsent outbound message in queue
* @waiting_sks: linked list of sockets waiting for link congestion to abate * @waiting_sks: linked list of sockets waiting for link congestion to abate
* @long_msg_seq_no: next identifier to use for outbound fragmented messages * @long_msg_seq_no: next identifier to use for outbound fragmented messages
...@@ -190,8 +188,6 @@ struct tipc_link { ...@@ -190,8 +188,6 @@ struct tipc_link {
u32 unacked_window; u32 unacked_window;
/* Congestion handling */ /* Congestion handling */
u32 retransm_queue_size;
u32 retransm_queue_head;
struct sk_buff *next_out; struct sk_buff *next_out;
struct sk_buff_head waiting_sks; struct sk_buff_head waiting_sks;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment