From patchwork Fri Nov 3 16:31:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 117950 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp3667628qgn; Fri, 3 Nov 2017 09:33:06 -0700 (PDT) X-Google-Smtp-Source: ABhQp+R8O98fq9UgX4N9GjvY3PV1c+rrfejq3Fc8THaTr5+PKkeHOVnwoP7KDIP37WR/fxNMFNgJ X-Received: by 10.84.213.136 with SMTP id g8mr7349149pli.339.1509726786419; Fri, 03 Nov 2017 09:33:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509726786; cv=none; d=google.com; s=arc-20160816; b=CVhxNikHfCaCjNNvYimRMkUdPfmmTYk+SROZ24Yu36Jycp2Ahid+xxNWQEripl3H9h QR1Q4JD/8z85NWogLvQ5Psokc+MerBZrEONqNOyxGPIEvl602xDBL+zS1Moo1DlfwtkF qwaDGSqA0MBxOLNlxZXW0bCVCCAferVjsN5AnAlWw0tLW3535bOV/CYIjxlVSLrLgn0S 1/i5r8HpA5B+O08Fa+ea9OQKMiRqmp0qsI5C5BV3Ut2oqCzbVAGeOmjh0eWKvYuzDzz4 uZFYsVINIhqWBKjvIaQDvsON1UnAcnOHCUoChlA/tMD+STULu8trKbnrqPWJCx1pS3Ic AdKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=L67CBrF6jvmJLe3poLwgbo+OFfgz2BGiGdz5mVaq9R8=; b=nN8ksMVu5fAoWG7S5ZYwOU4V61xZD/5DXzzC1hZuajTWVMcfeZP11Q1T/zVw6XbhAD 9FTb8h3BOZtdgwLT5Hbd1sGh/TQEWW5AAu3HuqztwCWEEVcyOXaJdw6bnL08cH5ZjTz4 B6Yom5wk7u3zP+vtKXuIQNkaGmdz9MOVO6PyS07y4zcSsQYF4f515KE5HRobKgSlykDA 7irvOIjS7bGVOVb05lECi9+dWe9D8p9NzVWQrnl/9GDYX79UkVy0rusD1SeBuyb4jqBc S1UgyNDPShKCE1At/9UsygJKphjI+TNjJ1MkoJN2wsDDMpwj5IAjLuZAV/5VoU6Cz+4J pbKg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u12si6308632pgq.678.2017.11.03.09.33.06; Fri, 03 Nov 2017 09:33:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756151AbdKCQdE (ORCPT + 26 others); Fri, 3 Nov 2017 12:33:04 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:62219 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755977AbdKCQdB (ORCPT ); Fri, 3 Nov 2017 12:33:01 -0400 Received: from wuerfel.lan ([109.193.157.232]) by mrelayeu.kundenserver.de (mreue006 [212.227.15.129]) with ESMTPA (Nemesis) id 0MYHJs-1dfwlT1NL6-00Uoik; Fri, 03 Nov 2017 17:32:31 +0100 From: Arnd Bergmann To: Wolfgang Grandegger , Marc Kleine-Budde Cc: Arnd Bergmann , "David S. Miller" , Kees Cook , Allen Pais , Stephane Grosjean , Johan Hovold , =?utf-8?b?7LaU7KeA7Zi4?= , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] can: peak_usb: remove some 'struct timeval' users Date: Fri, 3 Nov 2017 17:31:36 +0100 Message-Id: <20171103163220.3799742-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:/LCdvyroFt+daSO3yYKLspZC5Afz7wmFkhhBrBRVkNYbEZexHpW Oz1qd646AWDF1OwyC0R8ssHarl6nBsfxqmy2eBZ6eG16N03TlBnWtfQxX8Lwn7Lt5P+cU/6 LPA4k+UpUd59Etg+vKHNvnTdpYNdnFRQL7OmZwDZlXwFfTcCuguvbq4pQt4I20BwbA/3afG 4xMYxsGEey+t0hgeungzQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:El1vHa/DNr8=:tul7aSLBdV6+ycBg9QdTHu jf3LA4d0R01mPtOxXbxjnZ2rrAbka6lWrk2AS2y5vokozyFDQQNrttcYUJZBUomCyKByHDMyq zEltAeSiSG7FpIs10bKqG46IYJl6uTe2PSpyHWQFF837k1Uu/+V9lsM9htkujCnRRAy41xyS9 UYccC6o8emodw8e/gEdT/HMlV1DqevMmlBFK6ThBlZSJ/r/Bid0Sy9xzgRG3UsN88XkSN5F3w FbDbSMTbvBLu18WF0qc1rl0Uldpb5wUlJ8FTJ/BQrDFuY0Ij0RKwFaFJoDXwY1X9bcpJisMtK sxZR7oox0eu5Y1BSUQ6E+h7azk7mQoCtEZYKzRvWre2Y19HNQf9lzzcReS46E3AcDIG3Txb/h O3d+a0yf0eLP4y9TazyKgSdnz2zIxgK6k/1+c3S0tic+rRNVAox7vimo9bMH+wUBIUVaiYSJ0 8l1qRaolMmZUI8CwbTs0k0lhuHmDfOVyhsNACE9etjx9hmUWEcjqzFqy1mTo4AkRb0JlMuihV XWRVvcVhoQGIbIlFtg1+IZdOXsgDRY0vbnoYVZcNb2y0xHor20zF3YOu7pH6Mf4rM1fITN5lf woiR3zTXGlNRhoHlD9yL5Qm+KL0NLfuPNhblmkx584gIkEjZblk75Xo88DDbh3MrbtjdIh+VB 9RMIElkpO5mfSUmSHf5hWS2BUIhD/wQnJ/KIG3xZLQLOES9OdChPAruNH3iirjuTZ2DnCb16S u88Zvu6HiBowcFXzGkt4TZx5OnlxKLjiM/dqWQ== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We want to remove 'struct timeval' and related interfaces since this is generally not safe for use beyond 2038. For peak_usb, we can simplify the internal interface by using ktime_t directly. This should not change any behavior, but it avoids a few conversions. Signed-off-by: Arnd Bergmann --- drivers/net/can/usb/peak_usb/pcan_usb.c | 9 +++------ drivers/net/can/usb/peak_usb/pcan_usb_core.c | 15 +++++++-------- drivers/net/can/usb/peak_usb/pcan_usb_core.h | 3 +-- drivers/net/can/usb/peak_usb/pcan_usb_pro.c | 9 +++------ 4 files changed, 14 insertions(+), 22 deletions(-) -- 2.9.0 diff --git a/drivers/net/can/usb/peak_usb/pcan_usb.c b/drivers/net/can/usb/peak_usb/pcan_usb.c index 25a9b79cc42d..f530a80f5051 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb.c @@ -408,7 +408,6 @@ static int pcan_usb_decode_error(struct pcan_usb_msg_context *mc, u8 n, { struct sk_buff *skb; struct can_frame *cf; - struct timeval tv; enum can_state new_state; /* ignore this error until 1st ts received */ @@ -525,8 +524,8 @@ static int pcan_usb_decode_error(struct pcan_usb_msg_context *mc, u8 n, if (status_len & PCAN_USB_STATUSLEN_TIMESTAMP) { struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb); - peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv); - hwts->hwtstamp = timeval_to_ktime(tv); + peak_usb_get_ts_time(&mc->pdev->time_ref, mc->ts16, + &hwts->hwtstamp); } mc->netdev->stats.rx_packets++; @@ -610,7 +609,6 @@ static int pcan_usb_decode_data(struct pcan_usb_msg_context *mc, u8 status_len) u8 rec_len = status_len & PCAN_USB_STATUSLEN_DLC; struct sk_buff *skb; struct can_frame *cf; - struct timeval tv; struct skb_shared_hwtstamps *hwts; skb = alloc_can_skb(mc->netdev, &cf); @@ -658,9 +656,8 @@ static int pcan_usb_decode_data(struct pcan_usb_msg_context *mc, u8 status_len) } /* convert timestamp into kernel time */ - peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv); hwts = skb_hwtstamps(skb); - hwts->hwtstamp = timeval_to_ktime(tv); + peak_usb_get_ts_time(&mc->pdev->time_ref, mc->ts16, &hwts->hwtstamp); /* update statistics */ mc->netdev->stats.rx_packets++; diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c index 1ca76e03e965..695a75a9b4bb 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c @@ -148,11 +148,11 @@ void peak_usb_set_ts_now(struct peak_time_ref *time_ref, u32 ts_now) /* * compute timeval according to current ts and time_ref data */ -void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts, - struct timeval *tv) +void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *time) { /* protect from getting timeval before setting now */ if (time_ref->tv_host.tv_sec > 0) { + struct timeval tv; u64 delta_us; delta_us = ts - time_ref->ts_dev_2; @@ -164,10 +164,11 @@ void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts, delta_us *= time_ref->adapter->us_per_ts_scale; delta_us >>= time_ref->adapter->us_per_ts_shift; - *tv = time_ref->tv_host_0; - peak_usb_add_us(tv, (u32)delta_us); + tv = time_ref->tv_host_0; + peak_usb_add_us(&tv, (u32)delta_us); + *time = timeval_to_ktime(tv); } else { - *tv = ktime_to_timeval(ktime_get()); + *time = ktime_get(); } } @@ -178,10 +179,8 @@ int peak_usb_netif_rx(struct sk_buff *skb, struct peak_time_ref *time_ref, u32 ts_low, u32 ts_high) { struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb); - struct timeval tv; - peak_usb_get_ts_tv(time_ref, ts_low, &tv); - hwts->hwtstamp = timeval_to_ktime(tv); + peak_usb_get_ts_time(time_ref, ts_low, &hwts->hwtstamp); return netif_rx(skb); } diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.h b/drivers/net/can/usb/peak_usb/pcan_usb_core.h index c01316cac354..b9a221ea7e5c 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.h +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.h @@ -151,8 +151,7 @@ void peak_usb_init_time_ref(struct peak_time_ref *time_ref, const struct peak_usb_adapter *adapter); void peak_usb_update_ts_now(struct peak_time_ref *time_ref, u32 ts_now); void peak_usb_set_ts_now(struct peak_time_ref *time_ref, u32 ts_now); -void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts, - struct timeval *tv); +void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *tv); int peak_usb_netif_rx(struct sk_buff *skb, struct peak_time_ref *time_ref, u32 ts_low, u32 ts_high); void peak_usb_async_complete(struct urb *urb); diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c index bbdd6058cd2f..0105fbfea273 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c @@ -531,7 +531,6 @@ static int pcan_usb_pro_handle_canmsg(struct pcan_usb_pro_interface *usb_if, struct net_device *netdev = dev->netdev; struct can_frame *can_frame; struct sk_buff *skb; - struct timeval tv; struct skb_shared_hwtstamps *hwts; skb = alloc_can_skb(netdev, &can_frame); @@ -549,9 +548,9 @@ static int pcan_usb_pro_handle_canmsg(struct pcan_usb_pro_interface *usb_if, else memcpy(can_frame->data, rx->data, can_frame->can_dlc); - peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(rx->ts32), &tv); hwts = skb_hwtstamps(skb); - hwts->hwtstamp = timeval_to_ktime(tv); + peak_usb_get_ts_time(&usb_if->time_ref, le32_to_cpu(rx->ts32), + &hwts->hwtstamp); netdev->stats.rx_packets++; netdev->stats.rx_bytes += can_frame->can_dlc; @@ -571,7 +570,6 @@ static int pcan_usb_pro_handle_error(struct pcan_usb_pro_interface *usb_if, enum can_state new_state = CAN_STATE_ERROR_ACTIVE; u8 err_mask = 0; struct sk_buff *skb; - struct timeval tv; struct skb_shared_hwtstamps *hwts; /* nothing should be sent while in BUS_OFF state */ @@ -667,9 +665,8 @@ static int pcan_usb_pro_handle_error(struct pcan_usb_pro_interface *usb_if, dev->can.state = new_state; - peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(er->ts32), &tv); hwts = skb_hwtstamps(skb); - hwts->hwtstamp = timeval_to_ktime(tv); + peak_usb_get_ts_time(&usb_if->time_ref, le32_to_cpu(er->ts32), &hwts->hwtstamp); netdev->stats.rx_packets++; netdev->stats.rx_bytes += can_frame->can_dlc; netif_rx(skb);