]> git.baikalelectronics.ru Git - kernel.git/commit
net: bridge: switchdev: recycle unused hwdoms
authorTobias Waldekranz <tobias@waldekranz.com>
Wed, 21 Jul 2021 16:24:00 +0000 (19:24 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 Jul 2021 07:26:23 +0000 (00:26 -0700)
commitbb50456dd8aa4e9660a91c069caeb460ccceee43
treeece8b1dcaf1c398f100ee29f5e4629918649c4ce
parent8fb245c8fa089a794faf03310749e60f174292dd
net: bridge: switchdev: recycle unused hwdoms

Since hwdoms have only been used thus far for equality comparisons, the
bridge has used the simplest possible assignment policy; using a
counter to keep track of the last value handed out.

With the upcoming transmit offloading, we need to perform set
operations efficiently based on hwdoms, e.g. we want to answer
questions like "has this skb been forwarded to any port within this
hwdom?"

Move to a bitmap-based allocation scheme that recycles hwdoms once all
members leaves the bridge. This means that we can use a single
unsigned long to keep track of the hwdoms that have received an skb.

v1->v2: convert the typedef DECLARE_BITMAP(br_hwdom_map_t, BR_HWDOM_MAX)
        into a plain unsigned long.
v2->v6: none

Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_if.c
net/bridge/br_private.h
net/bridge/br_switchdev.c