From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
To: dccp@vger.kernel.org
Subject: Re: [PATCH 6/6] DCCP: Implement faster restart
Date: Thu, 30 Aug 2007 08:35:06 +0000 [thread overview]
Message-ID: <200708300935.06414@strip-the-willow> (raw)
In-Reply-To: <200708291138.39630.ian.mcdonald@jandi.co.nz>
| static inline u64 rfc3390_initial_rate(struct sock *sk)
| {
| const struct ccid3_hc_tx_sock *hctx = ccid3_hc_tx_sk(sk);
| - const __u32 w_init = min_t(__u32, 4 * hctx->ccid3hctx_s,
| + __u32 w_init = min_t(__u32, 4 * hctx->ccid3hctx_s,
| max_t(__u32, 2 * hctx->ccid3hctx_s, 4380));
|
| + if (ccid3_hc_tx_faster_restart_on(ccid3_hc_tx_sk(sk)))
| + w_init *= 2;
| +
The problem with this is that now you will get the quadrupled rate also at startup
since this function is called at the begin of a connection, not only after an idle
period, i.e. your connections will start with an initial window of up to 8 * s instead
of the 4 * s.
| +/**
| * ccid3_hc_tx_update_x - Update allowed sending rate X
| * @stamp: most recent time if available - can be left NULL.
| * This function tracks draft rfc3448bis, check there for latest details.
| @@ -130,13 +156,13 @@ static u32 ccid3_hc_tx_idle_rtt(struct ccid3_hc_tx_sock
| *hctx, ktime_t now)
| * throughout the code. Only X_calc is unscaled (in bytes/second).
| *
| */
| -static void ccid3_hc_tx_update_x(struct sock *sk, ktime_t *stamp)
| -
| +static void ccid3_hc_tx_update_x(struct sock *sk, ktime_t *stamp, bool
| nofeedback)
Similar comment - since the code is only executed within the nofeedback timer,
it seems much simpler to put this directly into tx_packet_recv, like
/* perform step (4) of draft rfc3448bis, section 4.3 */
if (hctx->ccid3hctx_p > 0) {
hctx->ccid3hctx_x_calc = tfrc_calc_x(hctx->ccid3hctx_s,
hctx->ccid3hctx_rtt,
hctx->ccid3hctx_p);
if (ccid3_hc_tx_faster_restart_on(hctx)) {
x_fast_max = hctx->ccid3hctx_x_active_recv;
/* ... rest of your code from below ... */
}
}
ccid3_hc_tx_update_x(sk, &now);
| - if (hctx->ccid3hctx_p > 0) {
| + if (ccid3_hc_tx_faster_restart_on(hctx) && !nofeedback)
| + if (hctx->ccid3hctx_p > 0) {
| + x_fast_max = hctx->ccid3hctx_x_active_recv;
| + /* FIXME We should interpolate here but this is under
| + * discussion and doesn't affect my research IAM */
| + if (!ccid3_hc_tx_fr_loss(hctx) &&
| + (hctx->ccid3hctx_x_recv > x_fast_max)) {
| + x_fast_max = hctx->ccid3hctx_x_recv;
| + hctx->ccid3hctx_x_active_recv = x_fast_max;
| + hctx->ccid3hctx_t_active_recv = now;
| + } else if (ccid3_hc_tx_fr_loss(hctx) &&
| + (hctx->ccid3hctx_x_recv < x_fast_max)) {
| + x_fast_max = hctx->ccid3hctx_x_recv / 2;
| + hctx->ccid3hctx_x_active_recv = x_fast_max;
| + hctx->ccid3hctx_t_active_recv = now;
| + }
| + if (min_rate < x_fast_max)
| + min_rate = min(2*min_rate, x_fast_max);
| + /* We double again for faster rate */
| + /* FIXME - draft refers to X_recv_set but base
| + * implementation doesn't use this so we stay
| + * consistent with this IAM */
| + }
|
next prev parent reply other threads:[~2007-08-30 8:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-28 23:38 [PATCH 6/6] DCCP: Implement faster restart Ian McDonald
2007-08-30 8:35 ` Gerrit Renker [this message]
2007-09-04 3:06 ` Ian McDonald
2007-09-06 3:08 ` Ian McDonald
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200708300935.06414@strip-the-willow \
--to=gerrit@erg.abdn.ac.uk \
--cc=dccp@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox