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);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to