[rfc] add non-contiguous CPU ID support to in_rss.c

Sean Bruno sbruno at ignoranthack.me
Wed May 21 17:32:59 UTC 2014


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



More information about the freebsd-net mailing list