Lines Matching refs:scb_data

521 	ahd_dmamap_sync(ahd, ahd->scb_data.hscb_dmat,
533 ahd_dmamap_sync(ahd, ahd->scb_data.sg_dmat,
542 ahd_dmamap_sync(ahd, ahd->scb_data.sense_dmat,
794 scb = ahd->scb_data.scbindex[tag];
834 ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = scb;
6340 for (i = 0; i < ahd->scb_data.maxhscbs; i++) {
6354 struct scb_data *scb_data;
6357 scb_data = &ahd->scb_data;
6358 TAILQ_INIT(&scb_data->free_scbs);
6360 LIST_INIT(&scb_data->free_scb_lists[i]);
6361 LIST_INIT(&scb_data->any_dev_free_scb_list);
6362 SLIST_INIT(&scb_data->hscb_maps);
6363 SLIST_INIT(&scb_data->sg_maps);
6364 SLIST_INIT(&scb_data->sense_maps);
6367 scb_data->maxhscbs = ahd_probe_scbs(ahd);
6368 if (scb_data->maxhscbs == 0) {
6393 /*flags*/0, &scb_data->hscb_dmat) != 0) {
6397 scb_data->init_level++;
6407 /*flags*/0, &scb_data->sg_dmat) != 0) {
6416 scb_data->init_level++;
6426 /*flags*/0, &scb_data->sense_dmat) != 0) {
6430 scb_data->init_level++;
6435 if (scb_data->numscbs == 0) {
6468 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) {
6482 LIST_FOREACH(scb, &ahd->scb_data.any_dev_free_scb_list, links.le) {
6493 struct scb_data *scb_data;
6495 scb_data = &ahd->scb_data;
6496 if (scb_data == NULL)
6499 switch (scb_data->init_level) {
6505 while ((sns_map = SLIST_FIRST(&scb_data->sense_maps)) != NULL) {
6506 SLIST_REMOVE_HEAD(&scb_data->sense_maps, links);
6507 ahd_dmamap_unload(ahd, scb_data->sense_dmat,
6509 ahd_dmamem_free(ahd, scb_data->sense_dmat,
6513 ahd_dma_tag_destroy(ahd, scb_data->sense_dmat);
6520 while ((sg_map = SLIST_FIRST(&scb_data->sg_maps)) != NULL) {
6521 SLIST_REMOVE_HEAD(&scb_data->sg_maps, links);
6522 ahd_dmamap_unload(ahd, scb_data->sg_dmat,
6524 ahd_dmamem_free(ahd, scb_data->sg_dmat,
6528 ahd_dma_tag_destroy(ahd, scb_data->sg_dmat);
6535 while ((hscb_map = SLIST_FIRST(&scb_data->hscb_maps)) != NULL) {
6536 SLIST_REMOVE_HEAD(&scb_data->hscb_maps, links);
6537 ahd_dmamap_unload(ahd, scb_data->hscb_dmat,
6539 ahd_dmamem_free(ahd, scb_data->hscb_dmat,
6543 ahd_dma_tag_destroy(ahd, scb_data->hscb_dmat);
6617 free_list = &ahd->scb_data.free_scb_lists[col_idx];
6618 free_tailq = &ahd->scb_data.free_scbs;
6638 free_list = &ahd->scb_data.free_scb_lists[col_idx];
6639 free_tailq = &ahd->scb_data.free_scbs;
6670 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) {
6676 if ((scb = LIST_FIRST(&ahd->scb_data.any_dev_free_scb_list)) == NULL) {
6704 ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = NULL;
6711 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6721 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6723 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6743 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6753 struct scb_data *scb_data;
6767 scb_data = &ahd->scb_data;
6768 if (scb_data->numscbs >= AHD_SCB_MAX_ALLOC)
6772 if (scb_data->scbs_left != 0) {
6775 offset = (PAGE_SIZE / sizeof(*hscb)) - scb_data->scbs_left;
6776 hscb_map = SLIST_FIRST(&scb_data->hscb_maps);
6786 if (ahd_dmamem_alloc(ahd, scb_data->hscb_dmat,
6793 SLIST_INSERT_HEAD(&scb_data->hscb_maps, hscb_map, links);
6795 ahd_dmamap_load(ahd, scb_data->hscb_dmat, hscb_map->dmamap,
6801 scb_data->scbs_left = PAGE_SIZE / sizeof(*hscb);
6804 if (scb_data->sgs_left != 0) {
6808 - scb_data->sgs_left) * ahd_sglist_size(ahd);
6809 sg_map = SLIST_FIRST(&scb_data->sg_maps);
6819 if (ahd_dmamem_alloc(ahd, scb_data->sg_dmat,
6826 SLIST_INSERT_HEAD(&scb_data->sg_maps, sg_map, links);
6828 ahd_dmamap_load(ahd, scb_data->sg_dmat, sg_map->dmamap,
6834 scb_data->sgs_left =
6842 if (scb_data->sense_left != 0) {
6845 offset = PAGE_SIZE - (AHD_SENSE_BUFSIZE * scb_data->sense_left);
6846 sense_map = SLIST_FIRST(&scb_data->sense_maps);
6856 if (ahd_dmamem_alloc(ahd, scb_data->sense_dmat,
6863 SLIST_INSERT_HEAD(&scb_data->sense_maps, sense_map, links);
6865 ahd_dmamap_load(ahd, scb_data->sense_dmat, sense_map->dmamap,
6871 scb_data->sense_left = PAGE_SIZE / AHD_SENSE_BUFSIZE;
6878 newcount = min(scb_data->sense_left, scb_data->scbs_left);
6879 newcount = min(newcount, scb_data->sgs_left);
6880 newcount = min(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs));
6917 next_scb->hscb->tag = ahd_htole16(scb_data->numscbs);
6918 col_tag = scb_data->numscbs ^ 0x100;
6929 scb_data->numscbs++;
6930 scb_data->sense_left--;
6931 scb_data->scbs_left--;
6932 scb_data->sgs_left--;
6957 ahd->scb_data.maxhscbs);
8221 if (scbid >= ahd->scb_data.numscbs) {
8224 ahd_name(ahd), scbid, ahd->scb_data.numscbs);
8347 if (scbid >= ahd->scb_data.numscbs) {
8350 ahd_name(ahd), scbid, ahd->scb_data.numscbs);
9706 ahd->scb_data.numscbs, ahd_inw(ahd, CMDS_PENDING),
9732 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) {
9742 LIST_FOREACH(scb, &ahd->scb_data.any_dev_free_scb_list, links.le) {