[DCCP] ccid3: Simplify control flow in the calculation of t_ipi
This patch performs a simplifying (performance) optimisation: In each call of the inline function ccid3_calc_new_t_ipi(), the state is tested against TFRC_SSTATE_NO_FBACK. This is expensive when the function is called very often. A simpler solution, implemented by this patch, is to adapt the control flow. Background:
This commit is contained in:
parent
90feeb951f
commit
f5c2d6367b
1 changed files with 3 additions and 7 deletions
|
@ -103,13 +103,7 @@ static void ccid3_hc_tx_set_state(struct sock *sk,
|
||||||
/* Calculate new t_ipi (inter packet interval) by t_ipi = s / X_inst */
|
/* Calculate new t_ipi (inter packet interval) by t_ipi = s / X_inst */
|
||||||
static inline void ccid3_calc_new_t_ipi(struct ccid3_hc_tx_sock *hctx)
|
static inline void ccid3_calc_new_t_ipi(struct ccid3_hc_tx_sock *hctx)
|
||||||
{
|
{
|
||||||
/*
|
hctx->ccid3hctx_t_ipi = usecs_div(hctx->ccid3hctx_s, hctx->ccid3hctx_x);
|
||||||
* If no feedback spec says t_ipi is 1 second (set elsewhere and then
|
|
||||||
* doubles after every no feedback timer (separate function)
|
|
||||||
*/
|
|
||||||
if (hctx->ccid3hctx_state != TFRC_SSTATE_NO_FBACK)
|
|
||||||
hctx->ccid3hctx_t_ipi = usecs_div(hctx->ccid3hctx_s,
|
|
||||||
hctx->ccid3hctx_x);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate new delta by delta = min(t_ipi / 2, t_gran / 2) */
|
/* Calculate new delta by delta = min(t_ipi / 2, t_gran / 2) */
|
||||||
|
@ -395,6 +389,8 @@ static void ccid3_hc_tx_packet_sent(struct sock *sk, int more, int len)
|
||||||
"as a data packet", dccp_role(sk));
|
"as a data packet", dccp_role(sk));
|
||||||
return;
|
return;
|
||||||
case TFRC_SSTATE_NO_FBACK:
|
case TFRC_SSTATE_NO_FBACK:
|
||||||
|
/* t_nom, t_ipi, delta do not change until feedback arrives */
|
||||||
|
return;
|
||||||
case TFRC_SSTATE_FBACK:
|
case TFRC_SSTATE_FBACK:
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
timeval_sub_usecs(&hctx->ccid3hctx_t_nom,
|
timeval_sub_usecs(&hctx->ccid3hctx_t_nom,
|
||||||
|
|
Loading…
Add table
Reference in a new issue