Lines Matching full:call

18 static u32 rxrpc_rto_min_us(struct rxrpc_call *call)  in rxrpc_rto_min_us()  argument
23 static u32 __rxrpc_set_rto(const struct rxrpc_call *call) in __rxrpc_set_rto() argument
25 return (call->srtt_us >> 3) + call->rttvar_us; in __rxrpc_set_rto()
43 static void rxrpc_rtt_estimator(struct rxrpc_call *call, long sample_rtt_us) in rxrpc_rtt_estimator() argument
46 u32 srtt = call->srtt_us; in rxrpc_rtt_estimator()
69 m -= (call->mdev_us >> 2); /* similar update on mdev */ in rxrpc_rtt_estimator()
81 m -= (call->mdev_us >> 2); /* similar update on mdev */ in rxrpc_rtt_estimator()
84 call->mdev_us += m; /* mdev = 3/4 mdev + 1/4 new */ in rxrpc_rtt_estimator()
85 if (call->mdev_us > call->mdev_max_us) { in rxrpc_rtt_estimator()
86 call->mdev_max_us = call->mdev_us; in rxrpc_rtt_estimator()
87 if (call->mdev_max_us > call->rttvar_us) in rxrpc_rtt_estimator()
88 call->rttvar_us = call->mdev_max_us; in rxrpc_rtt_estimator()
93 call->mdev_us = m << 1; /* make sure rto = 3*rtt */ in rxrpc_rtt_estimator()
94 call->rttvar_us = umax(call->mdev_us, rxrpc_rto_min_us(call)); in rxrpc_rtt_estimator()
95 call->mdev_max_us = call->rttvar_us; in rxrpc_rtt_estimator()
98 call->srtt_us = umax(srtt, 1); in rxrpc_rtt_estimator()
105 static void rxrpc_set_rto(struct rxrpc_call *call) in rxrpc_set_rto() argument
116 rto = __rxrpc_set_rto(call); in rxrpc_set_rto()
127 call->rto_us = rxrpc_bound_rto(rto); in rxrpc_set_rto()
130 static void rxrpc_update_rtt_min(struct rxrpc_call *call, ktime_t resp_time, long rtt_us) in rxrpc_update_rtt_min() argument
135 minmax_running_min(&call->min_rtt, wlen_us, resp_time / 1024, in rxrpc_update_rtt_min()
139 static void rxrpc_ack_update_rtt(struct rxrpc_call *call, ktime_t resp_time, long rtt_us) in rxrpc_ack_update_rtt() argument
145 rxrpc_update_rtt_min(call, resp_time, rtt_us); in rxrpc_ack_update_rtt()
147 rxrpc_rtt_estimator(call, rtt_us); in rxrpc_ack_update_rtt()
148 rxrpc_set_rto(call); in rxrpc_ack_update_rtt()
151 call->backoff = 0; in rxrpc_ack_update_rtt()
156 * exclusive access to the call RTT data.
158 void rxrpc_call_add_rtt(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why, in rxrpc_call_add_rtt() argument
169 rxrpc_ack_update_rtt(call, resp_time, rtt_us); in rxrpc_call_add_rtt()
170 if (call->rtt_count < 3) in rxrpc_call_add_rtt()
171 call->rtt_count++; in rxrpc_call_add_rtt()
172 call->rtt_taken++; in rxrpc_call_add_rtt()
174 WRITE_ONCE(call->peer->recent_srtt_us, call->srtt_us / 8); in rxrpc_call_add_rtt()
175 WRITE_ONCE(call->peer->recent_rto_us, call->rto_us); in rxrpc_call_add_rtt()
177 trace_rxrpc_rtt_rx(call, why, rtt_slot, send_serial, resp_serial, in rxrpc_call_add_rtt()
178 rtt_us, call->srtt_us, call->rto_us); in rxrpc_call_add_rtt()
185 ktime_t rxrpc_get_rto_backoff(struct rxrpc_call *call, bool retrans) in rxrpc_get_rto_backoff() argument
188 u32 backoff = READ_ONCE(call->backoff); in rxrpc_get_rto_backoff()
190 timo_us = call->rto_us; in rxrpc_get_rto_backoff()
193 WRITE_ONCE(call->backoff, backoff + 1); in rxrpc_get_rto_backoff()
201 void rxrpc_call_init_rtt(struct rxrpc_call *call) in rxrpc_call_init_rtt() argument
203 call->rtt_last_req = KTIME_MIN; in rxrpc_call_init_rtt()
204 call->rto_us = RXRPC_TIMEOUT_INIT; in rxrpc_call_init_rtt()
205 call->mdev_us = RXRPC_TIMEOUT_INIT; in rxrpc_call_init_rtt()
206 call->backoff = 0; in rxrpc_call_init_rtt()
207 //minmax_reset(&call->rtt_min, rxrpc_jiffies32, ~0U); in rxrpc_call_init_rtt()