Lines Matching refs:scb_data

5649 	for (i = 0; i < ahd->scb_data.maxhscbs; i++) {
5663 struct scb_data *scb_data;
5666 scb_data = &ahd->scb_data;
5667 TAILQ_INIT(&scb_data->free_scbs);
5669 LIST_INIT(&scb_data->free_scb_lists[i]);
5670 LIST_INIT(&scb_data->any_dev_free_scb_list);
5671 SLIST_INIT(&scb_data->hscb_maps);
5672 SLIST_INIT(&scb_data->sg_maps);
5673 SLIST_INIT(&scb_data->sense_maps);
5676 scb_data->maxhscbs = ahd_probe_scbs(ahd);
5677 if (scb_data->maxhscbs == 0) {
5703 /*flags*/0, &scb_data->hscb_dmat) != 0) {
5707 scb_data->init_level++;
5717 /*flags*/0, &scb_data->sg_dmat) != 0) {
5726 scb_data->init_level++;
5736 /*flags*/0, &scb_data->sense_dmat) != 0) {
5740 scb_data->init_level++;
5746 if (scb_data->numscbs == 0) {
5779 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) {
5793 LIST_FOREACH(scb, &ahd->scb_data.any_dev_free_scb_list, links.le) {
5804 struct scb_data *scb_data;
5806 scb_data = &ahd->scb_data;
5807 if (scb_data == NULL)
5810 switch (scb_data->init_level) {
5816 while ((sns_map = SLIST_FIRST(&scb_data->sense_maps)) != NULL) {
5817 SLIST_REMOVE_HEAD(&scb_data->sense_maps, links);
5818 aic_dmamap_unload(ahd, scb_data->sense_dmat,
5820 aic_dmamem_free(ahd, scb_data->sense_dmat,
5824 aic_dma_tag_destroy(ahd, scb_data->sense_dmat);
5831 while ((sg_map = SLIST_FIRST(&scb_data->sg_maps)) != NULL) {
5832 SLIST_REMOVE_HEAD(&scb_data->sg_maps, links);
5833 aic_dmamap_unload(ahd, scb_data->sg_dmat,
5835 aic_dmamem_free(ahd, scb_data->sg_dmat,
5839 aic_dma_tag_destroy(ahd, scb_data->sg_dmat);
5846 while ((hscb_map = SLIST_FIRST(&scb_data->hscb_maps)) != NULL) {
5847 SLIST_REMOVE_HEAD(&scb_data->hscb_maps, links);
5848 aic_dmamap_unload(ahd, scb_data->hscb_dmat,
5850 aic_dmamem_free(ahd, scb_data->hscb_dmat,
5854 aic_dma_tag_destroy(ahd, scb_data->hscb_dmat);
5928 free_list = &ahd->scb_data.free_scb_lists[col_idx];
5929 free_tailq = &ahd->scb_data.free_scbs;
5949 free_list = &ahd->scb_data.free_scb_lists[col_idx];
5950 free_tailq = &ahd->scb_data.free_scbs;
5981 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) {
5987 if ((scb = LIST_FIRST(&ahd->scb_data.any_dev_free_scb_list)) == NULL) {
6017 ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = NULL;
6024 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6034 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6036 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6056 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list,
6066 struct scb_data *scb_data;
6080 scb_data = &ahd->scb_data;
6081 if (scb_data->numscbs >= AHD_SCB_MAX_ALLOC)
6085 if (scb_data->scbs_left != 0) {
6088 offset = (PAGE_SIZE / sizeof(*hscb)) - scb_data->scbs_left;
6089 hscb_map = SLIST_FIRST(&scb_data->hscb_maps);
6099 if (aic_dmamem_alloc(ahd, scb_data->hscb_dmat,
6107 SLIST_INSERT_HEAD(&scb_data->hscb_maps, hscb_map, links);
6109 aic_dmamap_load(ahd, scb_data->hscb_dmat, hscb_map->dmamap,
6115 scb_data->scbs_left = PAGE_SIZE / sizeof(*hscb);
6118 if (scb_data->sgs_left != 0) {
6122 - scb_data->sgs_left) * ahd_sglist_size(ahd);
6123 sg_map = SLIST_FIRST(&scb_data->sg_maps);
6133 if (aic_dmamem_alloc(ahd, scb_data->sg_dmat,
6141 SLIST_INSERT_HEAD(&scb_data->sg_maps, sg_map, links);
6143 aic_dmamap_load(ahd, scb_data->sg_dmat, sg_map->dmamap,
6149 scb_data->sgs_left =
6157 if (scb_data->sense_left != 0) {
6160 offset = PAGE_SIZE - (AHD_SENSE_BUFSIZE * scb_data->sense_left);
6161 sense_map = SLIST_FIRST(&scb_data->sense_maps);
6171 if (aic_dmamem_alloc(ahd, scb_data->sense_dmat,
6178 SLIST_INSERT_HEAD(&scb_data->sense_maps, sense_map, links);
6180 aic_dmamap_load(ahd, scb_data->sense_dmat, sense_map->dmamap,
6186 scb_data->sense_left = PAGE_SIZE / AHD_SENSE_BUFSIZE;
6193 newcount = MIN(scb_data->sense_left, scb_data->scbs_left);
6194 newcount = MIN(newcount, scb_data->sgs_left);
6195 newcount = MIN(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs));
6196 scb_data->sense_left -= newcount;
6197 scb_data->scbs_left -= newcount;
6198 scb_data->sgs_left -= newcount;
6249 next_scb->hscb->tag = aic_htole16(scb_data->numscbs);
6250 col_tag = scb_data->numscbs ^ 0x100;
6262 scb_data->numscbs++;
6288 ahd->scb_data.maxhscbs);
7558 if (scbid >= ahd->scb_data.numscbs) {
7561 ahd_name(ahd), scbid, ahd->scb_data.numscbs);
7684 if (scbid >= ahd->scb_data.numscbs) {
7687 ahd_name(ahd), scbid, ahd->scb_data.numscbs);
8387 if (ahd->scb_data.recovery_scbs == 0
9083 ahd->scb_data.numscbs, ahd_inw(ahd, CMDS_PENDING),
9109 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) {
9121 LIST_FOREACH(scb, &ahd->scb_data.any_dev_free_scb_list, links.le) {