Lines Matching +full:static +full:- +full:beta

1 // SPDX-License-Identifier: GPL-2.0
7 * https://tools.ietf.org/html/rfc1122#section-4.2.3.1
8 * http://ccr.sigcomm.org/archive/1995/jan95/ccr-9501-partridge87.pdf
12 #include "ar-internal.h"
18 static u32 rxrpc_rto_min_us(struct rxrpc_peer *peer) in rxrpc_rto_min_us()
23 static u32 __rxrpc_set_rto(const struct rxrpc_peer *peer) in __rxrpc_set_rto()
25 return usecs_to_jiffies((peer->srtt_us >> 3) + peer->rttvar_us); in __rxrpc_set_rto()
28 static u32 rxrpc_bound_rto(u32 rto) in rxrpc_bound_rto()
41 * it up into three procedures. -- erics
43 static void rxrpc_rtt_estimator(struct rxrpc_peer *peer, long sample_rtt_us) in rxrpc_rtt_estimator()
46 u32 srtt = peer->srtt_us; in rxrpc_rtt_estimator()
65 m -= (srtt >> 3); /* m is now error in rtt est */ in rxrpc_rtt_estimator()
68 m = -m; /* m is now abs(error) */ in rxrpc_rtt_estimator()
69 m -= (peer->mdev_us >> 2); /* similar update on mdev */ in rxrpc_rtt_estimator()
73 * for mdev in this case (alpha*beta). in rxrpc_rtt_estimator()
81 m -= (peer->mdev_us >> 2); /* similar update on mdev */ in rxrpc_rtt_estimator()
84 peer->mdev_us += m; /* mdev = 3/4 mdev + 1/4 new */ in rxrpc_rtt_estimator()
85 if (peer->mdev_us > peer->mdev_max_us) { in rxrpc_rtt_estimator()
86 peer->mdev_max_us = peer->mdev_us; in rxrpc_rtt_estimator()
87 if (peer->mdev_max_us > peer->rttvar_us) in rxrpc_rtt_estimator()
88 peer->rttvar_us = peer->mdev_max_us; in rxrpc_rtt_estimator()
93 peer->mdev_us = m << 1; /* make sure rto = 3*rtt */ in rxrpc_rtt_estimator()
94 peer->rttvar_us = max(peer->mdev_us, rxrpc_rto_min_us(peer)); in rxrpc_rtt_estimator()
95 peer->mdev_max_us = peer->rttvar_us; in rxrpc_rtt_estimator()
98 peer->srtt_us = max(1U, srtt); in rxrpc_rtt_estimator()
105 static void rxrpc_set_rto(struct rxrpc_peer *peer) in rxrpc_set_rto()
113 * is invisible. Actually, Linux-2.4 also generates erratic in rxrpc_set_rto()
127 peer->rto_j = rxrpc_bound_rto(rto); in rxrpc_set_rto()
130 static void rxrpc_ack_update_rtt(struct rxrpc_peer *peer, long rtt_us) in rxrpc_ack_update_rtt()
140 peer->backoff = 0; in rxrpc_ack_update_rtt()
152 struct rxrpc_peer *peer = call->peer; in rxrpc_peer_add_rtt()
159 spin_lock(&peer->rtt_input_lock); in rxrpc_peer_add_rtt()
161 if (peer->rtt_count < 3) in rxrpc_peer_add_rtt()
162 peer->rtt_count++; in rxrpc_peer_add_rtt()
163 spin_unlock(&peer->rtt_input_lock); in rxrpc_peer_add_rtt()
166 peer->srtt_us >> 3, peer->rto_j); in rxrpc_peer_add_rtt()
176 u8 backoff = READ_ONCE(peer->backoff); in rxrpc_get_rto_backoff()
178 timo_j = peer->rto_j; in rxrpc_get_rto_backoff()
181 WRITE_ONCE(peer->backoff, backoff + 1); in rxrpc_get_rto_backoff()
191 peer->rto_j = RXRPC_TIMEOUT_INIT; in rxrpc_peer_init_rtt()
192 peer->mdev_us = jiffies_to_usecs(RXRPC_TIMEOUT_INIT); in rxrpc_peer_init_rtt()
193 peer->backoff = 0; in rxrpc_peer_init_rtt()
194 //minmax_reset(&peer->rtt_min, rxrpc_jiffies32, ~0U); in rxrpc_peer_init_rtt()