[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240412192111.7e0e1117@kernel.org>
Date: Fri, 12 Apr 2024 19:21:11 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Daniel Jurgens <danielj@...dia.com>
Cc: <netdev@...r.kernel.org>, <mst@...hat.com>, <jasowang@...hat.com>,
<xuanzhuo@...ux.alibaba.com>, <virtualization@...ts.linux.dev>,
<davem@...emloft.net>, <edumazet@...gle.com>, <pabeni@...hat.com>,
<jiri@...dia.com>
Subject: Re: [PATCH net-next v3 5/6] virtio_net: Add a lock for per queue RX
coalesce
On Fri, 12 Apr 2024 14:53:08 -0500 Daniel Jurgens wrote:
> Once the RTNL locking around the control buffer is removed there can be
> contention on the per queue RX interrupt coalescing data. Use a spin
> lock per queue.
Does not compile on Clang.
> + scoped_guard(spinlock, &vi->rq[i].intr_coal_lock) {
> + err = virtnet_send_rx_ctrl_coal_vq_cmd(vi, i,
> + vi->intr_coal_rx.max_usecs,
> + vi->intr_coal_rx.max_packets);
> + if (err)
> + return err;
> + }
Do you really think this needs a scoped guard and 4th indentation level,
instead of just:
..lock(..);
err = virtnet_send_rx_ctrl_coal_vq_cmd(vi, i,
vi->intr_coal_rx.max_usecs,
vi->intr_coal_rx.max_packets);
..unlock(..);
if (err)
return err;
> + scoped_guard(spinlock, &vi->rq[i].intr_coal_lock) {
> + vi->rq[i].intr_coal.max_usecs = ec->rx_coalesce_usecs;
> + vi->rq[i].intr_coal.max_packets = ec->rx_max_coalesced_frames;
> + }
:-|
--
pw-bot: cr
Powered by blists - more mailing lists