Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78207
b: refs/heads/master
c: a302002
h: refs/heads/master
i:
  78205: 935fb7d
  78203: 724c8ea
  78199: 450fb8d
  78191: c144635
  78175: 2b75368
  78143: cc9397d
  78079: c5974ca
v: v3
  • Loading branch information
Gerrit Renker authored and David S. Miller committed Jan 28, 2008
1 parent dbe5e9f commit 794646b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 36 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: 83399361c30f2ffae20ee348ba9ada9a856d499a
refs/heads/master: a302002516a094015e5d004b8d939a8a34559c82
46 changes: 15 additions & 31 deletions trunk/net/dccp/ccids/ccid2.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,8 @@ static void ccid2_hc_tx_rto_expire(unsigned long data)
hctx->ccid2hctx_pipe = 0;

/* clear state about stuff we sent */
hctx->ccid2hctx_seqt = hctx->ccid2hctx_seqh;
hctx->ccid2hctx_ssacks = 0;
hctx->ccid2hctx_acks = 0;
hctx->ccid2hctx_seqt = hctx->ccid2hctx_seqh;
hctx->ccid2hctx_packets_acked = 0;

/* clear ack ratio state. */
hctx->ccid2hctx_rpseq = 0;
Expand Down Expand Up @@ -406,31 +405,15 @@ static inline void ccid2_new_ack(struct sock *sk,
{
struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);

/* slow start */
if (hctx->ccid2hctx_cwnd < hctx->ccid2hctx_ssthresh) {
hctx->ccid2hctx_acks = 0;

/* We can increase cwnd at most maxincr [ack_ratio/2] */
if (*maxincr) {
/* increase every 2 acks */
hctx->ccid2hctx_ssacks++;
if (hctx->ccid2hctx_ssacks == 2) {
hctx->ccid2hctx_cwnd++;
hctx->ccid2hctx_ssacks = 0;
*maxincr = *maxincr - 1;
}
} else {
/* increased cwnd enough for this single ack */
hctx->ccid2hctx_ssacks = 0;
}
} else {
hctx->ccid2hctx_ssacks = 0;
hctx->ccid2hctx_acks++;

if (hctx->ccid2hctx_acks >= hctx->ccid2hctx_cwnd) {
hctx->ccid2hctx_cwnd++;
hctx->ccid2hctx_acks = 0;
if (*maxincr > 0 && ++hctx->ccid2hctx_packets_acked == 2) {
hctx->ccid2hctx_cwnd += 1;
*maxincr -= 1;
hctx->ccid2hctx_packets_acked = 0;
}
} else if (++hctx->ccid2hctx_packets_acked >= hctx->ccid2hctx_cwnd) {
hctx->ccid2hctx_cwnd += 1;
hctx->ccid2hctx_packets_acked = 0;
}

/* update RTO */
Expand Down Expand Up @@ -596,12 +579,13 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
}
}

/* If in slow-start, cwnd can increase at most Ack Ratio / 2 packets for
* this single ack. I round up.
* -sorbo.
/*
* In slow-start, cwnd can increase up to a maximum of Ack Ratio/2
* packets per acknowledgement. Rounding up avoids that cwnd is not
* advanced when Ack Ratio is 1 and gives a slight edge otherwise.
*/
maxincr = dp->dccps_l_ack_ratio >> 1;
maxincr++;
if (hctx->ccid2hctx_cwnd < hctx->ccid2hctx_ssthresh)
maxincr = DIV_ROUND_UP(dp->dccps_l_ack_ratio, 2);

/* go through all ack vectors */
while ((offset = ccid2_ackvector(sk, skb, offset,
Expand Down
6 changes: 2 additions & 4 deletions trunk/net/dccp/ccids/ccid2.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ struct ccid2_seq {
/** struct ccid2_hc_tx_sock - CCID2 TX half connection
*
* @ccid2hctx_{cwnd,ssthresh,pipe}: as per RFC 4341, section 5
* @ccid2hctx_ssacks - ACKs recv in slow start
* @ccid2hctx_acks - ACKS recv in AI phase
* @ccid2hctx_packets_acked - Ack counter for deriving cwnd growth (RFC 3465)
* @ccid2hctx_lastrtt -time RTT was last measured
* @ccid2hctx_rpseq - last consecutive seqno
* @ccid2hctx_rpdupack - dupacks since rpseq
Expand All @@ -53,8 +52,7 @@ struct ccid2_hc_tx_sock {
u32 ccid2hctx_cwnd;
u32 ccid2hctx_ssthresh;
u32 ccid2hctx_pipe;
int ccid2hctx_ssacks;
int ccid2hctx_acks;
u32 ccid2hctx_packets_acked;
struct ccid2_seq *ccid2hctx_seqbuf[CCID2_SEQBUF_MAX];
int ccid2hctx_seqbufc;
struct ccid2_seq *ccid2hctx_seqh;
Expand Down

0 comments on commit 794646b

Please sign in to comment.