Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp6499347ybi; Wed, 29 May 2019 08:41:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqwCL7ULYDtsu56t9Ejy8/26xNqL2Z5p4qA4pA09ohmcfbH7bQpfQKOKoKIIKrrJkWzgzg5X X-Received: by 2002:a62:3145:: with SMTP id x66mr125771823pfx.223.1559144485166; Wed, 29 May 2019 08:41:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559144485; cv=none; d=google.com; s=arc-20160816; b=FeN8rjz0v4kK46c2V3hBF4OLMjpXdO6WMafx6rXw3xPG+5XsDOTQ4W9DEIIewdNOmN Jc0MInadJl0sOhQldH6s/yKQusrhMtSH0/RDEASMsmuzqhxKthedaLnfHXArVe5Gf5D7 vWsYVcc7EO2PW1HUmW6jL1SYLHeE2aSBW1h06RUvvTvUix9ehRA5o1k/d0M50GigIFo1 suP8oAImocbIwUuKgR4rIWfqP9mRr39KDaRs1WDxgXV6Xtdvioy5WjBJgbH248IzSFqu TjdBuVYCbjaICfHXE4I4z2mJ4VUj1xf4Tke7CrUNz+2DW/b4uO7RgNoyAqy132JkwaIZ ckqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=wA/ZRCMpAdjeog1co5RlW0FUMxyaCyOeXXfAXJGss50=; b=BCE04x084m/rwFqjN9J7fFGTszmrSi0Q4YiEVU0ml9MPf2sTqzocgHE4Z7iEqDFi72 eHeh3L96OxfJMsgsuUz2si2AobtCE42Ri+zgQr33kq21l9PiqI7nLGnBTmIE3rGwihhp 7gPV/hbjocUsvz4DEm6dr3Ky4katfI26IHBweWHebvwi+7gej/Ad9N+sSOzQDwQedhZw zqxUKDGx4VeEpm5echYNLeix7vcQ7EiPrarr/UtzN2Zj3BZcT44blz2bovUGsU0ALr4j 1EwGuMaqJI/G05RZ2pHDe0MV0yxQEG+qAf+YXoN/uU7wz+Jv19PEpKLA3qCQ7JKspwjd wvGA== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u18si24697338plq.345.2019.05.29.08.41.07; Wed, 29 May 2019 08:41:25 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726943AbfE2Pjr (ORCPT + 99 others); Wed, 29 May 2019 11:39:47 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:38704 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726238AbfE2Pjq (ORCPT ); Wed, 29 May 2019 11:39:46 -0400 Received: by mail-wm1-f68.google.com with SMTP id t5so1934212wmh.3 for ; Wed, 29 May 2019 08:39:44 -0700 (PDT) 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:mime-version :content-transfer-encoding; bh=wA/ZRCMpAdjeog1co5RlW0FUMxyaCyOeXXfAXJGss50=; b=Snh9C/TPoZPrg5dP2dC/KhnENooBDyMobALuII1lFma9XzwlUgGCua6Kf4NvxDxvK2 gP/AS2rpIBK/9Bf4YbUO2MVbfglFUVxg0ObGpkzkgzFClPwACnaYfliCtgCW/jJaCNjl O9YCADaZgXzW3DqeYdsecabw1qJLsI+OkYDuoQhGDomO9UyKJaPBk2oxLVMcV2TMKqqf phCwKuWc3ryQV0AsfCymtWqZ6sFItvmftWXYJdhVvyEljoiRxhdfzyCOutun/vGNIW4q yF9WYSWdGPSjJWkOTb5pgyaDxe+7TvV2JKpw6eUzXVTmgpQLZb7aktYTTT3rAZicS/vX yU2Q== X-Gm-Message-State: APjAAAUnqYsUDNilJfMunamr87NOUboe9WTpfZO1p/V2V0xwqoY5jAXT I9CLnXT9c4gP/s3oRWDXKFiYsA== X-Received: by 2002:a1c:a002:: with SMTP id j2mr7184902wme.131.1559144383296; Wed, 29 May 2019 08:39:43 -0700 (PDT) Received: from raver.teknoraver.net (net-93-144-152-91.cust.dsl.teletu.it. [93.144.152.91]) by smtp.gmail.com with ESMTPSA id d26sm4930371wmb.4.2019.05.29.08.39.42 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 29 May 2019 08:39:42 -0700 (PDT) From: Matteo Croce To: linux-sctp@vger.kernel.org, netdev@vger.kernel.org Cc: Vlad Yasevich , Neil Horman , Marcelo Ricardo Leitner , linux-kernel@vger.kernel.org Subject: [PATCH net-next] sctp: deduplicate identical skb_checksum_ops Date: Wed, 29 May 2019 17:39:41 +0200 Message-Id: <20190529153941.12166-1-mcroce@redhat.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The same skb_checksum_ops struct is defined twice in two different places, leading to code duplication. Declare it as a global variable into a common header instead of allocating it on the stack on each function call. bloat-o-meter reports a slight code shrink. add/remove: 1/1 grow/shrink: 0/10 up/down: 128/-1282 (-1154) Function old new delta sctp_csum_ops - 128 +128 crc32c_csum_ops 16 - -16 sctp_rcv 6616 6583 -33 sctp_packet_pack 4542 4504 -38 nf_conntrack_sctp_packet 4980 4926 -54 execute_masked_set_action 6453 6389 -64 tcf_csum_sctp 575 428 -147 sctp_gso_segment 1292 1126 -166 sctp_csum_check 579 412 -167 sctp_snat_handler 957 772 -185 sctp_dnat_handler 1321 1132 -189 l4proto_manip_pkt 2536 2313 -223 Total: Before=359297613, After=359296459, chg -0.00% Reviewed-by: Xin Long Signed-off-by: Matteo Croce --- include/net/sctp/checksum.h | 12 +++++++----- net/sctp/offload.c | 7 +------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h index 314699333bec..5a9bb09f32b6 100644 --- a/include/net/sctp/checksum.h +++ b/include/net/sctp/checksum.h @@ -43,19 +43,21 @@ static inline __wsum sctp_csum_combine(__wsum csum, __wsum csum2, (__force __u32)csum2, len); } +static const struct skb_checksum_ops sctp_csum_ops = { + .update = sctp_csum_update, + .combine = sctp_csum_combine, +}; + static inline __le32 sctp_compute_cksum(const struct sk_buff *skb, unsigned int offset) { struct sctphdr *sh = (struct sctphdr *)(skb->data + offset); - const struct skb_checksum_ops ops = { - .update = sctp_csum_update, - .combine = sctp_csum_combine, - }; __le32 old = sh->checksum; __wsum new; sh->checksum = 0; - new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0, &ops); + new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0, + &sctp_csum_ops); sh->checksum = old; return cpu_to_le32((__force __u32)new); diff --git a/net/sctp/offload.c b/net/sctp/offload.c index edfcf16e704c..dac46dfadab5 100644 --- a/net/sctp/offload.c +++ b/net/sctp/offload.c @@ -103,11 +103,6 @@ static const struct net_offload sctp6_offload = { }, }; -static const struct skb_checksum_ops crc32c_csum_ops = { - .update = sctp_csum_update, - .combine = sctp_csum_combine, -}; - int __init sctp_offload_init(void) { int ret; @@ -120,7 +115,7 @@ int __init sctp_offload_init(void) if (ret) goto ipv4; - crc32c_csum_stub = &crc32c_csum_ops; + crc32c_csum_stub = &sctp_csum_ops; return ret; ipv4: -- 2.21.0