[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <69612358-2003-677a-80a2-5971dc026646@gmail.com>
Date: Wed, 12 Apr 2023 17:16:11 +0100
From: Edward Cree <ecree.xilinx@...il.com>
To: Andrew Lunn <andrew@...n.ch>, edward.cree@....com
Cc: linux-net-drivers@....com, davem@...emloft.net, kuba@...nel.org,
pabeni@...hat.com, edumazet@...gle.com, netdev@...r.kernel.org,
habetsm.xilinx@...il.com, sudheer.mogilappagari@...el.com
Subject: Re: [RFC PATCH v2 net-next 6/7] net: ethtool: add a mutex protecting
RSS contexts
On 11/04/2023 21:40, Andrew Lunn wrote:
> On Tue, Apr 11, 2023 at 07:26:14PM +0100, edward.cree@....com wrote:
>> While this is not needed to serialise the ethtool entry points (which
>> are all under RTNL), drivers may have cause to asynchronously access
>> dev->ethtool->rss_ctx; taking dev->ethtool->rss_lock allows them to
>> do this safely without needing to take the RTNL.
>
> What is actually wrong with taking RTNL? KISS is often best,
> especially for locks.
The examples I have of driver code that needs to access rss_ctx (in the
sfc driver) are deep inside call chains where RTNL may or may not
already be held.
1) filter insertion. E.g. ethtool -U is already holding RTNL, but other
sources of filters (e.g. aRFS) aren't, and thus taking it if necessary
might mean passing a 'bool rtnl_locked' all the way down the chain.
2) device reset handling (we have to restore the RSS contexts in the
hardware after a reset). Again resets don't always happen under RTNL,
and I don't fully understand the details (EFX_ASSERT_RESET_SERIALISED()).
So it makes life much simpler if we just have a finer-grained lock we can
just take when we need to.
Also, RTNL is a very big hammer that serialises all kinds of operations
across all the netdevs in the system, holding it for any length of time
can cause annoying user-visible latency (e.g. iirc sshd accepting a new
connection has to wait for it) so I prefer to avoid it if possible. If
anything we want to be breaking up this BKL[1], not making it bigger.
-ed
[1]: https://legacy.netdevconf.info/2.2/slides/westphal-rtnlmutex-talk.pdf
Powered by blists - more mailing lists