Re: [Intel-wired-lan] [PATCH net-next v2 08/13] bnxt: use snapshot in bnxt_cfg_rx_mode
From: Stanislav Fomichev <hidden>
Date: 2026-03-19 15:54:30
Also in:
intel-wired-lan, linux-doc, linux-kselftest, linux-rdma, linux-wireless, lkml
On 03/19, Loktionov, Aleksandr wrote:
quoted
-----Original Message----- From: Intel-wired-lan <redacted> On Behalf Of Stanislav Fomichev Sent: Wednesday, March 18, 2026 4:03 PM To: netdev@vger.kernel.org Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; pabeni@redhat.com; horms@kernel.org; corbet@lwn.net; skhan@linuxfoundation.org; andrew+netdev@lunn.ch; michael.chan@broadcom.com; pavan.chebbi@broadcom.com; Nguyen, Anthony L [off-list ref]; Kitszel, Przemyslaw [off-list ref]; saeedm@nvidia.com; tariqt@nvidia.com; mbloch@nvidia.com; alexanderduyck@fb.com; kernel-team@meta.com; johannes@sipsolutions.net; sd@queasysnail.net; jianbol@nvidia.com; dtatulea@nvidia.com; sdf@fomichev.me; mohsin.bashr@gmail.com; Keller, Jacob E [off-list ref]; willemb@google.com; skhawaja@google.com; bestswngs@gmail.com; linux-doc@vger.kernel.org; linux-kernel@vger.kernel.org; intel-wired-lan@lists.osuosl.org; linux- rdma@vger.kernel.org; linux-wireless@vger.kernel.org; linux- kselftest@vger.kernel.org; leon@kernel.org Subject: [Intel-wired-lan] [PATCH net-next v2 08/13] bnxt: use snapshot in bnxt_cfg_rx_mode With the introduction of ndo_set_rx_mode_async (as discussed in [0]) we can call bnxt_cfg_rx_mode directly. Convert bnxt_cfg_rx_mode to use uc/mc snapshots and move its call in bnxt_sp_task to the section that resets BNXT_STATE_IN_SP_TASK. Switch to direct call in bnxt_set_rx_mode. 0: https://lore.kernel.org/netdev/CACKFLi=5vj8hPqEUKDd8RTw3au5G+zRgQEqjF+ 6NZnyoNm90KA@mail.gmail.com/ Cc: Michael Chan <michael.chan@broadcom.com> Cc: Pavan Chebbi <pavan.chebbi@broadcom.com> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me> --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 24 ++++++++++++++-------- - 1 file changed, 15 insertions(+), 9 deletions(-)...quoted
-static int bnxt_cfg_rx_mode(struct bnxt *bp) +static int bnxt_cfg_rx_mode(struct bnxt *bp, struct netdev_hw_addr_list *uc, + struct netdev_hw_addr_list *mc) { struct net_device *dev = bp->dev; struct bnxt_vnic_info *vnic = &bp-quoted
vnic_info[BNXT_VNIC_DEFAULT];@@ -13623,7 +13625,7 @@ static int bnxt_cfg_rx_mode(struct bnxt *bp) bool uc_update; netif_addr_lock_bh(dev); - uc_update = bnxt_uc_list_updated(bp, &dev->uc); + uc_update = bnxt_uc_list_updated(bp, uc); netif_addr_unlock_bh(dev); if (!uc_update)@@ -13642,7 +13644,7 @@ static int bnxt_cfg_rx_mode(struct bnxt *bp) if (netdev_uc_count(dev) > (BNXT_MAX_UC_ADDRS - 1)) { vnic->rx_mask |=CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS;This limit check uses the live device list, dev->uc. In the new async model, the live list can differ from the snapshot.
Oh, yes, good catch! Will do s/netdev_uc_count/netdev_hw_addr_list_count(uc).