Home | History | Annotate | Download | only in pci

Lines Matching defs:ccb

331 	struct arc_ccb			*ccb = NULL;
366 ccb = &sc->sc_ccbs[htole32(cmd->cmd.context)];
369 ccb->ccb_offset, ARC_MAX_IOCMDLEN,
372 arc_scsi_cmd_done(sc, ccb, reg);
386 struct arc_ccb *ccb;
420 ccb = arc_get_ccb(sc);
421 if (ccb == NULL) {
428 ccb->ccb_xs = xs;
430 if (arc_load_xs(ccb) != 0) {
432 arc_put_ccb(sc, ccb);
438 cmd = &ccb->ccb_cmd->cmd;
439 reg = ccb->ccb_cmd_post;
447 cmd->sgl_len = ccb->ccb_dmamap->dm_nsegs;
450 if (ccb->ccb_dmamap->dm_nsegs > ARC_SGL_256LEN) {
455 cmd->context = htole32(ccb->ccb_id);
462 ccb->ccb_offset, ARC_MAX_IOCMDLEN,
467 if (arc_complete(sc, ccb, xs->timeout) != 0) {
479 arc_load_xs(struct arc_ccb *ccb)
481 struct arc_softc *sc = ccb->ccb_sc;
482 struct scsipi_xfer *xs = ccb->ccb_xs;
483 bus_dmamap_t dmap = ccb->ccb_dmamap;
484 struct arc_sge *sgl = ccb->ccb_cmd->sgl, *sge;
518 arc_scsi_cmd_done(struct arc_softc *sc, struct arc_ccb *ccb, uint32_t reg)
520 struct scsipi_xfer *xs = ccb->ccb_xs;
524 bus_dmamap_sync(sc->sc_dmat, ccb->ccb_dmamap, 0,
525 ccb->ccb_dmamap->dm_mapsize,
528 bus_dmamap_unload(sc->sc_dmat, ccb->ccb_dmamap);
535 cmd = &ccb->ccb_cmd->cmd;
568 arc_put_ccb(sc, ccb);
575 struct arc_ccb *ccb = NULL;
593 ccb = &sc->sc_ccbs[htole32(cmd->cmd.context)];
596 ccb->ccb_offset, ARC_MAX_IOCMDLEN,
599 arc_scsi_cmd_done(sc, ccb, reg);
600 } while (nccb != ccb);
2086 struct arc_ccb *ccb;
2099 aprint_error_dev(self, "unable to allocate ccb dmamem\n");
2105 ccb = &sc->sc_ccbs[i];
2108 MAXPHYS, 0, 0, &ccb->ccb_dmamap) != 0) {
2110 "unable to create dmamap for ccb %d\n", i);
2114 ccb->ccb_sc = sc;
2115 ccb->ccb_id = i;
2116 ccb->ccb_offset = ARC_MAX_IOCMDLEN * i;
2118 ccb->ccb_cmd = (struct arc_io_cmd *)&cmd[ccb->ccb_offset];
2119 ccb->ccb_cmd_post = (ARC_DMA_DVA(sc->sc_requests) +
2120 ccb->ccb_offset) >> ARC_REG_POST_QUEUE_ADDR_SHIFT;
2122 arc_put_ccb(sc, ccb);
2128 while ((ccb = arc_get_ccb(sc)) != NULL)
2129 bus_dmamap_destroy(sc->sc_dmat, ccb->ccb_dmamap);
2141 struct arc_ccb *ccb;
2143 ccb = TAILQ_FIRST(&sc->sc_ccb_free);
2144 if (ccb != NULL)
2145 TAILQ_REMOVE(&sc->sc_ccb_free, ccb, ccb_link);
2147 return ccb;
2151 arc_put_ccb(struct arc_softc *sc, struct arc_ccb *ccb)
2153 ccb->ccb_xs = NULL;
2154 memset(ccb->ccb_cmd, 0, ARC_MAX_IOCMDLEN);
2155 TAILQ_INSERT_TAIL(&sc->sc_ccb_free, ccb, ccb_link);