diff options
Diffstat (limited to 'net/dccp/ackvec.c')
-rw-r--r-- | net/dccp/ackvec.c | 11 |
1 files changed, 5 insertions, 6 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(); |
325 | out: | 324 | out: |
326 | return 0; | 325 | return 0; |
327 | 326 | ||