svn commit: r193479 - user/kmacy/releng_7_2_fcs/sys/dev/cxgb

Kip Macy kmacy at FreeBSD.org
Fri Jun 5 01:18:13 UTC 2009


Author: kmacy
Date: Fri Jun  5 01:18:12 2009
New Revision: 193479
URL: http://svn.freebsd.org/changeset/base/193479

Log:
  - fix callout check
  - remove dead assert
  - check for msix in timer (no rspq locking)
  - don't lock queue in msix interrupt

Modified:
  user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_main.c
  user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c

Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_main.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_main.c	Fri Jun  5 01:00:28 2009	(r193478)
+++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_main.c	Fri Jun  5 01:18:12 2009	(r193479)
@@ -2377,7 +2377,7 @@ cxgb_tick(void *arg)
 {
 	adapter_t *sc = (adapter_t *)arg;
 
-	if ((sc->flags & CXGB_SHUTDOWN) || (sc->open_device_map == 0)
+	if ((sc->flags & CXGB_SHUTDOWN) || (sc->open_device_map == 0))
 		return;
 
 	taskqueue_enqueue(sc->tq, &sc->tick_task);	

Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c	Fri Jun  5 01:00:28 2009	(r193478)
+++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c	Fri Jun  5 01:18:12 2009	(r193479)
@@ -824,31 +824,33 @@ static void
 sge_timer_cb(void *arg)
 {
 	adapter_t *sc = arg;
-#ifndef IFNET_MULTIQUEUE	
-	struct port_info *pi;
-	struct sge_qset *qs;
-	struct sge_txq  *txq;
-	int i, j;
-	int reclaim_ofl, refill_rx;
-
-	if (sc->open_device_map == 0) 
-		return;
-
-	for (i = 0; i < sc->params.nports; i++) {
-		pi = &sc->port[i];
-		for (j = 0; j < pi->nqsets; j++) {
-			qs = &sc->sge.qs[pi->first_qset + j];
-			txq = &qs->txq[0];
-			reclaim_ofl = txq[TXQ_OFLD].processed - txq[TXQ_OFLD].cleaned;
-			refill_rx = ((qs->fl[0].credits < qs->fl[0].size) || 
-			    (qs->fl[1].credits < qs->fl[1].size));
-			if (reclaim_ofl || refill_rx) {
-				taskqueue_enqueue(sc->tq, &pi->timer_reclaim_task);
-				break;
+	if ((sc->flags & USING_MSIX) == 0) {
+		
+		struct port_info *pi;
+		struct sge_qset *qs;
+		struct sge_txq  *txq;
+		int i, j;
+		int reclaim_ofl, refill_rx;
+
+		if (sc->open_device_map == 0) 
+			return;
+
+		for (i = 0; i < sc->params.nports; i++) {
+			pi = &sc->port[i];
+			for (j = 0; j < pi->nqsets; j++) {
+				qs = &sc->sge.qs[pi->first_qset + j];
+				txq = &qs->txq[0];
+				reclaim_ofl = txq[TXQ_OFLD].processed - txq[TXQ_OFLD].cleaned;
+				refill_rx = ((qs->fl[0].credits < qs->fl[0].size) || 
+				    (qs->fl[1].credits < qs->fl[1].size));
+				if (reclaim_ofl || refill_rx) {
+					taskqueue_enqueue(sc->tq, &pi->timer_reclaim_task);
+					break;
+				}
 			}
 		}
 	}
-#endif
+	
 	if (sc->params.nports > 2) {
 		int i;
 
@@ -934,10 +936,9 @@ sge_timer_reclaim(void *arg, int ncount)
 	adapter_t *sc = pi->adapter;
 	struct sge_qset *qs;
 	struct mtx *lock;
-
-#ifdef IFNET_MULTIQUEUE
-	panic("%s should not be called with multiqueue support\n", __FUNCTION__);
-#endif 
+	
+	KASSERT((sc->flags & USING_MSIX) == 0,
+	    ("can't call timer reclaim for msi-x"));
 	for (i = 0; i < nqsets; i++) {
 		qs = &sc->sge.qs[pi->first_qset + i];
 
@@ -3101,13 +3102,8 @@ t3_intr_msix(void *data)
 	adapter_t *adap = qs->port->adapter;
 	struct sge_rspq *rspq = &qs->rspq;
 
-	mtx_lock(&rspq->lock);
-	{
-		
-		if (process_responses_gts(adap, rspq) == 0)
-			rspq->unhandled_irqs++;
-		mtx_unlock(&rspq->lock);
-	}
+	if (process_responses_gts(adap, rspq) == 0)
+		rspq->unhandled_irqs++;
 }
 
 #define QDUMP_SBUF_SIZE		32 * 400


More information about the svn-src-user mailing list