aboutsummaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_output.c
diff options
context:
space:
mode:
authorJonas Rebmann <jre@pengutronix.de>2024-10-07 16:17:12 +0200
committerDavid S. Miller <davem@davemloft.net>2024-10-09 12:50:11 +0100
commit298f70b37144217c580490fddfcda850213f5250 (patch)
treecc85f0918ed95a7a898a069673ea967ad0f5f286 /net/ipv4/tcp_output.c
parent69a3272d787c3e5977927a2775ecbd1a847dcf11 (diff)
downloadlinux-298f70b37144217c580490fddfcda850213f5250.tar.gz
linux-298f70b37144217c580490fddfcda850213f5250.tar.bz2
linux-298f70b37144217c580490fddfcda850213f5250.zip
net: dpaa: use __dev_mc_sync in dpaa_set_rx_mode()
The original driver first unregisters then re-registers all multicast addresses in the struct net_device_ops::ndo_set_rx_mode() callback. As the networking stack calls ndo_set_rx_mode() if a single multicast address change occurs, a significant amount of time may be used to first unregister and then re-register unchanged multicast addresses. This leads to performance issues when tracking large numbers of multicast addresses. Replace the unregister and register loop and the hand crafted mc_addr_list list handling with __dev_mc_sync(), to only update entries which have changed. On profiling with an fsl_dpa NIC, this patch presented a speedup of around 40 when successively setting up 2000 multicast groups using setsockopt(), without drawbacks on smaller numbers of multicast groups. Signed-off-by: Jonas Rebmann <jre@pengutronix.de> Reviewed-by: Sean Anderson <sean.anderson@seco.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_output.c')
0 files changed, 0 insertions, 0 deletions