From owner-svn-src-user@FreeBSD.ORG  Fri Jun  5 01:00:29 2009
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 2184E106564A;
	Fri,  5 Jun 2009 01:00:29 +0000 (UTC)
	(envelope-from kmacy@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 104E98FC15;
	Fri,  5 Jun 2009 01:00:29 +0000 (UTC)
	(envelope-from kmacy@FreeBSD.org)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n5510Sxx009914;
	Fri, 5 Jun 2009 01:00:28 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5510S8T009912;
	Fri, 5 Jun 2009 01:00:28 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200906050100.n5510S8T009912@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Fri, 5 Jun 2009 01:00:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r193478 - user/kmacy/releng_7_2_fcs/sys/dev/cxgb
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 05 Jun 2009 01:00:29 -0000

Author: kmacy
Date: Fri Jun  5 01:00:28 2009
New Revision: 193478
URL: http://svn.freebsd.org/changeset/base/193478

Log:
  - remove dead intr_bind call
  - be a bit more careful about ensuring that callouts get drained in a timely fashion when
    unloading

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 00:30:28 2009	(r193477)
+++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_main.c	Fri Jun  5 01:00:28 2009	(r193478)
@@ -839,16 +839,6 @@ cxgb_setup_msix(adapter_t *sc, int msix_
 				return (EINVAL);
 				
 			}
-#if 0			
-#ifdef IFNET_MULTIQUEUE			
-			if (multiq) {
-				int vector = rman_get_start(sc->msix_irq_res[k]);
-				if (bootverbose)
-					device_printf(sc->dev, "binding vector=%d to cpu=%d\n", vector, k % mp_ncpus);
-				intr_bind(vector, k % mp_ncpus);
-			}
-#endif
-#endif
 		}
 	}
 
@@ -1727,6 +1717,9 @@ cxgb_release(struct adapter *sc)
 	if (sc->flags & USING_MSIX) 
 		cxgb_teardown_msix(sc);
 
+	callout_drain(&sc->cxgb_tick_ch);
+	callout_drain(&sc->sge_timer_ch);
+
 	if (sc->tq != NULL) {
 		printf("draining slow intr\n");
 		taskqueue_drain(sc->tq, &sc->slow_intr_task);
@@ -2384,7 +2377,7 @@ cxgb_tick(void *arg)
 {
 	adapter_t *sc = (adapter_t *)arg;
 
-	if(sc->flags & CXGB_SHUTDOWN)
+	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 00:30:28 2009	(r193477)
+++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c	Fri Jun  5 01:00:28 2009	(r193478)
@@ -831,6 +831,9 @@ sge_timer_cb(void *arg)
 	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++) {