Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp18827pxb; Fri, 5 Mar 2021 13:07:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJy9y7RIvwmg5vSiFOWXKqxJim3dVTkazU6gVWL5WfSK6P95iH78A8VnWfdnZKqPk2yc+hSs X-Received: by 2002:a17:906:8447:: with SMTP id e7mr4274866ejy.523.1614978465292; Fri, 05 Mar 2021 13:07:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614978465; cv=none; d=google.com; s=arc-20160816; b=CLuDq4zQsjnS3NKxqt1lL4yeR8Mgyao0k1q9GkuSvBQCzCJm8l6W/c6jr+BQBKBNYP cPSCVH8YTDpuxajJklbbV+NwZbw2VoteJGyRTRZlaEfFyNOJ5ghBXdZJ3htXATIjTqhw 8rRhTbwaWTgzEW9AOb4PZ+eYOKiXQ947XYdsp69gYtRxw0NgRIoXIf7CiMYfmDNe1XRb 0e+kjnCJVuBrtCD219unHSDPkowOV1JDjF9fDH9TR59n8L0spxqzDufGd5kGJJfYgEpe +/28iZIi/4dmcOkTpR/hBSVm2iWXepUhSKY2ZMQU48egoL5KfxqGccYN8yAMGqtFn51M GtbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=KDZZjAmqxj3nBD/QR2JR4FDldbeTt04JdeJXJxPd6S8=; b=L9lviY7zUClqIE/EqoBKxAgDL+u+4wOz9Q5QAarqH61cfDBsZO1Lc7LXU5EU4kMWdx ZWy+KKKifsB5ObbNBfscr3FNx/jL8aYWH586zxFGhso8QtZFZXRKOm3abUSyfOVWtTE0 UQiDWlPFhVlhaylcCQ3+PUFXT7PqkxkxMi5z0Lr8G2gCIfdlD+zIXpTovU7lmfY2OlW/ M5EsNNrdyDfaYb7LbDr4JoRBv4smLZ7bk48U1dPm2Slo9PHJus95OM/XlUqtY7mBdx1y bqYmGP55sIt07F3DxXICkHyyBDWYR7Pc9jvx5VRnheAscl4lRJROjrHfFVKo0d1eGLq4 FmtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ieee.org header.s=google header.b=XTH+opjF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ieee.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v24si2215528edy.357.2021.03.05.13.07.22; Fri, 05 Mar 2021 13:07:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ieee.org header.s=google header.b=XTH+opjF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ieee.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229749AbhCEVDB (ORCPT + 99 others); Fri, 5 Mar 2021 16:03:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229935AbhCEVC6 (ORCPT ); Fri, 5 Mar 2021 16:02:58 -0500 Received: from mail-il1-x12b.google.com (mail-il1-x12b.google.com [IPv6:2607:f8b0:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C0BAC061760 for ; Fri, 5 Mar 2021 13:02:58 -0800 (PST) Received: by mail-il1-x12b.google.com with SMTP id k2so3275940ili.4 for ; Fri, 05 Mar 2021 13:02:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ieee.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=KDZZjAmqxj3nBD/QR2JR4FDldbeTt04JdeJXJxPd6S8=; b=XTH+opjF0lun0/BAu4EyV3ZJ3Lsqf7XiX/1rYoibwaP/F3bXcL4IlX4TdPRqoqoHye ++d4PzoH3qJZRxxRtwFzkkKpK/M4KGw9Mol9qW8269QqGlkw5EbaXydgP7ukM3iZD2b8 kdpWXWGqe9u1A9W+eA32UK1wbw2n+xgzWU834= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=KDZZjAmqxj3nBD/QR2JR4FDldbeTt04JdeJXJxPd6S8=; b=d+dfHirTIYBTbzNIFqWTTWKHHMabMuvo48woZm6ZbF2CRkql6QPik6FWLMbePLEGca 8fzyStsfiS6yRutkpjw6Ry25enQE9uGdtadxg4+dsuW6YlfYX7OUOGzBzqxJJQ5VaWdf vw/W2eU6LgubACOjHY5kUanlH+NKDKWsTfQjLbwQQzSE6W5jGP1fQkpOgMvF8Oxpa8N0 UouwrA+Ux385khqDLVCRp0gMgYJcALIWVg0k9ENwpZPgmlRfZFxx7zeLxcGv0tZCCh1C tyI3KFVFQWFmDcjWehqV1qCOjdgt5c077fOJrx3MGB0Hr1DBLfzx33Z4ZnEVkwTWRML2 7Yog== X-Gm-Message-State: AOAM531b/NuchiB9Dmr2g4FTqjrY9udi1Feg7eiBpb2dzX3MhUfKtjwA tTnGa6WFVvr0OF0V+NPS0HnHhpfikDjueQ== X-Received: by 2002:a05:6e02:b27:: with SMTP id e7mr10539153ilu.253.1614978177492; Fri, 05 Mar 2021 13:02:57 -0800 (PST) Received: from [172.22.22.4] (c-73-185-129-58.hsd1.mn.comcast.net. [73.185.129.58]) by smtp.googlemail.com with ESMTPSA id k3sm1808484ioj.35.2021.03.05.13.02.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Mar 2021 13:02:56 -0800 (PST) Subject: Re: [PATCH net-next 2/6] net: qualcomm: rmnet: simplify some byte order logic To: Bjorn Andersson , Alex Elder Cc: subashab@codeaurora.org, stranche@codeaurora.org, davem@davemloft.net, kuba@kernel.org, sharathv@codeaurora.org, evgreen@chromium.org, cpratapa@codeaurora.org, elder@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org References: <20210304223431.15045-1-elder@linaro.org> <20210304223431.15045-3-elder@linaro.org> From: Alex Elder Message-ID: <9f1fb37b-90cb-a855-cfa0-3c0e6a234b48@ieee.org> Date: Fri, 5 Mar 2021 15:02:56 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/4/21 10:07 PM, Bjorn Andersson wrote: > On Thu 04 Mar 16:34 CST 2021, Alex Elder wrote: > >> In rmnet_map_ipv4_ul_csum_header() and rmnet_map_ipv6_ul_csum_header() >> the offset within a packet at which checksumming should commence is >> calculated. This calculation involves byte swapping and a forced type >> conversion that makes it hard to understand. >> >> Simplify this by computing the offset in host byte order, then >> converting the result when assigning it into the header field. >> >> Signed-off-by: Alex Elder >> --- >> .../ethernet/qualcomm/rmnet/rmnet_map_data.c | 22 ++++++++++--------- >> 1 file changed, 12 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c >> index 21d38167f9618..bd1aa11c9ce59 100644 >> --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c >> +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c >> @@ -197,12 +197,13 @@ rmnet_map_ipv4_ul_csum_header(void *iphdr, >> struct rmnet_map_ul_csum_header *ul_header, >> struct sk_buff *skb) >> { >> - struct iphdr *ip4h = (struct iphdr *)iphdr; >> - __be16 *hdr = (__be16 *)ul_header, offset; >> + __be16 *hdr = (__be16 *)ul_header; >> + struct iphdr *ip4h = iphdr; >> + u16 offset; >> + >> + offset = skb_transport_header(skb) - (unsigned char *)iphdr; >> + ul_header->csum_start_offset = htons(offset); >> >> - offset = htons((__force u16)(skb_transport_header(skb) - > > Just curious, why does this require a __force, or even a cast? The argument to htons() has type __u16. In this case it is passed the difference between pointers, which will have type ptrdiff_t, which is certainly bigger than 16 bits. I don't think the __force is needed, but the cast to u16 might just be making the conversion to the smaller type explicit. Here too though, I don't think it's necessary. -Alex > Regardless, your proposed way of writing it is easier to read. > > Reviewed-by: Bjorn Andersson > > Regards, > Bjorn > >> - (unsigned char *)iphdr)); >> - ul_header->csum_start_offset = offset; >> ul_header->csum_insert_offset = skb->csum_offset; >> ul_header->csum_enabled = 1; >> if (ip4h->protocol == IPPROTO_UDP) >> @@ -239,12 +240,13 @@ rmnet_map_ipv6_ul_csum_header(void *ip6hdr, >> struct rmnet_map_ul_csum_header *ul_header, >> struct sk_buff *skb) >> { >> - struct ipv6hdr *ip6h = (struct ipv6hdr *)ip6hdr; >> - __be16 *hdr = (__be16 *)ul_header, offset; >> + __be16 *hdr = (__be16 *)ul_header; >> + struct ipv6hdr *ip6h = ip6hdr; >> + u16 offset; >> + >> + offset = skb_transport_header(skb) - (unsigned char *)ip6hdr; >> + ul_header->csum_start_offset = htons(offset); >> >> - offset = htons((__force u16)(skb_transport_header(skb) - >> - (unsigned char *)ip6hdr)); >> - ul_header->csum_start_offset = offset; >> ul_header->csum_insert_offset = skb->csum_offset; >> ul_header->csum_enabled = 1; >> >> -- >> 2.20.1 >>