[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