Date: Tue, 13 Aug 2013 00:25:40 +0000 (UTC) From: Jack F Vogel <jfv@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254264 - head/sys/dev/e1000 Message-ID: <201308130025.r7D0Pe4Q056270@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jfv Date: Tue Aug 13 00:25:39 2013 New Revision: 254264 URL: http://svnweb.freebsd.org/changeset/base/254264 Log: Alter the mq_start routine to do a TRYLOCK and call to the locked routine rather than just queueing. The former code was an attempt at getting UDP performance up, but there have been customer reports of problems with it, so the ixgbe approach seems the best solution for now. Modified: head/sys/dev/e1000/if_igb.c Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Mon Aug 12 23:30:01 2013 (r254263) +++ head/sys/dev/e1000/if_igb.c Tue Aug 13 00:25:39 2013 (r254264) @@ -972,7 +972,13 @@ igb_mq_start(struct ifnet *ifp, struct m que = &adapter->queues[i]; err = drbr_enqueue(ifp, txr->br, m); - taskqueue_enqueue(que->tq, &txr->txq_task); + if (err) + return (err); + if (IGB_TX_TRYLOCK(txr)) { + err = igb_mq_start_locked(ifp, txr); + IGB_TX_UNLOCK(txr); + } else + taskqueue_enqueue(que->tq, &txr->txq_task); return (err); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308130025.r7D0Pe4Q056270>