From owner-freebsd-net@FreeBSD.ORG Thu Feb 24 15:39:06 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 2E17C106564A for ; Thu, 24 Feb 2011 15:39:06 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: from mail-ey0-f182.google.com (mail-ey0-f182.google.com [209.85.215.182]) by mx1.freebsd.org (Postfix) with ESMTP id B68238FC13 for ; Thu, 24 Feb 2011 15:39:05 +0000 (UTC) Received: by eyg7 with SMTP id 7so240826eyg.13 for ; Thu, 24 Feb 2011 07:39:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=+eNUMIQAK+3pOpeshEkwIT4VWpOYmTpXdUC1ab/U4GU=; b=MM8q92+z2ocf5eBUC4fIOPAD+OWSPTzttyu9l1nLVYoaX9OsI+Q48NcsF5yHFnAiwE ka3jk06Dmin10AELcjllb7HHisQIB2MNxOayigJ4V/zcAmkF1jOvzmT2KkWZCJc06de0 oIC6EjYGQ1+otjssInLZlLKNERJ+CRC4teMyQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=DLZBRmD0xgVqdiBVeD5v1xKS0hwoUB0qWTLPqWEfdroqIA5b30xPdGcSvZjVeRL9T6 049QmO1+gIpzhIDRljNXIyAiZsB5smN1b31PAaHfctjoFtVCp00zUQ60ySJyP5SBgOP6 6/x8AZpJlA4QzXyO3goBV4PXDJZ67f95GxVlU= MIME-Version: 1.0 Received: by 10.213.23.5 with SMTP id p5mr1384728ebb.81.1298561944531; Thu, 24 Feb 2011 07:39:04 -0800 (PST) Received: by 10.213.20.135 with HTTP; Thu, 24 Feb 2011 07:39:04 -0800 (PST) In-Reply-To: <0B0B1ACC-C57B-4F74-85D5-DD2C7F2DAEA5@netasq.com> References: <0B0B1ACC-C57B-4F74-85D5-DD2C7F2DAEA5@netasq.com> Date: Thu, 24 Feb 2011 10:39:04 -0500 Message-ID: From: Ryan Stone To: Fabien Thomas Content-Type: text/plain; charset=ISO-8859-1 Cc: FreeBSD Net Subject: Re: Polling with multiqueue support 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: Thu, 24 Feb 2011 15:39:06 -0000 Ah, you've anticipated me. This is just the kind of thing that I had in mind. I have some comments: - Why allocate the poll_if_t in ether_poll_register_? If you let the driver allocate it you don't have to worry about failure. And the driver can embed it in its rx_ring so it doesn't have to worry about malloc'ing it anyway. We can also put one it struct ifnet to preserve the traditional ether_poll_register interface. - I'd personally prefer it if ether_poll_register_mq didn't require a struct ifnet to be passed in. Nothing seems to use the ifnet anymore and here at $(WORK) we have some non-ifnets that actually register a polling handler. Currently they just allocate a struct ifnet to make the polling code happy but I don't see any reason to require one. - Also, I don't quite understand why the separate TX step is necessary now.