Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ibmvnic: simplify ibmvnic_set_queue_affinity()

A loop based on cpumask_next_wrap() opencodes the dedicated macro
for_each_online_cpu_wrap(). Use it as it improves readability and
simplifies maintenance.

This also helps to drop cpumask handling code in the caller function.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
Tested-by: Nick Child <nnac123@linux.ibm.com>

+11 -7
+11 -7
drivers/net/ethernet/ibm/ibmvnic.c
··· 234 234 (*stragglers)--; 235 235 } 236 236 /* atomic write is safer than writing bit by bit directly */ 237 - for (i = 0; i < stride; i++) { 238 - cpumask_set_cpu(*cpu, mask); 239 - *cpu = cpumask_next_wrap(*cpu, cpu_online_mask, 240 - nr_cpu_ids, false); 237 + for_each_online_cpu_wrap(i, *cpu) { 238 + if (!stride--) { 239 + /* For the next queue we start from the first 240 + * unused CPU in this queue 241 + */ 242 + *cpu = i; 243 + break; 244 + } 245 + cpumask_set_cpu(i, mask); 241 246 } 247 + 242 248 /* set queue affinity mask */ 243 249 cpumask_copy(queue->affinity_mask, mask); 244 250 rc = irq_set_affinity_and_hint(queue->irq, queue->affinity_mask); ··· 262 256 int num_rxqs = adapter->num_active_rx_scrqs, i_rxqs = 0; 263 257 int num_txqs = adapter->num_active_tx_scrqs, i_txqs = 0; 264 258 int total_queues, stride, stragglers, i; 265 - unsigned int num_cpu, cpu; 259 + unsigned int num_cpu, cpu = 0; 266 260 bool is_rx_queue; 267 261 int rc = 0; 268 262 ··· 280 274 stride = max_t(int, num_cpu / total_queues, 1); 281 275 /* number of leftover cpu's */ 282 276 stragglers = num_cpu >= total_queues ? num_cpu % total_queues : 0; 283 - /* next available cpu to assign irq to */ 284 - cpu = cpumask_next(-1, cpu_online_mask); 285 277 286 278 for (i = 0; i < total_queues; i++) { 287 279 is_rx_queue = false;