From owner-svn-src-head@FreeBSD.ORG Thu Nov 6 11:07:54 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BE975194; Thu, 6 Nov 2014 11:07:54 +0000 (UTC) Received: from mail.ipfw.ru (mail.ipfw.ru [IPv6:2a01:4f8:120:6141::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 80DEDC49; Thu, 6 Nov 2014 11:07:54 +0000 (UTC) Received: from [2a02:6b8:0:401:222:4dff:fe50:cd2f] (helo=ptichko.yndx.net) by mail.ipfw.ru with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82 (FreeBSD)) (envelope-from ) id 1XmGuL-0006sz-Am; Thu, 06 Nov 2014 10:51:01 +0400 Message-ID: <545B55FA.6070408@FreeBSD.org> Date: Thu, 06 Nov 2014 15:05:30 +0400 From: "Alexander V. Chernikov" User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 MIME-Version: 1.0 To: Adrian Chadd , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r273112 - head/sys/dev/ixgbe References: <201410150122.s9F1Mudu083306@svn.freebsd.org> In-Reply-To: <201410150122.s9F1Mudu083306@svn.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Nov 2014 11:07:54 -0000 On 15.10.2014 05:22, Adrian Chadd wrote: > Author: adrian > Date: Wed Oct 15 01:22:56 2014 > New Revision: 273112 > URL: https://svnweb.freebsd.org/changeset/base/273112 > > Log: > Set the DROP_EN bit before the RX queue is brought up and active. > > He noticed issues setting this bit in SRRCTL after the queue was up, > so doing it from the sysctl handler isn't enough and may not actually > work correctly. While investigating/measuring ixgbe performance w/ and without flow control I noticed that disabling fc entirely (e.g. disabling 512K skid buffer and turning drop_en on) not only makes things a bit worse, but also makes NIC stop accounting tail-drops as errors at all. It is a bit unhandy with HW counters, since you, for example, see 2M packets being received in netstat, but in reality system receives only 1M (And there is no easy way to determine exact count). > > This commit doesn't remove the sysctl path or try to change its > behaviour. I'll talk with others about how to finish fixing that > before I tackle that. > > PR: kern/194311 > Submitted by: luigi > MFC after: 3 days > Sponsored by: Norse Corp, Inc > > Modified: > head/sys/dev/ixgbe/ixgbe.c > > Modified: head/sys/dev/ixgbe/ixgbe.c > ============================================================================== > --- head/sys/dev/ixgbe/ixgbe.c Wed Oct 15 01:16:11 2014 (r273111) > +++ head/sys/dev/ixgbe/ixgbe.c Wed Oct 15 01:22:56 2014 (r273112) > @@ -4377,6 +4377,20 @@ ixgbe_initialize_receive_units(struct ad > srrctl &= ~IXGBE_SRRCTL_BSIZEPKT_MASK; > srrctl |= bufsz; > srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF; > + > + /* > + * Set DROP_EN iff we have no flow control and >1 queue. > + * Note that srrctl was cleared shortly before during reset, > + * so we do not need to clear the bit, but do it just in case > + * this code is moved elsewhere. > + */ > + if (adapter->num_queues > 1 && > + adapter->hw.fc.requested_mode == ixgbe_fc_none) { This code seems to turn drop_en always on HEAD due to hw->fc.requested_mode is inherited from adapter->fc at the end of ixgbe_init_locked(), _after_ calling ixgbe_initialize_receive_units() > + srrctl |= IXGBE_SRRCTL_DROP_EN; > + } else { > + srrctl &= ~IXGBE_SRRCTL_DROP_EN; > + } > + > IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(i), srrctl); > > /* Setup the HW Rx Head and Tail Descriptor Pointers */ > >