提交 539d243f 编写于 作者: I Ilpo Järvinen 提交者: David S. Miller

[TCP]: Access to highest_sack obsoletes forward_cnt_hint

In addition, added a reference about the purpose of the loop.
Signed-off-by: NIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 9bff40fd
...@@ -346,7 +346,6 @@ struct tcp_sock { ...@@ -346,7 +346,6 @@ struct tcp_sock {
int fastpath_cnt_hint; int fastpath_cnt_hint;
int lost_cnt_hint; int lost_cnt_hint;
int retransmit_cnt_hint; int retransmit_cnt_hint;
int forward_cnt_hint;
u16 advmss; /* Advertised MSS */ u16 advmss; /* Advertised MSS */
u16 prior_ssthresh; /* ssthresh saved at recovery start */ u16 prior_ssthresh; /* ssthresh saved at recovery start */
......
...@@ -1945,33 +1945,28 @@ void tcp_xmit_retransmit_queue(struct sock *sk) ...@@ -1945,33 +1945,28 @@ void tcp_xmit_retransmit_queue(struct sock *sk)
* and retransmission... Both ways have their merits... * and retransmission... Both ways have their merits...
* *
* For now we do not retransmit anything, while we have some new * For now we do not retransmit anything, while we have some new
* segments to send. * segments to send. In the other cases, follow rule 3 for
* NextSeg() specified in RFC3517.
*/ */
if (tcp_may_send_now(sk)) if (tcp_may_send_now(sk))
return; return;
if (tp->forward_skb_hint) { /* If nothing is SACKed, highest_sack in the loop won't be valid */
if (!tp->sacked_out)
return;
if (tp->forward_skb_hint)
skb = tp->forward_skb_hint; skb = tp->forward_skb_hint;
packet_cnt = tp->forward_cnt_hint; else
} else{
skb = tcp_write_queue_head(sk); skb = tcp_write_queue_head(sk);
packet_cnt = 0;
}
tcp_for_write_queue_from(skb, sk) { tcp_for_write_queue_from(skb, sk) {
if (skb == tcp_send_head(sk)) if (skb == tcp_send_head(sk))
break; break;
tp->forward_cnt_hint = packet_cnt;
tp->forward_skb_hint = skb; tp->forward_skb_hint = skb;
/* Similar to the retransmit loop above we if (after(TCP_SKB_CB(skb)->seq, tp->highest_sack))
* can pretend that the retransmitted SKB
* we send out here will be composed of one
* real MSS sized packet because tcp_retransmit_skb()
* will fragment it if necessary.
*/
if (++packet_cnt > tp->fackets_out)
break; break;
if (tcp_packets_in_flight(tp) >= tp->snd_cwnd) if (tcp_packets_in_flight(tp) >= tp->snd_cwnd)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册