Skip to content

Commit 63ed8de

Browse files
TaeheeYoodavem330
authored andcommitted
mld: add mc_lock for protecting per-interface mld data
The purpose of this lock is to avoid a bottleneck in the query/report event handler logic. By previous patches, almost all mld data is protected by RTNL. So, the query and report event handler, which is data path logic acquires RTNL too. Therefore if a lot of query and report events are received, it uses RTNL for a long time. So it makes the control-plane bottleneck because of using RTNL. In order to avoid this bottleneck, mc_lock is added. mc_lock protect only per-interface mld data and per-interface mld data is used in the query/report event handler logic. So, no longer rtnl_lock is needed in the query/report event handler logic. Therefore bottleneck will be disappeared by mc_lock. Suggested-by: Cong Wang <xiyou.wangcong@gmail.com> Signed-off-by: Taehee Yoo <ap420073@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent f185de2 commit 63ed8de

File tree

2 files changed

+194
-116
lines changed

2 files changed

+194
-116
lines changed

include/net/if_inet6.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ struct inet6_dev {
190190

191191
spinlock_t mc_query_lock; /* mld query queue lock */
192192
spinlock_t mc_report_lock; /* mld query report lock */
193+
struct mutex mc_lock; /* mld global lock */
193194

194195
struct ifacaddr6 *ac_list;
195196
rwlock_t lock;

0 commit comments

Comments
 (0)