From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CC283E6DE4 for ; Wed, 25 Mar 2026 15:06:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774451192; cv=none; b=Mb1F/iWcxnYZov0rGA34VXi+MsDLL1G2fndX0IBRuItg8xYtQ21/Qq6/6b9Ha/LRTOvFW12uTHDRiTBla8M2DRzLMPnNAv5/hGi+oCNV4h06znG2Jj1sdqxTEqXo3EgkHhKCdDIIxr2iVprV7CrMiKEKyoHNHUZ9zwLq26Kfklo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774451192; c=relaxed/simple; bh=hueUun48O4250wdQs94dWOVmghwrQOiUb0g955DTCkk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=U586udyECuRa//7JDDNwbVtUM046znI6FIH/W1eguUKYdkIj+zjK0VKk9ufrnCUSVylyZrwA7DSKCvQBxLCbHspThc3El8eqQ+bMjoKqLO5hZi6VEtcFzlewviFfBrWNztimMi0hbOFxQIXDP5Tp6PGiuXkFhuzBlhZTcZF4g9w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bxsBW043; arc=none smtp.client-ip=74.125.82.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bxsBW043" Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-2c0c955a481so924380eec.1 for ; Wed, 25 Mar 2026 08:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774451190; x=1775055990; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=/d4Gn1kS5MGurytQaHUUdFFZv/IQSTbByU+x/UA/BgI=; b=bxsBW043Y5w/Dz8Y7N/NIiibrY68N4RdaHozWOv+rAlIeRZyuQqI2cujs3ZfRtTMCc RCO+i4urjzpZM9YVvNvg6cbNOBhzrhgQcFqq3CrLCxR3IgjvqUcRIT5b8kIF403L0dcc 05XD9q5JXZ5kRRBn6vQrz65dzfz9pavFtAAHKGiBYlFkMsZpeRR1dvTUfY/QMEYoYqKx F2frc57Z8FHTlkTPdVhlzcwIu0/beNFkPhyYMJFNfqZq0qO2OTI2d9KFYnYFCsWUfCrG WO5HKQKePtf+5mhwrbLyOd+0aDHDhmsWogVgXOPCmo65kTvjM+FdYcqFdd8OKuxTUHbX wyCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774451190; x=1775055990; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/d4Gn1kS5MGurytQaHUUdFFZv/IQSTbByU+x/UA/BgI=; b=QmGoks3ffKXtuOGLuuu8Lxh2rBcW/yoUZtgQQq6Csq4226kp4slynM2uzDOt8tY9Vw OI+1h481rE3GzIH6CMPQyr0dqEewBTiteSdtrIqZxauilI/65r9nTz9+n0AONqef0NbT tcZpXgN4XygGlK4tkwjuUKi3MqBolQatCuYW44IwPMAOK5Pp+Fqm3hZqid6EeCYYrfbx saF1ekh2IBIy/r2/vLcuPpY8bXiUuIGHQvLfDROQM5jsTm/wAtXcvRGmfg73y3gUn8B8 1HGmo6Ttz0ckXV6ENp1W5py+U0dFMeSABEpZohqmVWkSBlt3n4tI+9LLFWLBll3Dhik5 mo5Q== X-Forwarded-Encrypted: i=1; AJvYcCWEW8Iukzcpr1Q//HHG4NFWdPOKR4SThBXDiCbmTJY2vkD/1/B90CpKFtcL80/tNpjwm1/uvwg=@vger.kernel.org X-Gm-Message-State: AOJu0YwUw6vFQd0yKJGhqj5aFrNnfaFY35qRbJY29kROy8izPazwyGgt heX4SmE49dlXf1fPGp2Iows6jAzGZZ5bgmKehWq2JVBK4PdlUD2cDCb46x9h X-Gm-Gg: ATEYQzy7vBiKIr9PZoLTpiYUlixk5em83raWeiJvbQzUNYrC97QJeor1LzpQiywDniN P6+SJGHX8vs1ogvpm+4NJq5yQTeMSRWtCWK4NUfE9YX07n15wtMZhLBrCZz4noB8u1Y8t9MD55d BEkJlEzLkvZjm4WcLp28Bec/dIWHJ9lgKKJUOopzt0A+knJkmpD95ZzPWfumJOhVAjFxz1UyLwD 7wp/Ym2lxmgMmzYIsno8cTrwojhE6lCMdnqQeCjQnO+x9oLjZ/VBnVI6pigwMNeUcVusPVI3H/F yJUA/J37b/iugo2n4AjUozGVV5VHEYU2Bl7PLT2nrhdPtUheje4NR/zhAm/vu2CFTuyoeH06lYE ugz3//YcYNTvgLyOG0wmjF2E66ULgdM1X8pIda5ftIIawGE3uv2gBRl2ngCjr9ONuSSLTYx11t0 7pIyFMbCk0eGA5SS4jAj+ppgNA4vtlPCF6jVaY1+uZEBPM7NPZMbjfbvJMJ1mU+P1hvk5QydqUH szRLP2td5WWkpZerQ== X-Received: by 2002:a05:7022:6984:b0:128:ca6f:adf0 with SMTP id a92af1059eb24-12a96e69cffmr1941893c88.17.1774451190214; Wed, 25 Mar 2026 08:06:30 -0700 (PDT) Received: from localhost (c-76-102-12-149.hsd1.ca.comcast.net. [76.102.12.149]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12aa7248731sm29001c88.4.2026.03.25.08.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 08:06:29 -0700 (PDT) Date: Wed, 25 Mar 2026 08:06:28 -0700 From: Stanislav Fomichev To: Jakub Kicinski Cc: Stanislav Fomichev , netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com, pabeni@redhat.com, horms@kernel.org, corbet@lwn.net, skhan@linuxfoundation.org, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, 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, mohsin.bashr@gmail.com, jacob.e.keller@intel.com, willemb@google.com, skhawaja@google.com, bestswngs@gmail.com, aleksandr.loktionov@intel.com, kees@kernel.org, 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: Re: [PATCH net-next v3 03/13] net: introduce ndo_set_rx_mode_async and dev_rx_mode_work Message-ID: Mail-Followup-To: Stanislav Fomichev , Jakub Kicinski , Stanislav Fomichev , netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com, pabeni@redhat.com, horms@kernel.org, corbet@lwn.net, skhan@linuxfoundation.org, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, 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, mohsin.bashr@gmail.com, jacob.e.keller@intel.com, willemb@google.com, skhawaja@google.com, bestswngs@gmail.com, aleksandr.loktionov@intel.com, kees@kernel.org, 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 References: <20260320012501.2033548-1-sdf@fomichev.me> <20260320012501.2033548-4-sdf@fomichev.me> <20260323162003.0d155055@kernel.org> <20260324142114.216fcb01@kernel.org> <20260324204440.1752423d@kernel.org> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20260324204440.1752423d@kernel.org> On 03/24, Jakub Kicinski wrote: > On Tue, 24 Mar 2026 15:49:27 -0700 Stanislav Fomichev wrote: > > > > Not sure why cancel+release, maybe you're thinking about the unregister > > > > path? This is rtnl_unlock -> netdev_run_todo -> __rtnl_unlock + some > > > > extras. > > > > > > > > And the flush is here to plumb the addresses to the real devices > > > > before we return to the callers. Mostly because of the following > > > > things we have in the tests: > > > > > > > > # TEST: team cleanup mode lacp [FAIL] > > > > # macvlan unicast address not found on a slave > > > > > > > > Can you explain a bit more on the suggestion? > > > > > > Oh, I thought it's here for unregister! Feels like it'd be cleaner to > > > add the flush in dev_*c_add() and friends? How hard would it be to > > > identify the callers in atomic context? > > > > Not sure we can do it in dev_xc_add because it runs under rtnl :-( > > I currently do flush in netdev_run_todo because that's the place that > > doesn't hold rtnl. Otherwise flush will get stuck because the work > > handler grabs it... > > I was thinking of something a'la linkwatch. We can "steal" / "flush" > the pending work inline. I guess linkwatch is a major source of races > over the years... > > Does the macvlan + team problem still happens with the current > implementation minus the flush? We are only flushing once so only > pushing the addresses thru one layer of async callbacks. Yes, it does happen consistently when I remove the flush. It also happens with my internal v4, so I need to look again at what's going on. Not sure whether it's my internal regression or I was just sloppy/lucky (since you're correct in pointing out that we flush only once). Before I went down the workqueue route, I had a simple net_todo_list-like approach: `list_add_tail` on enqueue and `while(!list_empty) run_work()` on rtnl_unlock. This had a nice properly of tracking re-submissions (by checking whether the device's list_head is linked into the list or not) and it was relatively easy to do the recursive flush. Let me try get back to this approach and see whether it solves the flush? Not sure what wq buys us at this point.