svn commit: r282644 - projects/em_mq/sys/dev/e1000

Sean Bruno sbruno at FreeBSD.org
Fri May 8 16:18:11 UTC 2015


Author: sbruno
Date: Fri May  8 16:18:11 2015
New Revision: 282644
URL: https://svnweb.freebsd.org/changeset/base/282644

Log:
  Ensure that *both* rx queues get scheduled by writing both queues to the IMS
  register when em_local_timer() runs.

Modified:
  projects/em_mq/sys/dev/e1000/if_em.c

Modified: projects/em_mq/sys/dev/e1000/if_em.c
==============================================================================
--- projects/em_mq/sys/dev/e1000/if_em.c	Fri May  8 16:02:31 2015	(r282643)
+++ projects/em_mq/sys/dev/e1000/if_em.c	Fri May  8 16:18:11 2015	(r282644)
@@ -2263,7 +2263,7 @@ em_local_timer(void *arg)
 	if_t ifp = adapter->ifp;
 	struct tx_ring	*txr = adapter->tx_rings;
 	struct rx_ring	*rxr = adapter->rx_rings;
-	u32		trigger;
+	u32		trigger = 0;
 
 	EM_CORE_LOCK_ASSERT(adapter);
 
@@ -2276,9 +2276,11 @@ em_local_timer(void *arg)
 		e1000_rar_set(&adapter->hw, adapter->hw.mac.addr, 0);
 
 	/* Mask to use in the irq trigger */
-	if (adapter->msix_mem)
-		trigger = rxr->ims;
-	else
+	if (adapter->msix_mem) {
+		for (int i = 0; i < adapter->num_queues; i++, rxr++)
+			trigger |= rxr->ims;
+		rxr = adapter->rx_rings;
+	} else
 		trigger = E1000_ICS_RXDMT0;
 
 	/*


More information about the svn-src-projects mailing list