From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2A40BC48BE0 for ; Fri, 11 Jun 2021 19:07:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 14C60613D0 for ; Fri, 11 Jun 2021 19:07:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231698AbhFKTJA (ORCPT ); Fri, 11 Jun 2021 15:09:00 -0400 Received: from mail-io1-f41.google.com ([209.85.166.41]:43828 "EHLO mail-io1-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231516AbhFKTI4 (ORCPT ); Fri, 11 Jun 2021 15:08:56 -0400 Received: by mail-io1-f41.google.com with SMTP id k16so32221480ios.10 for ; Fri, 11 Jun 2021 12:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5kMsHbtfUl/gFd/yKPF67UEpU7y0HdcT6eUdvozwYl4=; b=MR1UKLevxJ0kBzVEnTyu5RSMaakkR0f1eW2InUuTQl6S8weA9+LyD4n5klvNOOkdAk KXxZNAyQ+mSz2sLEQ0409GH41bWdynOnTn9QU+9G9dg+SkzEl8+fSAoH+j5GdG7DBBfX Q5i9tgrXWad6rzAAORb3I1/6kyHsZozQo1HfQ9ka09elIgsoFcg54LKw7AmG7b9K9rPi 0opc9w1YzM7VvfpIwvDjAa2bxTLHHi2CVtZk4OPnpX579Oobxvu8LVRGxC/sRH5jVpiJ LRUnbQ782fVYla3Y6rhj32jeXXjra1TW7uCtkkDP+38YXGaYddgcc3Ozd31Yf+0leL1K YGkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5kMsHbtfUl/gFd/yKPF67UEpU7y0HdcT6eUdvozwYl4=; b=ixN7QwDcNW3zCVdC7jffgiKTm2xkhu8B8ujqVmbtz1UyUrh8L50tbLktBLSDbtjqjw VbDV1p+fbP5mJOec0inqYCk9g+nQs0TRTaZ2LRcjTycdOFltyY0oRXJKHZ7qwPVDVYuR rHSlm1VrOKoQcR5ffg00VOTOm9qjoaHg6ybl/ofvlbljxOsZqpAcHIY9UKF/JPZk+JvE 5r0woNCJ5tWAGDqQo2MCtDWpmI9HCeLeuDAejRHRlP0sR0oh4clypAQ9IWC6Ri0R9mDE eq/cEgxOAfzbND1sluvWvBMg6v+pp9UDiBcieldDFrucLOCqY+TV+4Bi6n0QMSS4rPE4 tWZA== X-Gm-Message-State: AOAM532163I/wfTpIkXcx22ypqZcZDsHbK4lCu0owO74WGqvaa7MB2z3 gCW+VQ0e56ulwGlgOl/WMhvE4A== X-Google-Smtp-Source: ABdhPJwPICaozry8HSVHveEIYhWk5Q+0pXygTkdgit/m1ogVK2Mo4kgkNoLRpHHT+0uw3Yt2JA3OFw== X-Received: by 2002:a5d:8986:: with SMTP id m6mr4220177iol.87.1623438341965; Fri, 11 Jun 2021 12:05:41 -0700 (PDT) Received: from presto.localdomain (c-73-185-129-58.hsd1.mn.comcast.net. [73.185.129.58]) by smtp.gmail.com with ESMTPSA id p9sm3936566ilc.63.2021.06.11.12.05.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Jun 2021 12:05:41 -0700 (PDT) From: Alex Elder To: subashab@codeaurora.org, stranche@codeaurora.org, davem@davemloft.net, kuba@kernel.org Cc: bjorn.andersson@linaro.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 8/8] net: qualcomm: rmnet: avoid unnecessary IPv6 byte-swapping Date: Fri, 11 Jun 2021 14:05:29 -0500 Message-Id: <20210611190529.3085813-9-elder@linaro.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210611190529.3085813-1-elder@linaro.org> References: <20210611190529.3085813-1-elder@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the previous patch IPv4 download checksum offload code was updated to avoid unnecessary byte swapping, based on properties of the Internet checksum algorithm. This patch makes comparable changes to the IPv6 download checksum offload handling. Signed-off-by: Alex Elder --- .../ethernet/qualcomm/rmnet/rmnet_map_data.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c index 39f198d7595bd..d4d23ab446ef5 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c @@ -123,10 +123,11 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb, struct ipv6hdr *ip6h = (struct ipv6hdr *)skb->data; void *txporthdr = skb->data + sizeof(*ip6h); __sum16 *csum_field, pseudo_csum, csum_temp; - u16 csum_value, csum_value_final; __be16 ip6_hdr_csum, addend; __sum16 ip6_payload_csum; __be16 ip_header_csum; + u16 csum_value_final; + __be16 csum_value; u32 length; /* Checksum offload is only supported for UDP and TCP protocols; @@ -144,21 +145,21 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb, * of the IP header from the trailer checksum. We then add the * checksum computed over the pseudo header. */ - csum_value = ~ntohs(csum_trailer->csum_value); + csum_value = ~csum_trailer->csum_value; ip_header_csum = (__force __be16)ip_fast_csum(ip6h, sizeof(*ip6h) / 4); - ip6_hdr_csum = (__force __be16)~ntohs(ip_header_csum); + ip6_hdr_csum = (__force __be16)~ip_header_csum; ip6_payload_csum = csum16_sub((__force __sum16)csum_value, ip6_hdr_csum); length = (ip6h->nexthdr == IPPROTO_UDP) ? ntohs(((struct udphdr *)txporthdr)->len) : ntohs(ip6h->payload_len); - pseudo_csum = ~(csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, - length, ip6h->nexthdr, 0)); - addend = (__force __be16)ntohs((__force __be16)pseudo_csum); + pseudo_csum = ~csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, + length, ip6h->nexthdr, 0); + addend = (__force __be16)pseudo_csum; pseudo_csum = csum16_add(ip6_payload_csum, addend); - addend = (__force __be16)ntohs((__force __be16)*csum_field); + addend = (__force __be16)*csum_field; csum_temp = ~csum16_sub(pseudo_csum, addend); csum_value_final = (__force u16)csum_temp; @@ -179,7 +180,7 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb, } } - if (csum_value_final == ntohs((__force __be16)*csum_field)) { + if (csum_value_final == (__force u16)*csum_field) { priv->stats.csum_ok++; return 0; } else { -- 2.27.0