|
|
Log in / Subscribe / Register

net: add retry mechanism to ndo_set_rx_mode_async

From:  Stanislav Fomichev <sdf.kernel-AT-gmail.com>
To:  netdev-AT-vger.kernel.org
Subject:  [PATCH net-next 0/3] net: add retry mechanism to ndo_set_rx_mode_async
Date:  Tue, 26 May 2026 18:41:14 -0700
Message-ID:  <20260527014117.1401809-1-sdf@fomichev.me>
Cc:  davem-AT-davemloft.net, edumazet-AT-google.com, kuba-AT-kernel.org, pabeni-AT-redhat.com, Zijing Yin <yzjaurora-AT-gmail.com>
Archive-link:  Article

Original async ndo_set_rx_mode work left one place where we do netdev_WARN
in response to a ENOMEM. The intent was to see whether actual real
users can hit that (adding uc/mc under memory pressure seems like a
very unlikely thing to do). However, it was quickly triggered by
syzbot's failslab. Add a retry mechanism and downgrade netdev_WARN
to netdev_err. The retry logic is a typical exponential backoff:
1, 2, 4, 8 seconds, 15 in total, hopefully enough for a system to resolve
memory pressure.

Link: https://lore.kernel.org/netdev/20260416185712.2155425-1-s...
Link: https://lore.kernel.org/netdev/20260519095557.3749407-1-y...
Cc: Zijing Yin <yzjaurora@gmail.com>

Stanislav Fomichev (3):
  net: change ndo_set_rx_mode_async return type to int
  net: add retry mechanism to ndo_set_rx_mode_async
  bnxt: convert to core rx_mode retry mechanism

 drivers/infiniband/ulp/ipoib/ipoib_main.c     |  9 +--
 drivers/net/dummy.c                           |  7 ++-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 46 ++++++---------
 drivers/net/ethernet/broadcom/bnxt/bnxt.h     |  2 -
 drivers/net/ethernet/intel/iavf/iavf_main.c   | 10 +++-
 .../net/ethernet/mellanox/mlx5/core/en_main.c |  8 ++-
 .../net/ethernet/meta/fbnic/fbnic_netdev.c    |  8 ++-
 drivers/net/netdevsim/netdev.c                |  7 ++-
 drivers/net/netkit.c                          |  7 ++-
 include/linux/netdevice.h                     | 16 ++++--
 net/core/dev.c                                |  7 ++-
 net/core/dev.h                                |  2 +
 net/core/dev_addr_lists.c                     | 56 ++++++++++++++++++-
 13 files changed, 124 insertions(+), 61 deletions(-)

-- 
2.53.0-Meta




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds