On Fri, 3 May 2024 23:24:39 +0300, Daniel Jurgens <danielj@xxxxxxxxxx> wrote: > Currently the buffer used for control VQ commands is protected by the > RTNL lock. Previously this wasn't a major concern because the control VQ > was only used during device setup and user interaction. With the recent > addition of dynamic interrupt moderation the control VQ may be used > frequently during normal operation. > > This series removes the RNTL lock dependency by introducing a mutex > to protect the control buffer and writing SGs to the control VQ. > For the series, keep tags: Reviewed-by: Heng Qi <hengqi@xxxxxxxxxxxxxxxxx> Tested-by: Heng Qi <hengqi@xxxxxxxxxxxxxxxxx> > v6: > - Rebased over new stats code. > - Added comment to cvq_lock, init the mutex unconditionally, > and replaced some duplicate code with a goto. > - Fixed minor grammer errors, checkpatch warnings, and clarified > a comment. > v5: > - Changed cvq_lock to a mutex. > - Changed dim_lock to mutex, because it's held taking > the cvq_lock. > - Use spin/mutex_lock/unlock vs guard macros. > v4: > - Protect dim_enabled with same lock as well intr_coal. > - Rename intr_coal_lock to dim_lock. > - Remove some scoped_guard where the error path doesn't > have to be in the lock. > v3: > - Changed type of _offloads to __virtio16 to fix static > analysis warning. > - Moved a misplaced hunk to the correct patch. > v2: > - New patch to only process the provided queue in > virtnet_dim_work > - New patch to lock per queue rx coalescing structure. > > Daniel Jurgens (6): > virtio_net: Store RSS setting in virtnet_info > virtio_net: Remove command data from control_buf > virtio_net: Add a lock for the command VQ. > virtio_net: Do DIM update for specified queue only > virtio_net: Add a lock for per queue RX coalesce > virtio_net: Remove rtnl lock protection of command buffers > > drivers/net/virtio_net.c | 288 +++++++++++++++++++++++---------------- > 1 file changed, 173 insertions(+), 115 deletions(-) > > -- > 2.44.0 > >