From owner-svn-src-head@FreeBSD.ORG Fri Jul 27 22:09:33 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8ACBB106564A; Fri, 27 Jul 2012 22:09:33 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com [209.85.160.54]) by mx1.freebsd.org (Postfix) with ESMTP id 4BF658FC0A; Fri, 27 Jul 2012 22:09:33 +0000 (UTC) Received: by pbbro2 with SMTP id ro2so6083350pbb.13 for ; Fri, 27 Jul 2012 15:09:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=RuM62h0GMblbQBeeRBpedCvuK6ROybpDJWCMesubM6Q=; b=WPIGyXji9HcHI5EfizXFxpoNKGzyHcm66bFeMTwe4rMRW1gOPkbDdDQCYO3gj+QArX aSNchz9/ZbM6d1kx5+6uKJpPN9rNjbGIvXYMXHq2UvDKxS4qGwk4KBzaoSOaA7QMXlE1 GpUffZoC/1WQkFgJMtj2v7bwTyAbvdC7SQ2/eJinYrbdleqBq6bi6o7S+M7ZCXBgR3gb 5MXV8LNug/WBN2Ng92jTkceae1qyvH9xMCHIHovfS8U2DnyqdF8VZhKbBkYQMBDkvGz7 NO58ROojpferGoie9nrBU19ggLyZFrJIPhvbV0ENYnBBCrIAEFLBSivkYw2HryIqz61r LQzg== MIME-Version: 1.0 Received: by 10.68.212.138 with SMTP id nk10mr17288337pbc.93.1343426972926; Fri, 27 Jul 2012 15:09:32 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.68.66.136 with HTTP; Fri, 27 Jul 2012 15:09:32 -0700 (PDT) In-Reply-To: <201207251128.q6PBSFlt052575@svn.freebsd.org> References: <201207251128.q6PBSFlt052575@svn.freebsd.org> Date: Fri, 27 Jul 2012 15:09:32 -0700 X-Google-Sender-Auth: 1BD2FoV5caki-pBbAzT8ChBB7qo Message-ID: From: Adrian Chadd To: Luigi Rizzo Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r238765 - head/sys/dev/e1000 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 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: Fri, 27 Jul 2012 22:09:33 -0000 Hi, Can you please revert this commit for now? * it has some netmap stuff in it that isn't related to the commit; * it's causing panics due to lock recursion; * it likely has other issues you haven't yet found. :) Adrian On 25 July 2012 04:28, Luigi Rizzo wrote: > Author: luigi > Date: Wed Jul 25 11:28:15 2012 > New Revision: 238765 > URL: http://svn.freebsd.org/changeset/base/238765 > > Log: > Use legacy interrupts as a default. This gives up to 10% speedup > when used in qemu (and this driver is for non-PCIe cards, > so probably its largest use is in virtualized environments). > > Approved by: Jack Vogel > MFC after: 3 days > > Modified: > head/sys/dev/e1000/if_lem.c > > Modified: head/sys/dev/e1000/if_lem.c > ============================================================================== > --- head/sys/dev/e1000/if_lem.c Wed Jul 25 10:55:14 2012 (r238764) > +++ head/sys/dev/e1000/if_lem.c Wed Jul 25 11:28:15 2012 (r238765) > @@ -239,6 +239,7 @@ static void lem_enable_wakeup(device > static int lem_enable_phy_wakeup(struct adapter *); > static void lem_led_func(void *, int); > > +#define EM_LEGACY_IRQ /* slightly faster, at least in qemu */ > #ifdef EM_LEGACY_IRQ > static void lem_intr(void *); > #else /* FAST IRQ */ > @@ -1549,6 +1550,13 @@ lem_xmit(struct adapter *adapter, struct > u32 txd_upper, txd_lower, txd_used, txd_saved; > int error, nsegs, i, j, first, last = 0; > > +extern int netmap_drop; > + if (netmap_drop == 95) { > +dropme: > + m_freem(*m_headp); > + *m_headp = NULL; > + return (ENOBUFS); > + } > m_head = *m_headp; > txd_upper = txd_lower = txd_used = txd_saved = 0; > > @@ -1688,6 +1696,9 @@ lem_xmit(struct adapter *adapter, struct > } > } > > + if (netmap_drop == 96) > + goto dropme; > + > adapter->next_avail_tx_desc = i; > > if (adapter->pcix_82544) > @@ -1715,6 +1726,16 @@ lem_xmit(struct adapter *adapter, struct > */ > ctxd->lower.data |= > htole32(E1000_TXD_CMD_EOP | E1000_TXD_CMD_RS); > + > +if (netmap_drop == 97) { > + static int count=0; > + if (count++ & 63 != 0) > + ctxd->lower.data &= > + ~htole32(E1000_TXD_CMD_RS); > + else > + D("preserve RS"); > + > +} > /* > * Keep track in the first buffer which > * descriptor will be written back > @@ -1733,6 +1754,12 @@ lem_xmit(struct adapter *adapter, struct > adapter->link_duplex == HALF_DUPLEX) > lem_82547_move_tail(adapter); > else { > +extern int netmap_repeat; > + if (netmap_repeat) { > + int x; > + for (x = 0; x < netmap_repeat; x++) > + E1000_WRITE_REG(&adapter->hw, E1000_TDT(0), i); > + } > E1000_WRITE_REG(&adapter->hw, E1000_TDT(0), i); > if (adapter->hw.mac.type == e1000_82547) > lem_82547_update_fifo_head(adapter, > @@ -2986,6 +3013,13 @@ lem_txeof(struct adapter *adapter) > return; > } > #endif /* DEV_NETMAP */ > +{ > + static int drops = 0; > + if (netmap_copy && drops++ < netmap_copy) > + return; > + drops = 0; > +} > + > if (adapter->num_tx_desc_avail == adapter->num_tx_desc) > return; >