From owner-freebsd-stable@FreeBSD.ORG Mon Mar 3 12:18:04 2008 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 7BC321065676 for ; Mon, 3 Mar 2008 12:18:04 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by mx1.freebsd.org (Postfix) with ESMTP id 5DF828FC1C for ; Mon, 3 Mar 2008 12:18:04 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from compute1.internal (compute1.internal [10.202.2.41]) by out1.messagingengine.com (Postfix) with ESMTP id 853F8AC7FF; Mon, 3 Mar 2008 07:18:03 -0500 (EST) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by compute1.internal (MEProxy); Mon, 03 Mar 2008 07:18:03 -0500 X-Sasl-enc: 75F7ZesNToRZoxDYPExgWCL+zRtr7lccQZ2lgN6/If08 1204546681 Received: from empiric.lon.incunabulum.net (82-35-112-254.cable.ubr07.dals.blueyonder.co.uk [82.35.112.254]) by mail.messagingengine.com (Postfix) with ESMTPSA id 41AB21065D; Mon, 3 Mar 2008 07:18:01 -0500 (EST) Message-ID: <47CBEC78.9020007@FreeBSD.org> Date: Mon, 03 Mar 2008 12:18:00 +0000 From: "Bruce M. Simpson" User-Agent: Thunderbird 2.0.0.9 (X11/20080207) MIME-Version: 1.0 To: Tom Samplonius References: <31625464.6081204538969779.JavaMail.root@ly.sdf.com> In-Reply-To: <31625464.6081204538969779.JavaMail.root@ly.sdf.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Kurt Jaeger , freebsd-stable@freebsd.org Subject: Re: PAUSE support for Ethernet interfaces ? 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, 03 Mar 2008 12:18:04 -0000 Tom Samplonius wrote: > FreeBSD does not send PAUSE frames, but most of the NICs out there will process received PAUSE frames. > > However ethernet flow control is mainly useful on the switches anyways. Switches these day (*) have small buffers (sometimes just a shared 3MB buffer for 24 ports). If several ports send too much to a single port at the same time, the switch could run out of buffer space in milliseconds and start dropping frames, so the switch will use flow control to get the transmitting ports to slow down, and let the buffer drain. Slowing down the senders with ethernet flow control results in better performance than letting some frames drop, and force a timeout and retransmit. Of course, deeper buffers would be even better. > > There are switch ASICs out there which implement upstream bandwidth limiting on ports by sending the PAUSE frame. I believe thompsa@ recently committed a fix to if_bridge to allow it to ignore PAUSE frames for the purposes of forwarding (they should never be forwarded, they are link scope only). It would be interesting to see a patch which implemented rate limiting in the same way as these ASICs do, but in if_bridge. cheers BMS