aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChunyan Zhang <zhang.chunyan@linaro.org>2015-01-07 23:01:29 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-11 21:39:40 -0500
commitca98278a14b76916cd09c2c899c21c29a0748d15 (patch)
tree85785e1de3a8827e1ea8b1d441098d07788b5774
parent9f61e309c54ac7f906422abd4ccebe10bee9debd (diff)
irda: irda-usb: Replace timeval with ktime_t
The irda usb driver uses 'timeval', which we try to remove in the kernel because all 32-bit time types will break in the year 2038. This patch also changes do_gettimeofday() to ktime_get() accordingly, since ktime_get returns a ktime_t, but do_gettimeofday returns a struct timeval, and the other reason is that ktime_get() uses the monotonic clock. This patch uses ktime_us_delta to get the elapsed time, and in this way it no longer needs to check for the overflow, because ktime_us_delta returns time difference of microsecond. Signed-off-by: Chunyan Zhang <zhang.chunyan@linaro.org> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/irda/irda-usb.c10
-rw-r--r--drivers/net/irda/irda-usb.h5
2 files changed, 4 insertions, 11 deletions
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 48b2f9a321b7..f6c916312577 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -495,18 +495,12 @@ static netdev_tx_t irda_usb_hard_xmit(struct sk_buff *skb,
495 mtt = irda_get_mtt(skb); 495 mtt = irda_get_mtt(skb);
496 if (mtt) { 496 if (mtt) {
497 int diff; 497 int diff;
498 do_gettimeofday(&self->now); 498 diff = ktime_us_delta(ktime_get(), self->stamp);
499 diff = self->now.tv_usec - self->stamp.tv_usec;
500#ifdef IU_USB_MIN_RTT 499#ifdef IU_USB_MIN_RTT
501 /* Factor in USB delays -> Get rid of udelay() that 500 /* Factor in USB delays -> Get rid of udelay() that
502 * would be lost in the noise - Jean II */ 501 * would be lost in the noise - Jean II */
503 diff += IU_USB_MIN_RTT; 502 diff += IU_USB_MIN_RTT;
504#endif /* IU_USB_MIN_RTT */ 503#endif /* IU_USB_MIN_RTT */
505 /* If the usec counter did wraparound, the diff will
506 * go negative (tv_usec is a long), so we need to
507 * correct it by one second. Jean II */
508 if (diff < 0)
509 diff += 1000000;
510 504
511 /* Check if the mtt is larger than the time we have 505 /* Check if the mtt is larger than the time we have
512 * already used by all the protocol processing 506 * already used by all the protocol processing
@@ -869,7 +863,7 @@ static void irda_usb_receive(struct urb *urb)
869 * reduce the min turn time a bit since we will know 863 * reduce the min turn time a bit since we will know
870 * how much time we have used for protocol processing 864 * how much time we have used for protocol processing
871 */ 865 */
872 do_gettimeofday(&self->stamp); 866 self->stamp = ktime_get();
873 867
874 /* Check if we need to copy the data to a new skb or not. 868 /* Check if we need to copy the data to a new skb or not.
875 * For most frames, we use ZeroCopy and pass the already 869 * For most frames, we use ZeroCopy and pass the already
diff --git a/drivers/net/irda/irda-usb.h b/drivers/net/irda/irda-usb.h
index 58ddb5214916..8ac389fa9348 100644
--- a/drivers/net/irda/irda-usb.h
+++ b/drivers/net/irda/irda-usb.h
@@ -29,7 +29,7 @@
29 * 29 *
30 *****************************************************************************/ 30 *****************************************************************************/
31 31
32#include <linux/time.h> 32#include <linux/ktime.h>
33 33
34#include <net/irda/irda.h> 34#include <net/irda/irda.h>
35#include <net/irda/irda_device.h> /* struct irlap_cb */ 35#include <net/irda/irda_device.h> /* struct irlap_cb */
@@ -157,8 +157,7 @@ struct irda_usb_cb {
157 char *speed_buff; /* Buffer for speed changes */ 157 char *speed_buff; /* Buffer for speed changes */
158 char *tx_buff; 158 char *tx_buff;
159 159
160 struct timeval stamp; 160 ktime_t stamp;
161 struct timeval now;
162 161
163 spinlock_t lock; /* For serializing Tx operations */ 162 spinlock_t lock; /* For serializing Tx operations */
164 163