mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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: Yury Norov <yury.norov@gmail.com> Reviewed-by: Nick Child <nnac123@linux.ibm.com> Acked-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user