diff options
author | gibbs <gibbs@FreeBSD.org> | 1999-04-23 23:28:20 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1999-04-23 23:28:20 +0000 |
commit | bc3f9921db38968a1246d19cf25deb90ee0e81cb (patch) | |
tree | 1e671d3c551b8d5a968d5dc960a89d5fc212667c /sys/dev/buslogic/bt.c | |
parent | 405e2ed76987008c9283af7e5e8f94106999dca9 (diff) | |
download | FreeBSD-src-bc3f9921db38968a1246d19cf25deb90ee0e81cb.zip FreeBSD-src-bc3f9921db38968a1246d19cf25deb90ee0e81cb.tar.gz |
bt.c:
Simplify some inline functions.
btreg.h:
Correct a comment.
Diffstat (limited to 'sys/dev/buslogic/bt.c')
-rw-r--r-- | sys/dev/buslogic/bt.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/sys/dev/buslogic/bt.c b/sys/dev/buslogic/bt.c index 6aa4f3b..ee9bd45 100644 --- a/sys/dev/buslogic/bt.c +++ b/sys/dev/buslogic/bt.c @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bt.c,v 1.16 1999/04/18 15:50:32 peter Exp $ + * $Id: bt.c,v 1.17 1999/04/18 19:03:50 peter Exp $ */ /* @@ -964,18 +964,22 @@ btallocccbs(struct bt_softc *bt) int newcount; int i; + if (bt->num_ccbs >= bt->max_ccbs) + /* Can't allocate any more */ + return; + next_ccb = &bt->bt_ccb_array[bt->num_ccbs]; sg_map = malloc(sizeof(*sg_map), M_DEVBUF, M_NOWAIT); if (sg_map == NULL) - return; + goto error_exit; /* Allocate S/G space for the next batch of CCBS */ if (bus_dmamem_alloc(bt->sg_dmat, (void **)&sg_map->sg_vaddr, BUS_DMA_NOWAIT, &sg_map->sg_dmamap) != 0) { free(sg_map, M_DEVBUF); - return; + goto error_exit; } SLIST_INSERT_HEAD(&bt->sg_maps, sg_map, links); @@ -1009,6 +1013,12 @@ btallocccbs(struct bt_softc *bt) bt->recovery_bccb = SLIST_FIRST(&bt->free_bt_ccbs); SLIST_REMOVE_HEAD(&bt->free_bt_ccbs, links); } + + if (SLIST_FIRST(&bt->free_bt_ccbs) != NULL) + return; + +error_exit: + device_printf(bt->dev, "Can't malloc BCCBs\n"); } static __inline void @@ -1040,12 +1050,10 @@ btgetccb(struct bt_softc *bt) if ((bccb = SLIST_FIRST(&bt->free_bt_ccbs)) != NULL) { SLIST_REMOVE_HEAD(&bt->free_bt_ccbs, links); bt->active_ccbs++; - } else if (bt->num_ccbs < bt->max_ccbs) { + } else { btallocccbs(bt); bccb = SLIST_FIRST(&bt->free_bt_ccbs); - if (bccb == NULL) - device_printf(bt->dev, "Can't malloc BCCB\n"); - else { + if (bccb != NULL) { SLIST_REMOVE_HEAD(&bt->free_bt_ccbs, links); bt->active_ccbs++; } |