]> www.infradead.org Git - users/hch/misc.git/commitdiff
wireguard: queueing: simplify wg_cpumask_next_online()
authorYury Norov [NVIDIA] <yury.norov@gmail.com>
Wed, 10 Sep 2025 01:36:41 +0000 (03:36 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 12 Sep 2025 01:52:20 +0000 (18:52 -0700)
wg_cpumask_choose_online() opencodes cpumask_nth(). Use it and make the
function significantly simpler. While there, fix opencoded cpu_online()
too.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Link: https://patch.msgid.link/20250910013644.4153708-2-Jason@zx2c4.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/wireguard/queueing.h

index 7eb76724b3edb54ecf2560d6a49b14b3c0b58d97..56314f98b6bac8385d96e71806206e8eb6f1077b 100644 (file)
@@ -104,16 +104,11 @@ static inline void wg_reset_packet(struct sk_buff *skb, bool encapsulating)
 
 static inline int wg_cpumask_choose_online(int *stored_cpu, unsigned int id)
 {
-       unsigned int cpu = *stored_cpu, cpu_index, i;
+       unsigned int cpu = *stored_cpu;
+
+       if (unlikely(cpu >= nr_cpu_ids || !cpu_online(cpu)))
+               cpu = *stored_cpu = cpumask_nth(id % num_online_cpus(), cpu_online_mask);
 
-       if (unlikely(cpu >= nr_cpu_ids ||
-                    !cpumask_test_cpu(cpu, cpu_online_mask))) {
-               cpu_index = id % cpumask_weight(cpu_online_mask);
-               cpu = cpumask_first(cpu_online_mask);
-               for (i = 0; i < cpu_index; ++i)
-                       cpu = cpumask_next(cpu, cpu_online_mask);
-               *stored_cpu = cpu;
-       }
        return cpu;
 }