Re: [PATCH net-next v2 0/3] net: bridge: convert multicast to generic rhashtable
From: Nikolay Aleksandrov Date: Wed, 5 Dec 2018 01:45:16 +0200 > On a related note I saw Paul's call_rcu patches hit, so I'll wait for those > to go in and will rebase on top of them before sending the v3 as the bridge > change will have a conflict with this set. They aren't going in via my tree, so I wouldn't wait for that before you respin.
Re: [PATCH net-next v2 0/3] net: bridge: convert multicast to generic rhashtable
On 12/4/18 5:01 PM, Nikolay Aleksandrov wrote: > Hi, > The current bridge multicast code uses a custom rhashtable > implementation which predates the generic rhashtable API. Patch 01 > converts it to use the generic kernel rhashtable which simplifies the > code a lot and removes duplicated functionality. The convert also makes > hash_elasticity obsolete as the generic rhashtable already has such > checks and has a fixed elasticity of RHT_ELASTICITY (16 currently) so we > emit a warning whenever elasticity is set and return RHT_ELASTICITY when > read (patch 02). Since now we have the generic rhashtable which > autoshrinks we can be more liberal with the default hash maximum so patch > 03 increases it to 4096 and moves it to a define in br_private.h. > > v2: send the latest version of the set which handles when IGMP snooping > is not defined, changes are in patch 01 > > Thanks, > Nik Unfortunately I'll have to send a v3, I missed the fact that rhashtable_lookup requires RCU to be always held and even though br_mdb_ip_get() does the lookups under multicast_lock, we can still trigger suspicious RCU usage because RCU is not held in those protected places. Need to add a non-rcu mdb lookup variant. On a related note I saw Paul's call_rcu patches hit, so I'll wait for those to go in and will rebase on top of them before sending the v3 as the bridge change will have a conflict with this set. Thanks, Nik
Re: [PATCH net-next v2 0/3] net: bridge: convert multicast to generic rhashtable
On 04/12/2018 17:01, Nikolay Aleksandrov wrote: > Hi, > The current bridge multicast code uses a custom rhashtable > implementation which predates the generic rhashtable API. Patch 01 > converts it to use the generic kernel rhashtable which simplifies the > code a lot and removes duplicated functionality. The convert also makes > hash_elasticity obsolete as the generic rhashtable already has such > checks and has a fixed elasticity of RHT_ELASTICITY (16 currently) so we > emit a warning whenever elasticity is set and return RHT_ELASTICITY when > read (patch 02). Since now we have the generic rhashtable which > autoshrinks we can be more liberal with the default hash maximum so patch > 03 increases it to 4096 and moves it to a define in br_private.h. > > v2: send the latest version of the set which handles when IGMP snooping > is not defined, changes are in patch 01 > > Thanks, > Nik > > > Nikolay Aleksandrov (3): > net: bridge: convert multicast to generic rhashtable > net: bridge: mark hash_elasticity as obsolete > net: bridge: increase multicast's default maximum number of entries > > net/bridge/br_device.c| 10 + > net/bridge/br_mdb.c | 120 +-- > net/bridge/br_multicast.c | 406 +++--- > net/bridge/br_netlink.c | 11 +- > net/bridge/br_private.h | 41 ++-- > net/bridge/br_sysfs_br.c | 6 +- > 6 files changed, 156 insertions(+), 438 deletions(-) > +CC bridge list. Cheers, Nik
[PATCH net-next v2 0/3] net: bridge: convert multicast to generic rhashtable
Hi, The current bridge multicast code uses a custom rhashtable implementation which predates the generic rhashtable API. Patch 01 converts it to use the generic kernel rhashtable which simplifies the code a lot and removes duplicated functionality. The convert also makes hash_elasticity obsolete as the generic rhashtable already has such checks and has a fixed elasticity of RHT_ELASTICITY (16 currently) so we emit a warning whenever elasticity is set and return RHT_ELASTICITY when read (patch 02). Since now we have the generic rhashtable which autoshrinks we can be more liberal with the default hash maximum so patch 03 increases it to 4096 and moves it to a define in br_private.h. v2: send the latest version of the set which handles when IGMP snooping is not defined, changes are in patch 01 Thanks, Nik Nikolay Aleksandrov (3): net: bridge: convert multicast to generic rhashtable net: bridge: mark hash_elasticity as obsolete net: bridge: increase multicast's default maximum number of entries net/bridge/br_device.c| 10 + net/bridge/br_mdb.c | 120 +-- net/bridge/br_multicast.c | 406 +++--- net/bridge/br_netlink.c | 11 +- net/bridge/br_private.h | 41 ++-- net/bridge/br_sysfs_br.c | 6 +- 6 files changed, 156 insertions(+), 438 deletions(-) -- 2.17.2