From owner-freebsd-net@FreeBSD.ORG Mon Jun 1 15:01:25 2015 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CA1C2261; Mon, 1 Jun 2015 15:01:25 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 849B51D36; Mon, 1 Jun 2015 15:01:25 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.84 (FreeBSD)) (envelope-from ) id 1YzRDP-0004Xy-Jt; Mon, 01 Jun 2015 18:01:23 +0300 Date: Mon, 1 Jun 2015 18:01:23 +0300 From: Slawa Olhovchenkov To: Adrian Chadd Cc: FreeBSD Net Subject: Re: Intel igb 82576 (netmap mode) and RSS queue issuse with fragmented UDP packets. Message-ID: <20150601150123.GI1647@zxy.spb.ru> References: <20150601082509.GE1647@zxy.spb.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 15:01:25 -0000 On Mon, Jun 01, 2015 at 07:53:51AM -0700, Adrian Chadd wrote: > oh, hm, you asked the next question. Sorry, I haven't had coffee. > > I vaguely remember testing this and discovering the /should/ be > putting all the frames in a packet int he same queue, as long as the > frames have a consistent set of fragment bits set. Ie, if you're doing > UDP and all frames in a packet have the fragment bit set, then all > fragments (first and the rest) go into the same queue. Frames in a > flow that are fragmented for some and not others (eg TCP flows with a > firewall/router doing explicit fragmentation, or a mix of small/large > UDP packets) will end up going into different queues. > > I can re-test this on ixgbe at some point, but IIRC that's how it behaved. > > I don't have the RSS stuff done for chelsio, so I haven't done any > experiments just yet. > > Now, I also remember that with the badly setup flowdirector code in > ixgbe it would mess that up, so the flowdir code was disabled in -HEAD > and I believe now in -10. I am expect that second and next fragments may distributed in different queue. This is acceptable for me. And I think workaround of this in driver/OS code may be very expensive (collect and save 5-tuple, expiration control of this hash and etc). But I am very surprised that _first_ fragment distributed in different queue. I.e. fragment with frag_offset==0. Only different with DF bit clear and MF bit set. I am don't check case with frag_offset==0, DF bit clear and MF bit clear. May be this is also distrebuted in different queue.