From owner-freebsd-stable@FreeBSD.ORG Mon Oct 29 18:12:57 2007 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 92DFA16A41A for ; Mon, 29 Oct 2007 18:12:57 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by mx1.freebsd.org (Postfix) with ESMTP id 25BA713C48E for ; Mon, 29 Oct 2007 18:12:56 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: by nf-out-0910.google.com with SMTP id b2so1298819nfb for ; Mon, 29 Oct 2007 11:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=JwpM9iPXq1a6dbEyGxpfYIppVe/vmbQ/h8BSW4UdX2c=; b=okP4qqdC9t2Nh930ETr7iKqd5pmcWwKf+zlx1Ab+m6y2hZL/0q2L5ql3ahiXXG4kJuytkbLGdvJkQ+vJVT1Q+LFbuEGaLw9mfNCji3tYD/k4VPiRyGk0KnW0y1k5Tn2W1DVe8s4NButUpWoqX+eO8Lxmi8HywCzRCMrr/hr4mRI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=Bh87qW+pO7CmrCndy/3GXbMIRyBWbl8krdnsG4oDg9iqGHZ383a4RYvzBC62p/gYAiks2IXk1xWUqcp5mlM4H7T6ALeWhv1uBycPzy8gQEc19LDxe+x2+jWAr+mBqS9hmDSY/ij4IxDeEcdbOJBKsDa1SRdg+wdyn7EaO8PP2L4= Received: by 10.86.84.5 with SMTP id h5mr4968722fgb.1193679917408; Mon, 29 Oct 2007 10:45:17 -0700 (PDT) Received: by 10.86.100.19 with HTTP; Mon, 29 Oct 2007 10:45:17 -0700 (PDT) Message-ID: <2a41acea0710291045m6f1d2acw78c26a455ea3894d@mail.gmail.com> Date: Mon, 29 Oct 2007 10:45:17 -0700 From: "Jack Vogel" To: "freebsd-net@freebsd.org" , "FreeBSD Stable List" , "FreeBSD Current" MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Cc: Subject: RFC: Evolution of the em driver X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Oct 2007 18:12:57 -0000 I have an important decision to make and I thought rather than just make it and spring it on you I'd present the issues and see what opinions were. Our newer hardware uses new features that, more and more, require parallel code paths in the driver. For instance, the 82575 (Zoar) uses what are called 'advanced descriptors', this means different TX path. The 7.0 em driver has this support in it, it just uses a function pointer to handle it. When I add in multiqueue/RSS support it will add even more code that functions this way. What the Linux team did was to split the newer code into a standalone driver, they call it 'igb'. I had originally resisted doing this, but with the development I have been working on the past month I am starting to wonder if it might not be best to follow them. I see 3 possibilities and I'd like feedback, which would you prefer if you have a preference and why. First, keep the driver as is and just live with multiple code paths and features, possibly #ifdef'ed as they appear. Second, split the driver as Linux has into em and igb. The added question then is how to split it, Linux made the line the use of advanced descriptors, so Zoar and after, but I could also see a case for having everything PCI-E/MSI capable being in the new driver. Third, sort of a half-way approach, split up code but not the driver, in other words offer different source files that can be compiled into the driver, so you could have the one big jumbo driver with all in there, or one that will only work with a subset of adapters. This one would probably be the most work, because its a new approach. Cheers, Jack