summaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2009-01-11 06:58:09 +0100
committerIngo Molnar <mingo@elte.hu>2009-01-11 19:12:56 +0100
commit2f8975fbcf07103afab0bbaea5f5b1a9967ffb86 (patch)
tree4f8931e89e5a5fae2b778ca0e879e2f66ba07935 /drivers/net/sfc
parentcpumask: convert misc driver functions (diff)
downloadlinux-2f8975fbcf07103afab0bbaea5f5b1a9967ffb86.tar.xz
linux-2f8975fbcf07103afab0bbaea5f5b1a9967ffb86.zip
cpumask: convert drivers/net/sfc
Impact: reduce stack usage, use new cpumask API. Remove a cpumask from the stack. Ben Hutchings indicated that printing a warning and returning 1 was acceptable for the corner case where allocation fails. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Mike Travis <travis@sgi.com> Cc: Ben Hutchings <bhutchings@solarflare.com> Cc: linux-net-drivers@solarflare.com
Diffstat (limited to 'drivers/net/sfc')
-rw-r--r--drivers/net/sfc/efx.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index f2e56ceee0ea..101c00a7bb73 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -854,20 +854,27 @@ static void efx_fini_io(struct efx_nic *efx)
* interrupts across them. */
static int efx_wanted_rx_queues(void)
{
- cpumask_t core_mask;
+ cpumask_var_t core_mask;
int count;
int cpu;
- cpus_clear(core_mask);
+ if (!alloc_cpumask_var(&core_mask, GFP_KERNEL)) {
+ printk(KERN_WARNING
+ "efx.c: allocation failure, irq balancing hobbled\n");
+ return 1;
+ }
+
+ cpumask_clear(core_mask);
count = 0;
for_each_online_cpu(cpu) {
- if (!cpu_isset(cpu, core_mask)) {
+ if (!cpumask_test_cpu(cpu, core_mask)) {
++count;
- cpumask_or(&core_mask, &core_mask,
+ cpumask_or(core_mask, core_mask,
topology_core_cpumask(cpu));
}
}
+ free_cpumask_var(core_mask);
return count;
}