From owner-svn-src-all@FreeBSD.ORG Thu Mar 24 01:16:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 214C2106564A; Thu, 24 Mar 2011 01:16:49 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EAF668FC17; Thu, 24 Mar 2011 01:16:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p2O1Gme1013027; Thu, 24 Mar 2011 01:16:48 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p2O1Gm2V013023; Thu, 24 Mar 2011 01:16:48 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201103240116.p2O1Gm2V013023@svn.freebsd.org> From: Navdeep Parhar Date: Thu, 24 Mar 2011 01:16:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r219946 - head/sys/dev/cxgb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Mar 2011 01:16:49 -0000 Author: np Date: Thu Mar 24 01:16:48 2011 New Revision: 219946 URL: http://svn.freebsd.org/changeset/base/219946 Log: t3_free_sge_resources should be given the number of qsets it needs to free. MFC after: 1 week Modified: head/sys/dev/cxgb/cxgb_adapter.h head/sys/dev/cxgb/cxgb_main.c head/sys/dev/cxgb/cxgb_sge.c Modified: head/sys/dev/cxgb/cxgb_adapter.h ============================================================================== --- head/sys/dev/cxgb/cxgb_adapter.h Thu Mar 24 01:13:28 2011 (r219945) +++ head/sys/dev/cxgb/cxgb_adapter.h Thu Mar 24 01:16:48 2011 (r219946) @@ -510,7 +510,7 @@ int t3_sge_alloc(struct adapter *); int t3_sge_free(struct adapter *); int t3_sge_alloc_qset(adapter_t *, uint32_t, int, int, const struct qset_params *, int, struct port_info *); -void t3_free_sge_resources(adapter_t *); +void t3_free_sge_resources(adapter_t *, int); void t3_sge_start(adapter_t *); void t3_sge_stop(adapter_t *); void t3b_intr(void *data); Modified: head/sys/dev/cxgb/cxgb_main.c ============================================================================== --- head/sys/dev/cxgb/cxgb_main.c Thu Mar 24 01:13:28 2011 (r219945) +++ head/sys/dev/cxgb/cxgb_main.c Thu Mar 24 01:16:48 2011 (r219946) @@ -717,7 +717,7 @@ cxgb_controller_detach(device_t dev) static void cxgb_free(struct adapter *sc) { - int i; + int i, nqsets = 0; ADAPTER_LOCK(sc); sc->flags |= CXGB_SHUTDOWN; @@ -731,6 +731,7 @@ cxgb_free(struct adapter *sc) if (sc->portdev[i] && device_delete_child(sc->dev, sc->portdev[i]) != 0) device_printf(sc->dev, "failed to delete child port\n"); + nqsets += sc->port[i].nqsets; } /* @@ -756,7 +757,7 @@ cxgb_free(struct adapter *sc) * sysctls are cleaned up by the kernel linker. */ if (sc->flags & FULL_INIT_DONE) { - t3_free_sge_resources(sc); + t3_free_sge_resources(sc, nqsets); sc->flags &= ~FULL_INIT_DONE; } @@ -842,9 +843,9 @@ setup_sge_qsets(adapter_t *sc) (sc->flags & USING_MSIX) ? qset_idx + 1 : irq_idx, &sc->params.sge.qset[qset_idx], ntxq, pi); if (err) { - t3_free_sge_resources(sc); - device_printf(sc->dev, "t3_sge_alloc_qset failed with %d\n", - err); + t3_free_sge_resources(sc, qset_idx); + device_printf(sc->dev, + "t3_sge_alloc_qset failed with %d\n", err); return (err); } } Modified: head/sys/dev/cxgb/cxgb_sge.c ============================================================================== --- head/sys/dev/cxgb/cxgb_sge.c Thu Mar 24 01:13:28 2011 (r219945) +++ head/sys/dev/cxgb/cxgb_sge.c Thu Mar 24 01:16:48 2011 (r219946) @@ -2092,18 +2092,14 @@ t3_free_qset(adapter_t *sc, struct sge_q * Frees resources used by the SGE queue sets. */ void -t3_free_sge_resources(adapter_t *sc) +t3_free_sge_resources(adapter_t *sc, int nqsets) { - int i, nqsets; - - for (nqsets = i = 0; i < (sc)->params.nports; i++) - nqsets += sc->port[i].nqsets; + int i; for (i = 0; i < nqsets; ++i) { TXQ_LOCK(&sc->sge.qs[i]); t3_free_qset(sc, &sc->sge.qs[i]); } - } /**