Commit f02f2a1f authored by Yury Norov's avatar Yury Norov
Browse files

virtio_net: simplify virtnet_set_affinity()



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: default avatarYury Norov <yury.norov@gmail.com>
Reviewed-by: default avatarNick Child <nnac123@linux.ibm.com>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent d81603b3
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -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);