From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
To: netdev@vger.kernel.org
Cc: roopa@cumulusnetworks.com, davem@davemloft.net,
stephen@networkplumber.org, bridge@lists.linux-foundation.org,
idosch@idosch.org,
Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Subject: [PATCH net-next v2 0/9] net: bridge: convert bool options to bits
Date: Wed, 26 Sep 2018 17:00:58 +0300 [thread overview]
Message-ID: <20180926140107.10218-1-nikolay@cumulusnetworks.com> (raw)
Hi,
A lot of boolean bridge options have been added around the net_bridge
structure resulting in holes and more importantly different cache lines
that need to be fetched in the fast path. This set moves all of those
to bits in a bitfield which resides in a hot cache line thus reducing
the size of net_bridge, the number of holes and the number of cache
lines needed for the fast path.
The set is also sent in preparation for new boolean options to avoid
spreading them in the structure and making new holes.
One nice side-effect is that we avoid potential race conditions by using
the bitops since some of the options were bits being directly set in
parallel risking hard to debug issues (has_ipv6_addr).
Before:
size: 1184, holes: 8, sum holes: 30
After:
size: 1160, holes: 3, sum holes: 7
Patch 01 is a trivial style fix
Patch 02 adds the new options bitfield and converts the vlan boolean
options to bits
Patches 03-08 convert the rest of the boolean options to bits
Patch 09 re-arranges a few fields in net_bridge to further reduce size
v2: patch 09: remove the comment about offload_fwd_mark in net_bridge and
leave it in the last 4 bytes, thanks to Ido for spotting it
Stephen, I've added your reviewed-by in patches 01-08, only removed it
from patch 09 as the patch has changed.
Thanks,
Nik
Nikolay Aleksandrov (9):
net: bridge: make struct opening bracket consistent
net: bridge: add bitfield for options and convert vlan opts
net: bridge: convert nf call options to bits
net: bridge: convert group_addr_set option to a bit
net: bridge: convert and rename mcast disabled
net: bridge: convert mcast options to bits
net: bridge: convert neigh_suppress_enabled option to a bit
net: bridge: convert mtu_set_by_user to a bit
net: bridge: pack net_bridge better
net/bridge/br.c | 16 ++++++++++
net/bridge/br_arp_nd_proxy.c | 13 ++++----
net/bridge/br_device.c | 6 ++--
net/bridge/br_if.c | 4 +--
net/bridge/br_input.c | 2 +-
net/bridge/br_mdb.c | 6 ++--
net/bridge/br_multicast.c | 54 ++++++++++++++++-----------------
net/bridge/br_netfilter_hooks.c | 7 +++--
net/bridge/br_netlink.c | 31 ++++++++++---------
net/bridge/br_private.h | 66 +++++++++++++++++++++++------------------
net/bridge/br_sysfs_br.c | 32 ++++++++++----------
net/bridge/br_vlan.c | 30 ++++++++++---------
12 files changed, 151 insertions(+), 116 deletions(-)
--
2.11.0
next reply other threads:[~2018-09-26 20:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-26 14:00 Nikolay Aleksandrov [this message]
2018-09-26 14:00 ` [PATCH net-next v2 1/9] net: bridge: make struct opening bracket consistent Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 2/9] net: bridge: add bitfield for options and convert vlan opts Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 3/9] net: bridge: convert nf call options to bits Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 4/9] net: bridge: convert group_addr_set option to a bit Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 5/9] net: bridge: convert and rename mcast disabled Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 6/9] net: bridge: convert mcast options to bits Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 7/9] net: bridge: convert neigh_suppress_enabled option to a bit Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 8/9] net: bridge: convert mtu_set_by_user " Nikolay Aleksandrov
2018-09-26 14:01 ` [PATCH net-next v2 9/9] net: bridge: pack net_bridge better Nikolay Aleksandrov
2018-09-26 14:04 ` [PATCH net-next v2 0/9] net: bridge: convert bool options to bits Nikolay Aleksandrov
2018-09-26 17:04 ` 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=20180926140107.10218-1-nikolay@cumulusnetworks.com \
--to=nikolay@cumulusnetworks.com \
--cc=bridge@lists.linux-foundation.org \
--cc=davem@davemloft.net \
--cc=idosch@idosch.org \
--cc=netdev@vger.kernel.org \
--cc=roopa@cumulusnetworks.com \
--cc=stephen@networkplumber.org \
/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