From: Neil Horman <nhorman@tuxdriver.com>
To: Matteo Croce <mcroce@redhat.com>
Cc: linux-sctp@vger.kernel.org, netdev@vger.kernel.org,
Vlad Yasevich <vyasevich@gmail.com>,
Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next] sctp: deduplicate identical skb_checksum_ops
Date: Wed, 29 May 2019 12:59:06 -0400 [thread overview]
Message-ID: <20190529165906.GD31099@hmswarspite.think-freely.org> (raw)
In-Reply-To: <20190529153941.12166-1-mcroce@redhat.com>
On Wed, May 29, 2019 at 05:39:41PM +0200, Matteo Croce wrote:
> 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 <lucien.xin@gmail.com>
> Signed-off-by: Matteo Croce <mcroce@redhat.com>
> ---
> 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
>
>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
next prev parent reply other threads:[~2019-05-29 16:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-29 15:39 Matteo Croce
2019-05-29 16:59 ` Neil Horman [this message]
2019-05-29 17:10 ` Marcelo Ricardo Leitner
2019-05-30 21:36 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190529165906.GD31099@hmswarspite.think-freely.org \
--to=nhorman@tuxdriver.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sctp@vger.kernel.org \
--cc=marcelo.leitner@gmail.com \
--cc=mcroce@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=vyasevich@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®