forked from luck/tmp_suning_uos_patched
usbip: use monotonic timestamps
This gets rid of the deprecated do_gettimeofday() function in usbip. The comment above vgadget_get_frame() mentions that it suffers from issues with the time jumps due to suspend and settimeofday, so I'm changing it to use ktime_get_ts64() to use monotonic times that don't have this problem. I couldn't tell whether we should use CLOCK_MONOTONIC or CLOCK_MONOTONIC_RAW here, the difference being the exact rate when correcting for NTP. I picked monotonic time since it doesn't change the speed to the existing code and should be better synchronized with other machines we talk to. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Krzysztof Opasiak <k.opasiak@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
15081e85cc
commit
6c51441cd0
|
@ -105,7 +105,7 @@ struct vudc {
|
|||
|
||||
struct usbip_device ud;
|
||||
struct transfer_timer tr_timer;
|
||||
struct timeval start_time;
|
||||
struct timespec64 start_time;
|
||||
|
||||
struct list_head urb_queue;
|
||||
|
||||
|
|
|
@ -136,15 +136,14 @@ struct vep *vudc_find_endpoint(struct vudc *udc, u8 address)
|
|||
|
||||
/* gadget ops */
|
||||
|
||||
/* FIXME - this will probably misbehave when suspend/resume is added */
|
||||
static int vgadget_get_frame(struct usb_gadget *_gadget)
|
||||
{
|
||||
struct timeval now;
|
||||
struct timespec64 now;
|
||||
struct vudc *udc = usb_gadget_to_vudc(_gadget);
|
||||
|
||||
do_gettimeofday(&now);
|
||||
ktime_get_ts64(&now);
|
||||
return ((now.tv_sec - udc->start_time.tv_sec) * 1000 +
|
||||
(now.tv_usec - udc->start_time.tv_usec) / 1000)
|
||||
(now.tv_nsec - udc->start_time.tv_nsec) / NSEC_PER_MSEC)
|
||||
& 0x7FF;
|
||||
}
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
|
|||
udc->ud.status = SDEV_ST_USED;
|
||||
spin_unlock_irq(&udc->ud.lock);
|
||||
|
||||
do_gettimeofday(&udc->start_time);
|
||||
ktime_get_ts64(&udc->start_time);
|
||||
v_start_timer(udc);
|
||||
udc->connected = 1;
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue
Block a user