Subject: Re: [PATCH net-next 06/11] bnxt: convert to ndo_set_rx_mode_async

From: Stanislav Fomichev <[email-masked]>
Date: Mon, 16 Mar 2026 08:50:36 -0700

On 03/13, Michael Chan wrote:
> On Fri, Mar 13, 2026 at 7:51 AM Stanislav Fomichev <[email-masked]> wrote:
> >
> > Convert bnxt from ndo_set_rx_mode to ndo_set_rx_mode_async.
> > bnxt_set_rx_mode, bnxt_mc_list_updated and bnxt_uc_list_updated
> > now take explicit uc/mc list parameters and iterate with
> > netdev_hw_addr_list_for_each instead of netdev_for_each_{uc,mc}_addr.
> >
> > The bnxt_cfg_rx_mode internal caller passes the real lists under
> > netif_addr_lock_bh.
> 
> We should now be able to call bnxt_cfg_rx_mode() directly from
> ndo_set_rx_mode_async() without deferring it, right?

I was not sure about bnxt_timer->bnxt_queue_sp_work(BNXT_RX_MASK_SP_EVENT)
path. If we call bnxt_cfg_rx_mode here directly, it can race with
bnxt_cfg_rx_mode from bnxt_sp_task. So I did bare minimum amount
of changes to support ndo_set_rx_mode_async.

For v2, I can do the following:
1. call bnxt_cfg_rx_mode here directly
2. add netdev_lock around bnxt_cfg_rx_mode in bnxt_sp_task

Do you see any issues with that?