From owner-freebsd-net@FreeBSD.ORG Tue Jun 7 02:40:01 2011 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A6E1106566B; Tue, 7 Jun 2011 02:40:01 +0000 (UTC) (envelope-from grarpamp@gmail.com) Received: from mail-pz0-f54.google.com (mail-pz0-f54.google.com [209.85.210.54]) by mx1.freebsd.org (Postfix) with ESMTP id 29B468FC18; Tue, 7 Jun 2011 02:40:00 +0000 (UTC) Received: by pzk27 with SMTP id 27so2858202pzk.13 for ; Mon, 06 Jun 2011 19:40:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to:cc :content-type; bh=HhX1sIuieNFOALi93vruWnBXB+SHfk6Ax3hdJp26dvU=; b=u9SDORZxj2Rb+oMOJ4+Unt79L0zYASy0vJ1tubrWy/xSWpwYYuCv9bKLxj8rLJYcws VQg5cnKlhKuONOU1bihitgY3ah4cHLcKQW7Kb9NYVQ2Rduc6HyufJPvURRQhY4UqUjJi MByaBL0B8Oa1tgBQ0s+SuIm7Acflbc43lYebA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=oZQl+gj09o3kMzVorc09okZq2bfpNnj1cIAGXJegyWcFKMqvtNe80supzBRcfBLgE7 SAQ/qQUWraMoqhB6BkIZmMCfURDW0S/2pb/AyM1f0Vwx42B6AHqkw+OV9eCEUEohJlYM qBHc5gOmoA1IwC3bMuxKR6sickXQdBOEO4RS8= MIME-Version: 1.0 Received: by 10.143.21.38 with SMTP id y38mr1095138wfi.342.1307412831553; Mon, 06 Jun 2011 19:13:51 -0700 (PDT) Received: by 10.142.131.19 with HTTP; Mon, 6 Jun 2011 19:13:51 -0700 (PDT) Date: Mon, 6 Jun 2011 22:13:51 -0400 Message-ID: From: grarpamp To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=UTF-8 Cc: freebsd-net@freebsd.org Subject: FreeBSD I/OAT (QuickData now?) driver X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jun 2011 02:40:01 -0000 Is this work part of what's needed to enable the FreeBSD equivalent of TNAPI? I know we've got polling. And probably MSI-X in a couple drivers. Pretty sure there is still one CPU doing the interrupt work? And none of the multiple queue thread spreading tech exists? http://www.ntop.org/blog http://www.ntop.org/TNAPI.html TNAPI attempts to solve the following problems: * Distribute the traffic across cores (i.e. the more core the more scalable is your networking application) for improving scalability. * Poll packets simultaneously from each RX queue (contraty to sequential NAPI polling) for fetching packets as fast as possible hence improve performance. * Through PF_RING, expose the RX queues to the userland so that the application can spawn one thread per queue hence avoid using semaphores at all. TNAPI achieves all this by starting one thread per RX queue. Received packets are then pushed to PF_RING (if available) or through the standard Linux stack. However in order to fully exploit this technology it is necessary to use PF_RING as it provides a straight packet path from kernel to userland. Furthermore it allows to create a virtual ethernet card per RX queue.