]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
virtio_net: simplify virtnet_set_affinity()
authorYury Norov <yury.norov@gmail.com>
Tue, 28 Jan 2025 16:46:31 +0000 (11:46 -0500)
committerYury Norov <yury.norov@gmail.com>
Mon, 24 Feb 2025 21:36:59 +0000 (16:36 -0500)
The inner loop may be replaced with the dedicated for_each_online_cpu_wrap.
Use it as it improves readability and simplifies maintenance.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
Reviewed-by: Nick Child <nnac123@linux.ibm.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
drivers/net/virtio_net.c

index 7646ddd9bef70cf2a0833c7db7c0491884fb7ab5..9d7c37e968b582568040c665ccf271b584f49bd6 100644 (file)
@@ -3826,7 +3826,7 @@ static void virtnet_set_affinity(struct virtnet_info *vi)
        cpumask_var_t mask;
        int stragglers;
        int group_size;
-       int i, j, cpu;
+       int i, start = 0, cpu;
        int num_cpu;
        int stride;
 
@@ -3840,16 +3840,18 @@ static void virtnet_set_affinity(struct virtnet_info *vi)
        stragglers = num_cpu >= vi->curr_queue_pairs ?
                        num_cpu % vi->curr_queue_pairs :
                        0;
-       cpu = cpumask_first(cpu_online_mask);
 
        for (i = 0; i < vi->curr_queue_pairs; i++) {
                group_size = stride + (i < stragglers ? 1 : 0);
 
-               for (j = 0; j < group_size; j++) {
+               for_each_online_cpu_wrap(cpu, start) {
+                       if (!group_size--) {
+                               start = cpu;
+                               break;
+                       }
                        cpumask_set_cpu(cpu, mask);
-                       cpu = cpumask_next_wrap(cpu, cpu_online_mask,
-                                               nr_cpu_ids, false);
                }
+
                virtqueue_set_affinity(vi->rq[i].vq, mask);
                virtqueue_set_affinity(vi->sq[i].vq, mask);
                __netif_set_xps_queue(vi->dev, cpumask_bits(mask), i, XPS_CPUS);