Commit cdb08f8f authored by Ben Hutchings's avatar Ben Hutchings

sfc: Set default parallelism to per-core by default

The previous default of per-package can be more CPU-efficient, but
users generally seem to prefer per-core.  It should also allow
accelerated RFS to direct packets more precisely, if IRQ affinity
is properly spread out.
Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
parent fa142b9d
...@@ -162,7 +162,7 @@ static unsigned int interrupt_mode; ...@@ -162,7 +162,7 @@ static unsigned int interrupt_mode;
* interrupt handling. * interrupt handling.
* *
* Cards without MSI-X will only target one CPU via legacy or MSI interrupt. * Cards without MSI-X will only target one CPU via legacy or MSI interrupt.
* The default (0) means to assign an interrupt to each package (level II cache) * The default (0) means to assign an interrupt to each core.
*/ */
static unsigned int rss_cpus; static unsigned int rss_cpus;
module_param(rss_cpus, uint, 0444); module_param(rss_cpus, uint, 0444);
...@@ -1148,14 +1148,14 @@ static void efx_fini_io(struct efx_nic *efx) ...@@ -1148,14 +1148,14 @@ static void efx_fini_io(struct efx_nic *efx)
static int efx_wanted_parallelism(void) static int efx_wanted_parallelism(void)
{ {
cpumask_var_t core_mask; cpumask_var_t thread_mask;
int count; int count;
int cpu; int cpu;
if (rss_cpus) if (rss_cpus)
return rss_cpus; return rss_cpus;
if (unlikely(!zalloc_cpumask_var(&core_mask, GFP_KERNEL))) { if (unlikely(!zalloc_cpumask_var(&thread_mask, GFP_KERNEL))) {
printk(KERN_WARNING printk(KERN_WARNING
"sfc: RSS disabled due to allocation failure\n"); "sfc: RSS disabled due to allocation failure\n");
return 1; return 1;
...@@ -1163,14 +1163,14 @@ static int efx_wanted_parallelism(void) ...@@ -1163,14 +1163,14 @@ static int efx_wanted_parallelism(void)
count = 0; count = 0;
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
if (!cpumask_test_cpu(cpu, core_mask)) { if (!cpumask_test_cpu(cpu, thread_mask)) {
++count; ++count;
cpumask_or(core_mask, core_mask, cpumask_or(thread_mask, thread_mask,
topology_core_cpumask(cpu)); topology_thread_cpumask(cpu));
} }
} }
free_cpumask_var(core_mask); free_cpumask_var(thread_mask);
return count; return count;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment