From: Hangbin Liu <hangbin.liu@linux.dev>
To: Eric Dumazet <edumazet@google.com>
Cc: "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
netdev@vger.kernel.org, eric.dumazet@gmail.com,
Tonghao Zhang <tonghao@bamaicloud.com>,
Hangbin Liu <liuhangbin@gmail.com>,
Jay Vosburgh <jv@jvosburgh.net>
Subject: Re: [PATCH net] bonding: avoid ARP flood on RTNL contention in active-backup mode
Date: Tue, 1 Sep 2026 18:06:31 +0800 [thread overview]
Message-ID: <apajp0rQT8wwFx3Z@fedora> (raw)
In-Reply-To: <20260831090937.3342052-1-edumazet@google.com>
On Mon, Aug 31, 2026 at 09:09:37AM +0000, Eric Dumazet wrote:
> Commit f1986b3a9f2e ("net: bonding: skip the 2nd trylock when first one
> fail") changed bond_activebackup_arp_mon() to reschedule arp_work in
> 1 tick if the second rtnl_trylock() fails (for sending peer/slave
> notifications).
>
> However, by the time bond_activebackup_arp_mon() reaches this second lock
> check, bond_ab_arp_probe() has already been executed and sent an ARP probe.
> If RTNL remains contended, rescheduling every 1 tick causes
> bond_activebackup_arp_mon() to re-execute bond_ab_arp_probe() every jiffy,
> flooding the network with ARP probes at HZ frequency (e.g. 1000 pkts/sec)
> instead of respecting the configured arp_interval.
>
> If rtnl_trylock() fails at the second check, do not change delta_in_ticks
> to 1 so that the next ARP monitor execution is scheduled according to the
> configured arp_interval, matching the behavior in
> bond_loadbalance_arp_mon().
>
> Fixes: f1986b3a9f2e ("net: bonding: skip the 2nd trylock when first one fail")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> ---
> Cc: Tonghao Zhang <tonghao@bamaicloud.com>
> Cc: Hangbin Liu <liuhangbin@gmail.com>
> Cc: Jay Vosburgh <jv@jvosburgh.net>
> ---
> drivers/net/bonding/bond_main.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
> index ef9eb0c53c66..c23cf18a996a 100644
> --- a/drivers/net/bonding/bond_main.c
> +++ b/drivers/net/bonding/bond_main.c
> @@ -3871,10 +3871,8 @@ static void bond_activebackup_arp_mon(struct bonding *bond)
> rcu_read_unlock();
>
> if (READ_ONCE(bond->send_peer_notif) || should_notify_rtnl) {
> - if (!rtnl_trylock()) {
> - delta_in_ticks = 1;
> + if (!rtnl_trylock())
> goto re_arm;
> - }
>
> if (bond->send_peer_notif)
> bond_peer_notify_may_events(bond, true);
> --
> 2.55.0.897.gb25b4bd76c-goog
>
Thanks for the fix.
Reviewed-by: Hangbin Liu <liuhangbin@kylinos.cn>
next prev parent reply other threads:[~2026-09-01 10:06 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 9:09 [PATCH net] bonding: avoid ARP flood on RTNL contention in active-backup mode Eric Dumazet
2026-09-01 10:06 ` Hangbin Liu [this message]
2026-09-01 11:32 ` Paolo Abeni
2026-09-01 23:44 ` Jay Vosburgh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=apajp0rQT8wwFx3Z@fedora \
--to=hangbin.liu@linux.dev \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eric.dumazet@gmail.com \
--cc=horms@kernel.org \
--cc=jv@jvosburgh.net \
--cc=kuba@kernel.org \
--cc=liuhangbin@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=tonghao@bamaicloud.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.