Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78271
b: refs/heads/master
c: 7201883
h: refs/heads/master
i:
  78269: 7844a7b
  78267: 55c5b66
  78263: 8298098
  78255: f4ef118
  78239: 6a27dfc
  78207: 794646b
v: v3
  • Loading branch information
Ilpo Järvinen authored and David S. Miller committed Jan 28, 2008
1 parent d3d57ac commit eed44cd
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ea60658cde9f4df7d05b95c81a72a95ad07f0701
refs/heads/master: 7201883599ac8bff76300117155e299b1a54092f
26 changes: 12 additions & 14 deletions trunk/net/ipv4/tcp_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -2765,8 +2765,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p,
u32 now = tcp_time_stamp;
int fully_acked = 1;
int flag = 0;
int prior_packets = tp->packets_out;
u32 cnt = 0;
u32 pkts_acked = 0;
u32 reord = tp->packets_out;
s32 seq_rtt = -1;
s32 ca_seq_rtt = -1;
Expand All @@ -2775,7 +2774,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p,
while ((skb = tcp_write_queue_head(sk)) && skb != tcp_send_head(sk)) {
struct tcp_skb_cb *scb = TCP_SKB_CB(skb);
u32 end_seq;
u32 packets_acked;
u32 acked_pcount;
u8 sacked = scb->sacked;

/* Determine how many packets and what bytes were acked, tso and else */
Expand All @@ -2784,14 +2783,14 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p,
!after(tp->snd_una, scb->seq))
break;

packets_acked = tcp_tso_acked(sk, skb);
if (!packets_acked)
acked_pcount = tcp_tso_acked(sk, skb);
if (!acked_pcount)
break;

fully_acked = 0;
end_seq = tp->snd_una;
} else {
packets_acked = tcp_skb_pcount(skb);
acked_pcount = tcp_skb_pcount(skb);
end_seq = scb->end_seq;
}

Expand All @@ -2803,12 +2802,12 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p,

if (sacked & TCPCB_RETRANS) {
if (sacked & TCPCB_SACKED_RETRANS)
tp->retrans_out -= packets_acked;
tp->retrans_out -= acked_pcount;
flag |= FLAG_RETRANS_DATA_ACKED;
ca_seq_rtt = -1;
seq_rtt = -1;
if ((flag & FLAG_DATA_ACKED) ||
(packets_acked > 1))
(acked_pcount > 1))
flag |= FLAG_NONHEAD_RETRANS_ACKED;
} else {
ca_seq_rtt = now - scb->when;
Expand All @@ -2817,20 +2816,20 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p,
seq_rtt = ca_seq_rtt;
}
if (!(sacked & TCPCB_SACKED_ACKED))
reord = min(cnt, reord);
reord = min(pkts_acked, reord);
}

if (sacked & TCPCB_SACKED_ACKED)
tp->sacked_out -= packets_acked;
tp->sacked_out -= acked_pcount;
if (sacked & TCPCB_LOST)
tp->lost_out -= packets_acked;
tp->lost_out -= acked_pcount;

if (unlikely((sacked & TCPCB_URG) && tp->urg_mode &&
!before(end_seq, tp->snd_up)))
tp->urg_mode = 0;

tp->packets_out -= packets_acked;
cnt += packets_acked;
tp->packets_out -= acked_pcount;
pkts_acked += acked_pcount;

/* Initial outgoing SYN's get put onto the write_queue
* just like anything else we transmit. It is not
Expand All @@ -2855,7 +2854,6 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p,
}

if (flag & FLAG_ACKED) {
u32 pkts_acked = prior_packets - tp->packets_out;
const struct tcp_congestion_ops *ca_ops
= inet_csk(sk)->icsk_ca_ops;

Expand Down

0 comments on commit eed44cd

Please sign in to comment.