The rtnl lock is no longer needed to protect the control buffer and
command VQ.

Signed-off-by: Daniel Jurgens <dani...@nvidia.com>
Reviewed-by: Jiri Pirko <j...@nvidia.com>
---
 drivers/net/virtio_net.c | 24 ++++--------------------
 1 file changed, 4 insertions(+), 20 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index a7cbfa7f5311..218a446c4c27 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -2824,14 +2824,12 @@ static void virtnet_stats(struct net_device *dev,
 
 static void virtnet_ack_link_announce(struct virtnet_info *vi)
 {
-       rtnl_lock();
        if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_ANNOUNCE,
                                  VIRTIO_NET_CTRL_ANNOUNCE_ACK, NULL))
                dev_warn(&vi->dev->dev, "Failed to ack link announce.\n");
-       rtnl_unlock();
 }
 
-static int _virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs)
+static int virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs)
 {
        struct virtio_net_ctrl_mq *mq __free(kfree) = NULL;
        struct scatterlist sg;
@@ -2862,16 +2860,6 @@ static int _virtnet_set_queues(struct virtnet_info *vi, 
u16 queue_pairs)
        return 0;
 }
 
-static int virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs)
-{
-       int err;
-
-       rtnl_lock();
-       err = _virtnet_set_queues(vi, queue_pairs);
-       rtnl_unlock();
-       return err;
-}
-
 static int virtnet_close(struct net_device *dev)
 {
        u8 *promisc_allmulti  __free(kfree) = NULL;
@@ -3477,7 +3465,7 @@ static int virtnet_set_channels(struct net_device *dev,
                return -EINVAL;
 
        cpus_read_lock();
-       err = _virtnet_set_queues(vi, queue_pairs);
+       err = virtnet_set_queues(vi, queue_pairs);
        if (err) {
                cpus_read_unlock();
                goto err;
@@ -4409,9 +4397,6 @@ static void virtnet_rx_dim_work(struct work_struct *work)
        struct dim_cq_moder update_moder;
        int qnum, err;
 
-       if (!rtnl_trylock())
-               return;
-
        qnum = rq - vi->rq;
 
        mutex_lock(&rq->dim_lock);
@@ -4431,7 +4416,6 @@ static void virtnet_rx_dim_work(struct work_struct *work)
        }
 out:
        mutex_unlock(&rq->dim_lock);
-       rtnl_unlock();
 }
 
 static int virtnet_coal_params_supported(struct ethtool_coalesce *ec)
@@ -4989,7 +4973,7 @@ static int virtnet_xdp_set(struct net_device *dev, struct 
bpf_prog *prog,
                synchronize_net();
        }
 
-       err = _virtnet_set_queues(vi, curr_qp + xdp_qp);
+       err = virtnet_set_queues(vi, curr_qp + xdp_qp);
        if (err)
                goto err;
        netif_set_real_num_rx_queues(dev, curr_qp + xdp_qp);
@@ -5855,7 +5839,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 
        virtio_device_ready(vdev);
 
-       _virtnet_set_queues(vi, vi->curr_queue_pairs);
+       virtnet_set_queues(vi, vi->curr_queue_pairs);
 
        /* a random MAC address has been assigned, notify the device.
         * We don't fail probe if VIRTIO_NET_F_CTRL_MAC_ADDR is not there
-- 
2.44.0


Reply via email to