aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/dccp/ackvec.c11
-rw-r--r--net/dccp/ackvec.h4
2 files changed, 7 insertions, 8 deletions
diff --git a/net/dccp/ackvec.c b/net/dccp/ackvec.c
index 7ac775f9a64b..3f8984b5f6e8 100644
--- a/net/dccp/ackvec.c
+++ b/net/dccp/ackvec.c
@@ -73,17 +73,17 @@ int dccp_insert_option_ackvec(struct sock *sk, struct sk_buff *skb)
73 DCCP_MAX_ACKVEC_OPT_LEN - 1) / 73 DCCP_MAX_ACKVEC_OPT_LEN - 1) /
74 DCCP_MAX_ACKVEC_OPT_LEN; 74 DCCP_MAX_ACKVEC_OPT_LEN;
75 u16 len = av->dccpav_vec_len + 2 * nr_opts, i; 75 u16 len = av->dccpav_vec_len + 2 * nr_opts, i;
76 struct timeval now;
77 u32 elapsed_time; 76 u32 elapsed_time;
78 const unsigned char *tail, *from; 77 const unsigned char *tail, *from;
79 unsigned char *to; 78 unsigned char *to;
80 struct dccp_ackvec_record *avr; 79 struct dccp_ackvec_record *avr;
80 suseconds_t delta;
81 81
82 if (DCCP_SKB_CB(skb)->dccpd_opt_len + len > DCCP_MAX_OPT_LEN) 82 if (DCCP_SKB_CB(skb)->dccpd_opt_len + len > DCCP_MAX_OPT_LEN)
83 return -1; 83 return -1;
84 84
85 dccp_timestamp(sk, &now); 85 delta = ktime_us_delta(ktime_get_real(), av->dccpav_time);
86 elapsed_time = timeval_delta(&now, &av->dccpav_time) / 10; 86 elapsed_time = delta / 10;
87 87
88 if (elapsed_time != 0 && 88 if (elapsed_time != 0 &&
89 dccp_insert_option_elapsed_time(sk, skb, elapsed_time)) 89 dccp_insert_option_elapsed_time(sk, skb, elapsed_time))
@@ -159,8 +159,7 @@ struct dccp_ackvec *dccp_ackvec_alloc(const gfp_t priority)
159 av->dccpav_buf_head = DCCP_MAX_ACKVEC_LEN - 1; 159 av->dccpav_buf_head = DCCP_MAX_ACKVEC_LEN - 1;
160 av->dccpav_buf_ackno = UINT48_MAX + 1; 160 av->dccpav_buf_ackno = UINT48_MAX + 1;
161 av->dccpav_buf_nonce = av->dccpav_buf_nonce = 0; 161 av->dccpav_buf_nonce = av->dccpav_buf_nonce = 0;
162 av->dccpav_time.tv_sec = 0; 162 av->dccpav_time = ktime_set(0, 0);
163 av->dccpav_time.tv_usec = 0;
164 av->dccpav_vec_len = 0; 163 av->dccpav_vec_len = 0;
165 INIT_LIST_HEAD(&av->dccpav_records); 164 INIT_LIST_HEAD(&av->dccpav_records);
166 } 165 }
@@ -321,7 +320,7 @@ int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk,
321 } 320 }
322 321
323 av->dccpav_buf_ackno = ackno; 322 av->dccpav_buf_ackno = ackno;
324 dccp_timestamp(sk, &av->dccpav_time); 323 av->dccpav_time = ktime_get_real();
325out: 324out:
326 return 0; 325 return 0;
327 326
diff --git a/net/dccp/ackvec.h b/net/dccp/ackvec.h
index 96504a3b16e4..9ef0737043ee 100644
--- a/net/dccp/ackvec.h
+++ b/net/dccp/ackvec.h
@@ -12,8 +12,8 @@
12 */ 12 */
13 13
14#include <linux/compiler.h> 14#include <linux/compiler.h>
15#include <linux/ktime.h>
15#include <linux/list.h> 16#include <linux/list.h>
16#include <linux/time.h>
17#include <linux/types.h> 17#include <linux/types.h>
18 18
19/* Read about the ECN nonce to see why it is 253 */ 19/* Read about the ECN nonce to see why it is 253 */
@@ -52,7 +52,7 @@
52struct dccp_ackvec { 52struct dccp_ackvec {
53 u64 dccpav_buf_ackno; 53 u64 dccpav_buf_ackno;
54 struct list_head dccpav_records; 54 struct list_head dccpav_records;
55 struct timeval dccpav_time; 55 ktime_t dccpav_time;
56 u16 dccpav_buf_head; 56 u16 dccpav_buf_head;
57 u16 dccpav_vec_len; 57 u16 dccpav_vec_len;
58 u8 dccpav_buf_nonce; 58 u8 dccpav_buf_nonce;