]> git.baikalelectronics.ru Git - kernel.git/commit
net: avoid unneeded atomic operation in ip*_append_data()
authorPaolo Abeni <pabeni@redhat.com>
Wed, 4 Apr 2018 12:30:01 +0000 (14:30 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Apr 2018 15:53:08 +0000 (11:53 -0400)
commitdfe86c6aeb6a7ea80068ffbcf59026394eb0e3ae
tree8ebe5055cb50b610f373a711c9198ac2ffe392aa
parent95e1cb3096187882c41b5fcd1be131f4fd872b11
net: avoid unneeded atomic operation in ip*_append_data()

After commit d625f520d1ee ("ipv4: factorize sk_wmem_alloc updates
done by __ip_append_data()") and commit 6629e79b1cbb ("ipv6:
factorize sk_wmem_alloc updates done by __ip6_append_data()"),
when transmitting sub MTU datagram, an addtional, unneeded atomic
operation is performed in ip*_append_data() to update wmem_alloc:
in the above condition the delta is 0.

The above cause small but measurable performance regression in UDP
xmit tput test with packet size below MTU.

This change avoids such overhead updating wmem_alloc only if
wmem_alloc_delta is non zero.

The error path is left intentionally unmodified: it's a slow path
and simplicity is preferred to performances.

Fixes: d625f520d1ee ("ipv4: factorize sk_wmem_alloc updates done by __ip_append_data()")
Fixes: 6629e79b1cbb ("ipv6: factorize sk_wmem_alloc updates done by __ip6_append_data()")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_output.c
net/ipv6/ip6_output.c