Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 May 2014 06:25:18 -0700
From:      Sean Bruno <sbruno@ignoranthack.me>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        FreeBSD Net <freebsd-net@freebsd.org>
Subject:   Re: [rfc] add non-contiguous CPU ID support to in_rss.c
Message-ID:  <1400678718.973.0.camel@bruno>
In-Reply-To: <CAJ-Vmomv%2BwEbfmUz5TALpM0OezzeCF_X4juyLjzERT4Us8Yweg@mail.gmail.com>
References:  <CAJ-Vmomv%2BwEbfmUz5TALpM0OezzeCF_X4juyLjzERT4Us8Yweg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 2014-05-20 at 23:52 -0700, Adrian Chadd wrote:
> Hi Robert,
> 
> This patch uses CPU_FIRST() and CPU_NEXT() to iterate over the CPU IDs.
> 
> Think this is alright?
> 
> -a
> 
> 
> Index: sys/netinet/in_rss.c
> ===================================================================
> --- sys/netinet/in_rss.c (revision 266429)
> +++ sys/netinet/in_rss.c (working copy)
> @@ -176,6 +176,7 @@
>  rss_init(__unused void *arg)
>  {
>   u_int i;
> + u_int cpuid;
> 
>   /*
>   * Validate tunables, coerce to sensible values.
> @@ -245,11 +246,12 @@
> 
>   /*
>   * Set up initial CPU assignments: round-robin by default.
> - *
> - * XXXRW: Need a mapping to non-contiguous IDs here.
>   */
> - for (i = 0; i < rss_buckets; i++)
> - rss_table[i].rte_cpu = i % rss_ncpus;
> + cpuid = CPU_FIRST();
> + for (i = 0; i < rss_buckets; i++) {
> + rss_table[i].rte_cpu = cpuid;
> + cpuid = CPU_NEXT(cpuid);
> + }
> 
>   /*
>   * Randomize rrs_key.
> __

Yah, I did something similar in igb(4) to assign queues to CPU more
correctly.  

sean




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1400678718.973.0.camel>