diff options
author | Chunyan Zhang <zhang.chunyan@linaro.org> | 2015-01-07 23:01:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-01-11 21:39:40 -0500 |
commit | 9f61e309c54ac7f906422abd4ccebe10bee9debd (patch) | |
tree | 8cc00d87d9352a06a8362ae6b60a462fb74d6395 /drivers/net/irda | |
parent | 270d73c1c32c71e215f1c64e70be82063ec65005 (diff) |
irda: ali-ircc: Replace timeval with ktime_t
The ali ircc 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>
Diffstat (limited to 'drivers/net/irda')
-rw-r--r-- | drivers/net/irda/ali-ircc.c | 11 | ||||
-rw-r--r-- | drivers/net/irda/ali-ircc.h | 5 |
2 files changed, 5 insertions, 11 deletions
diff --git a/drivers/net/irda/ali-ircc.c b/drivers/net/irda/ali-ircc.c index 58f98f4de773..58ae11a14bb6 100644 --- a/drivers/net/irda/ali-ircc.c +++ b/drivers/net/irda/ali-ircc.c | |||
@@ -1462,17 +1462,12 @@ static netdev_tx_t ali_ircc_fir_hard_xmit(struct sk_buff *skb, | |||
1462 | if (mtt) | 1462 | if (mtt) |
1463 | { | 1463 | { |
1464 | /* Check how much time we have used already */ | 1464 | /* Check how much time we have used already */ |
1465 | do_gettimeofday(&self->now); | 1465 | diff = ktime_us_delta(ktime_get(), self->stamp); |
1466 | |||
1467 | diff = self->now.tv_usec - self->stamp.tv_usec; | ||
1468 | /* self->stamp is set from ali_ircc_dma_receive_complete() */ | 1466 | /* self->stamp is set from ali_ircc_dma_receive_complete() */ |
1469 | 1467 | ||
1470 | pr_debug("%s(), ******* diff = %d *******\n", | 1468 | pr_debug("%s(), ******* diff = %d *******\n", |
1471 | __func__, diff); | 1469 | __func__, diff); |
1472 | 1470 | ||
1473 | if (diff < 0) | ||
1474 | diff += 1000000; | ||
1475 | |||
1476 | /* Check if the mtt is larger than the time we have | 1471 | /* Check if the mtt is larger than the time we have |
1477 | * already used by all the protocol processing | 1472 | * already used by all the protocol processing |
1478 | */ | 1473 | */ |
@@ -1884,7 +1879,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self) | |||
1884 | * reduce the min turn time a bit since we will know | 1879 | * reduce the min turn time a bit since we will know |
1885 | * how much time we have used for protocol processing | 1880 | * how much time we have used for protocol processing |
1886 | */ | 1881 | */ |
1887 | do_gettimeofday(&self->stamp); | 1882 | self->stamp = ktime_get(); |
1888 | 1883 | ||
1889 | skb = dev_alloc_skb(len+1); | 1884 | skb = dev_alloc_skb(len+1); |
1890 | if (skb == NULL) | 1885 | if (skb == NULL) |
diff --git a/drivers/net/irda/ali-ircc.h b/drivers/net/irda/ali-ircc.h index 0c8edb41bd0a..c2d9747a5108 100644 --- a/drivers/net/irda/ali-ircc.h +++ b/drivers/net/irda/ali-ircc.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #ifndef ALI_IRCC_H | 22 | #ifndef ALI_IRCC_H |
23 | #define ALI_IRCC_H | 23 | #define ALI_IRCC_H |
24 | 24 | ||
25 | #include <linux/time.h> | 25 | #include <linux/ktime.h> |
26 | 26 | ||
27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
28 | #include <linux/pm.h> | 28 | #include <linux/pm.h> |
@@ -209,8 +209,7 @@ struct ali_ircc_cb { | |||
209 | 209 | ||
210 | unsigned char rcvFramesOverflow; | 210 | unsigned char rcvFramesOverflow; |
211 | 211 | ||
212 | struct timeval stamp; | 212 | ktime_t stamp; |
213 | struct timeval now; | ||
214 | 213 | ||
215 | spinlock_t lock; /* For serializing operations */ | 214 | spinlock_t lock; /* For serializing operations */ |
216 | 215 | ||