From bc3f9921db38968a1246d19cf25deb90ee0e81cb Mon Sep 17 00:00:00 2001 From: gibbs Date: Fri, 23 Apr 1999 23:28:20 +0000 Subject: bt.c: Simplify some inline functions. btreg.h: Correct a comment. --- sys/dev/buslogic/bt.c | 22 +++++++++++++++------- sys/dev/buslogic/btreg.h | 6 +++--- 2 files changed, 18 insertions(+), 10 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++; } diff --git a/sys/dev/buslogic/btreg.h b/sys/dev/buslogic/btreg.h index 2452024..9567f54 100644 --- a/sys/dev/buslogic/btreg.h +++ b/sys/dev/buslogic/btreg.h @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: btreg.h,v 1.5 1999/04/07 23:01:43 gibbs Exp $ + * $Id: btreg.h,v 1.6 1999/04/18 15:50:33 peter Exp $ */ #ifndef _BTREG_H_ @@ -629,8 +629,8 @@ struct bt_softc { bus_dmamap_t mailbox_dmamap; bus_dma_tag_t ccb_dmat; /* dmat for our ccb array */ bus_dmamap_t ccb_dmamap; - bus_dma_tag_t sg_dmat; /* dmat for our sg maps */ - bus_dma_tag_t sense_dmat; /* dmat for our sg maps */ + bus_dma_tag_t sg_dmat; /* dmat for our sg segments */ + bus_dma_tag_t sense_dmat; /* dmat for our sense buffers */ bus_dmamap_t sense_dmamap; SLIST_HEAD(, sg_map_node) sg_maps; bus_addr_t mailbox_physbase; -- cgit v1.1