mirror of https://gitee.com/openkylin/linux.git
dccp: Clamping RTT values
This extracts the clamping part of dccp_sample_rtt() and makes it available to other parts of the code (as e.g. used in the next patch). Note: The function dccp_sample_rtt() now reduces to subtracting the elapsed time. This could be eliminated but would require shorter prefixes and thus is not done by this patch - maybe an idea for later. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
This commit is contained in:
parent
2b81143aa3
commit
49ffc29a02
|
@ -334,7 +334,14 @@ extern struct sk_buff *dccp_ctl_make_reset(struct sock *sk,
|
||||||
extern int dccp_send_reset(struct sock *sk, enum dccp_reset_codes code);
|
extern int dccp_send_reset(struct sock *sk, enum dccp_reset_codes code);
|
||||||
extern void dccp_send_close(struct sock *sk, const int active);
|
extern void dccp_send_close(struct sock *sk, const int active);
|
||||||
extern int dccp_invalid_packet(struct sk_buff *skb);
|
extern int dccp_invalid_packet(struct sk_buff *skb);
|
||||||
extern u32 dccp_sample_rtt(struct sock *sk, long delta);
|
|
||||||
|
static inline u32 dccp_sane_rtt(long usec_sample)
|
||||||
|
{
|
||||||
|
if (unlikely(usec_sample <= 0 || usec_sample > DCCP_SANE_RTT_MAX))
|
||||||
|
DCCP_WARN("RTT sample %ld out of bounds!\n", usec_sample);
|
||||||
|
return clamp_val(usec_sample, DCCP_SANE_RTT_MIN, DCCP_SANE_RTT_MAX);
|
||||||
|
}
|
||||||
|
extern u32 dccp_sample_rtt(struct sock *sk, long delta);
|
||||||
|
|
||||||
static inline int dccp_bad_service_code(const struct sock *sk,
|
static inline int dccp_bad_service_code(const struct sock *sk,
|
||||||
const __be32 service)
|
const __be32 service)
|
||||||
|
|
|
@ -707,16 +707,7 @@ u32 dccp_sample_rtt(struct sock *sk, long delta)
|
||||||
/* dccpor_elapsed_time is either zeroed out or set and > 0 */
|
/* dccpor_elapsed_time is either zeroed out or set and > 0 */
|
||||||
delta -= dccp_sk(sk)->dccps_options_received.dccpor_elapsed_time * 10;
|
delta -= dccp_sk(sk)->dccps_options_received.dccpor_elapsed_time * 10;
|
||||||
|
|
||||||
if (unlikely(delta <= 0)) {
|
return dccp_sane_rtt(delta);
|
||||||
DCCP_WARN("unusable RTT sample %ld, using min\n", delta);
|
|
||||||
return DCCP_SANE_RTT_MIN;
|
|
||||||
}
|
|
||||||
if (unlikely(delta > DCCP_SANE_RTT_MAX)) {
|
|
||||||
DCCP_WARN("RTT sample %ld too large, using max\n", delta);
|
|
||||||
return DCCP_SANE_RTT_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
return delta;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL_GPL(dccp_sample_rtt);
|
EXPORT_SYMBOL_GPL(dccp_sample_rtt);
|
||||||
|
|
Loading…
Reference in New Issue