sctp: deduplicate identical skb_checksum_ops
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> Acked-by: Neil Horman <nhorman@tuxdriver.com> Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2544af0344
commit
c3e933a5b8
@ -58,19 +58,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);
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user