diff options
author | np <np@FreeBSD.org> | 2011-03-24 01:16:48 +0000 |
---|---|---|
committer | np <np@FreeBSD.org> | 2011-03-24 01:16:48 +0000 |
commit | 9b158a1ef4d7b8531a98a558c91be7f671af6a7d (patch) | |
tree | 02cd4d93490769de9b1e72646403cbdc8c9994ba /sys/dev/cxgb/cxgb_main.c | |
parent | 12faa8eb0cef745b39c2d9724d1cfedb3669f6ce (diff) | |
download | FreeBSD-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.c | 11 |
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); } } |