summaryrefslogtreecommitdiffstats
path: root/sys/dev/cxgb/cxgb_main.c
diff options
context:
space:
mode:
authornp <np@FreeBSD.org>2011-03-24 01:16:48 +0000
committernp <np@FreeBSD.org>2011-03-24 01:16:48 +0000
commit9b158a1ef4d7b8531a98a558c91be7f671af6a7d (patch)
tree02cd4d93490769de9b1e72646403cbdc8c9994ba /sys/dev/cxgb/cxgb_main.c
parent12faa8eb0cef745b39c2d9724d1cfedb3669f6ce (diff)
downloadFreeBSD-src-9b158a1ef4d7b8531a98a558c91be7f671af6a7d.zip
FreeBSD-src-9b158a1ef4d7b8531a98a558c91be7f671af6a7d.tar.gz
t3_free_sge_resources should be given the number of qsets it needs to free.
MFC after: 1 week
Diffstat (limited to 'sys/dev/cxgb/cxgb_main.c')
-rw-r--r--sys/dev/cxgb/cxgb_main.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c
index be65f02..ae32221 100644
--- a/sys/dev/cxgb/cxgb_main.c
+++ b/sys/dev/cxgb/cxgb_main.c
@@ -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);
}
}
OpenPOWER on IntegriCloud