Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : /* 3 : : * linux/include/linux/sunrpc/timer.h 4 : : * 5 : : * Declarations for the RPC transport timer. 6 : : * 7 : : * Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no> 8 : : */ 9 : : 10 : : #ifndef _LINUX_SUNRPC_TIMER_H 11 : : #define _LINUX_SUNRPC_TIMER_H 12 : : 13 : : #include <linux/atomic.h> 14 : : 15 : : struct rpc_rtt { 16 : : unsigned long timeo; /* default timeout value */ 17 : : unsigned long srtt[5]; /* smoothed round trip time << 3 */ 18 : : unsigned long sdrtt[5]; /* smoothed medium deviation of RTT */ 19 : : int ntimeouts[5]; /* Number of timeouts for the last request */ 20 : : }; 21 : : 22 : : 23 : : extern void rpc_init_rtt(struct rpc_rtt *rt, unsigned long timeo); 24 : : extern void rpc_update_rtt(struct rpc_rtt *rt, unsigned timer, long m); 25 : : extern unsigned long rpc_calc_rto(struct rpc_rtt *rt, unsigned timer); 26 : : 27 : 0 : static inline void rpc_set_timeo(struct rpc_rtt *rt, int timer, int ntimeo) 28 : : { 29 : 0 : int *t; 30 : 0 : if (!timer) 31 : : return; 32 : 0 : t = &rt->ntimeouts[timer-1]; 33 [ # # ]: 0 : if (ntimeo < *t) { 34 [ # # ]: 0 : if (*t > 0) 35 : 0 : (*t)--; 36 : : } else { 37 : 0 : if (ntimeo > 8) 38 : : ntimeo = 8; 39 : 0 : *t = ntimeo; 40 : : } 41 : : } 42 : : 43 : 0 : static inline int rpc_ntimeo(struct rpc_rtt *rt, int timer) 44 : : { 45 [ # # ]: 0 : if (!timer) 46 : : return 0; 47 : 0 : return rt->ntimeouts[timer-1]; 48 : : } 49 : : 50 : : #endif /* _LINUX_SUNRPC_TIMER_H */