Message ID | 1588622293-3463-1-git-send-email-pavel.contrib@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Skip setting the same hwaddr to a lag port if not needed | expand |
Mon, May 04, 2020 at 09:58:13PM CEST, pavel.contrib@gmail.com wrote: >Avoid setting the same mac address to a LAG port, >if the LAG port already has the right one. > >Benefits: >1. Make libteam avoid changing settings of a link, >which prevents the kernel from sending multiply Netlink >messages. Netlink message listeners don't need to react >to the Netlink messages. > >2. Libteam works faster. It doesn't need to use any >syscalls and go deep into libteam functions in the case >when nothing is changed. A straightforward check and >libteam avoid much work. > >In the case, when libteam user has hundreds of ports, >and up to a hundred LAGs, this patch saves them significant >CPU time. > >Signed-off-by: Pavel Shirshov <pavel.contrib@gmail.com> applied, thanks!
diff --git a/teamd/teamd.c b/teamd/teamd.c index 8cdc16d..f955b19 100644 --- a/teamd/teamd.c +++ b/teamd/teamd.c @@ -837,7 +837,14 @@ static int teamd_set_hwaddr(struct teamd_context *ctx) err = -EINVAL; goto free_hwaddr; } - err = team_hwaddr_set(ctx->th, ctx->ifindex, hwaddr, hwaddr_len); + + if (memcmp(hwaddr, ctx->hwaddr, hwaddr_len)) + err = team_hwaddr_set(ctx->th, ctx->ifindex, hwaddr, hwaddr_len); + else { + err = 0; + teamd_log_dbg(ctx, "Skip setting same hwaddr string: \"%s\".", hwaddr_str); + } + if (!err) ctx->hwaddr_explicit = true; free_hwaddr:
Avoid setting the same mac address to a LAG port, if the LAG port already has the right one. Benefits: 1. Make libteam avoid changing settings of a link, which prevents the kernel from sending multiply Netlink messages. Netlink message listeners don't need to react to the Netlink messages. 2. Libteam works faster. It doesn't need to use any syscalls and go deep into libteam functions in the case when nothing is changed. A straightforward check and libteam avoid much work. In the case, when libteam user has hundreds of ports, and up to a hundred LAGs, this patch saves them significant CPU time. Signed-off-by: Pavel Shirshov <pavel.contrib@gmail.com> --- teamd/teamd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)