From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752855AbbKYPJW (ORCPT ); Wed, 25 Nov 2015 10:09:22 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:63989 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751831AbbKYPJU (ORCPT ); Wed, 25 Nov 2015 10:09:20 -0500 From: Arnd Bergmann To: Greg KH , devel@driverdev.osuosl.org Cc: linux-kernel@vger.kernel.org, y2038@lists.linaro.org, Tapasweni Pathak Subject: [PATCH] staging: gdm72xx: Replace timeval with ktime_t Date: Wed, 25 Nov 2015 16:09:10 +0100 Message-ID: <26013940.FSjsL4MhkE@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:pGMnvk3h7i/KwGTSNxx0cxJQ6q4x2gSyOs+xrC8kh7lQ+O0IEne GjmGsfLf/+v3KqjN0SPiYlll8ZYHHrs8LFpkpUoONk6z+vtBdP2fh2Zf4SubqQHdkP29m0g B5kMRo5Vz1IMT0rTYCDTKpLfP+0SWT4lm+cXnFpbszU37/EsUErhEjp07n+ban8whrra53n RKuW8IxBUanQpuwm/x2OQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:kV7Hl8P5vOQ=:dMAh4e70Qd9UXllmr/ieIn 8CWsqbFCQjMOx/KVkZ9oZ56GUPkZudvAHN8ntkuTrLjG/hL7yskgsqXdkS0TUED6B8SWs1i/1 f54XhxYLPL1nFaJn2rMEL+sDcXO9zbDfeIC4rkcWpUZ28UQ1drw8KjhS7jGunfw/ilotjtoxR JfJv/ajhfwzHsh6rZoMmbMkBZXLum2QUBlrb4M6Asi8LSqI7vEuxuURoablms73xCiSq3UF5f oiEv6PHqImTdg/FwoLxPd3hW9ot17gml7tbsM7UDZMDGnSyI2L3Kna5GLpex4whpB266XvREQ 9ZUgZzH/SuFbeOl8xBI8/zSP/7zsBu0JqPwIZBp+QQURcQDnc9ovybJF9NHVI2suw12OyN+o5 hzMf7QNdgSDI9klKRudtCUEsIppL/R3Y8IZhrh3Q8lMLwz3+b4ZzeINiifgJKi8m6tJS15ReG o4G6hGvPG6dTd9a3B0xgy7uz1cUn2En3R2kKj5Q/Hjt7FQqnPoG9/kN04IYxY20/KLnsE48wT V8ZPbbmNnl8kz6xJz7RnQzc6R4K7SrrJZOfH8fPa2iUpit2jKmqOiYKwm4U+NLKfioNeQg1aA GNt9YlYffJMk7GQ3NPHo4bPENsMr8ZO4knpn2q81uPp3U8AUxXLIrbkz6cM2E+fco1AC+b/qX qD9MgT39NtKJMXOWaKxB8wZHkvns1Q5ktaFPqd331/HIhvwnQSMX4pMl44s0GdGLjRYrnEdak f4SpZzAB6Oizc37q Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org struct sdu_stamp in the gdm_sdio.h is a timeval type. 'struct timeval now' is used for calculating elapsed time. 32-bit systems using 'struct timeval' will break in the year 2038, so we have to replace that code with more appropriate types. This patch changes the gdm72xx driver to use ktime_t. ktime_get() is better than using do_gettimeofday(), because it uses the monotonic clock. ktime_sub are used to subtract two ktime variables. Build tested this by saying Y to WIMAX_GDM72XX. Signed-off-by: Tapasweni Pathak Reviewed-by: Arnd Bergmann Signed-off-by: Arnd Bergmann --- This is an old patch that I still had in my patch backlog, please apply to the staging tree. diff --git a/drivers/staging/gdm72xx/gdm_sdio.c b/drivers/staging/gdm72xx/gdm_sdio.c index b0521da3c793..1f5a087723ba 100644 --- a/drivers/staging/gdm72xx/gdm_sdio.c +++ b/drivers/staging/gdm72xx/gdm_sdio.c @@ -36,7 +36,7 @@ #define RX_BUF_SIZE (25*1024) #define TX_HZ 2000 -#define TX_INTERVAL (1000000/TX_HZ) +#define TX_INTERVAL (NSEC_PER_SEC/TX_HZ) static struct sdio_tx *alloc_tx_struct(struct tx_cxt *tx) { @@ -303,7 +303,7 @@ static void send_sdu(struct sdio_func *func, struct tx_cxt *tx) put_tx_struct(t->tx_cxt, t); } - do_gettimeofday(&tx->sdu_stamp); + tx->sdu_stamp = ktime_get(); spin_unlock_irqrestore(&tx->lock, flags); } @@ -330,7 +330,7 @@ static void do_tx(struct work_struct *work) struct sdio_func *func = sdev->func; struct tx_cxt *tx = &sdev->tx; struct sdio_tx *t = NULL; - struct timeval now, *before; + ktime_t now, before; int is_sdu = 0; long diff; unsigned long flags; @@ -346,11 +346,10 @@ static void do_tx(struct work_struct *work) list_del(&t->list); is_sdu = 0; } else if (!tx->stop_sdu_tx && !list_empty(&tx->sdu_list)) { - do_gettimeofday(&now); - before = &tx->sdu_stamp; + now = ktime_get(); + before = tx->sdu_stamp; - diff = (now.tv_sec - before->tv_sec) * 1000000 + - (now.tv_usec - before->tv_usec); + diff = ktime_to_ns(ktime_sub(now, before)); if (diff >= 0 && diff < TX_INTERVAL) { schedule_work(&sdev->ws); spin_unlock_irqrestore(&tx->lock, flags); diff --git a/drivers/staging/gdm72xx/gdm_sdio.h b/drivers/staging/gdm72xx/gdm_sdio.h index 77ad9d686f8e..aa7dad22a219 100644 --- a/drivers/staging/gdm72xx/gdm_sdio.h +++ b/drivers/staging/gdm72xx/gdm_sdio.h @@ -15,7 +15,7 @@ #define __GDM72XX_GDM_SDIO_H__ #include -#include +#include #define MAX_NR_SDU_BUF 64 @@ -32,7 +32,7 @@ struct tx_cxt { struct list_head free_list; struct list_head sdu_list; struct list_head hci_list; - struct timeval sdu_stamp; + ktime_t sdu_stamp; u8 *sdu_buf; spinlock_t lock; int can_send;