diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2006-11-27 09:25:10 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-03 00:30:37 -0500 |
commit | 91cf5a17257e1d2ef936fbf0223c3436ca583af9 (patch) | |
tree | eb7386ab5729d299bda6534c783378eb3fd73c4c /net/dccp/ccids/ccid3.c | |
parent | f5c2d6367b04fd5ba98a5f9846b5fb870423968a (diff) |
[DCCP] ccid3: Fix calculation of t_ipi time of scheduled transmission
Problem:
Diffstat (limited to 'net/dccp/ccids/ccid3.c')
-rw-r--r-- | net/dccp/ccids/ccid3.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c index df88c54b2ec5..fb1a5e89c023 100644 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c | |||
@@ -304,11 +304,19 @@ static int ccid3_hc_tx_send_packet(struct sock *sk, | |||
304 | break; | 304 | break; |
305 | case TFRC_SSTATE_NO_FBACK: | 305 | case TFRC_SSTATE_NO_FBACK: |
306 | case TFRC_SSTATE_FBACK: | 306 | case TFRC_SSTATE_FBACK: |
307 | delay = (timeval_delta(&now, &hctx->ccid3hctx_t_nom) - | 307 | delay = timeval_delta(&hctx->ccid3hctx_t_nom, &now); |
308 | hctx->ccid3hctx_delta); | 308 | /* |
309 | delay /= -1000; | 309 | * Scheduling of packet transmissions [RFC 3448, 4.6] |
310 | /* divide by -1000 is to convert to ms and get sign right */ | 310 | * |
311 | rc = delay > 0 ? delay : 0; | 311 | * if (t_now > t_nom - delta) |
312 | * // send the packet now | ||
313 | * else | ||
314 | * // send the packet in (t_nom - t_now) milliseconds. | ||
315 | */ | ||
316 | if (delay < hctx->ccid3hctx_delta) | ||
317 | rc = 0; | ||
318 | else | ||
319 | rc = delay/1000L; | ||
312 | break; | 320 | break; |
313 | case TFRC_SSTATE_TERM: | 321 | case TFRC_SSTATE_TERM: |
314 | DCCP_BUG("Illegal %s state TERM, sk=%p", dccp_role(sk), sk); | 322 | DCCP_BUG("Illegal %s state TERM, sk=%p", dccp_role(sk), sk); |