From owner-freebsd-arch@FreeBSD.ORG Wed May 21 06:52:29 2014 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9369FB72; Wed, 21 May 2014 06:52:29 +0000 (UTC) Received: from mail-qg0-x22c.google.com (mail-qg0-x22c.google.com [IPv6:2607:f8b0:400d:c04::22c]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 36A8921E0; Wed, 21 May 2014 06:52:29 +0000 (UTC) Received: by mail-qg0-f44.google.com with SMTP id i50so2547897qgf.31 for ; Tue, 20 May 2014 23:52:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=RDG+x4DCmBYG/qjveJA5meUavBAeO68jrQV9pVfwBYg=; b=APF4heMJRPHurqhsZBMtKiRbIdTMWLp3RE73X+0AZuvAKNHXvzae547eTn8mJVf/gg IU1IHBDJfnELq9jnko2eL+XdUwhCTecnnf/LPfum0brDFBPOLRzegD9/xAM+ig19mXLX 8jQhudkOLWRBbXwA8gwItQ5XvG2Tpqw7gAHaYb3u7EdzOg1u4yfx+2pz6RZ8Wj2lOgEU sr1KIcHbuYu9SJv+CVoDgIWDIKTNyBATTCzjNTjyXlkF5OCCX2s55/+Gh3KtZ/baft+b ylSzO4pyZDweSOKO4htHuYG62kaodA5Z1eAh5taCjnEZvMR2MaNIwICKV81STuuGZFHh Z5mA== MIME-Version: 1.0 X-Received: by 10.224.129.66 with SMTP id n2mr65395338qas.55.1400655148371; Tue, 20 May 2014 23:52:28 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.191.201 with HTTP; Tue, 20 May 2014 23:52:28 -0700 (PDT) Date: Tue, 20 May 2014 23:52:28 -0700 X-Google-Sender-Auth: c_9tztid7o7-85D9wxCKnQecXU8 Message-ID: Subject: [rfc] add non-contiguous CPU ID support to in_rss.c From: Adrian Chadd To: FreeBSD Net , "freebsd-arch@freebsd.org" , Robert Watson Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 May 2014 06:52:29 -0000 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.