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 033e1d6ea31b..d00f4147c7c0 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -2668,14 +2668,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;
@@ -2706,16 +2704,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;
@@ -3321,7 +3309,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;
@@ -3626,9 +3614,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);
@@ -3648,7 +3633,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)
@@ -4117,7 +4101,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);
@@ -4939,7 +4923,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.34.1


Reply via email to