Lines Matching refs:ccb

79 static void aac_cam_action(struct cam_sim *, union ccb *);
85 static u_int32_t aac_cam_reset_bus(struct cam_sim *, union ccb *);
86 static u_int32_t aac_cam_abort_ccb(struct cam_sim *, union ccb *);
87 static u_int32_t aac_cam_term_io(struct cam_sim *, union ccb *);
112 union ccb *ccb; in aac_cam_rescan() local
125 ccb = xpt_alloc_ccb_nowait(); in aac_cam_rescan()
126 if (ccb == NULL) { in aac_cam_rescan()
132 if (xpt_create_path(&ccb->ccb_h.path, NULL, in aac_cam_rescan()
135 xpt_free_ccb(ccb); in aac_cam_rescan()
140 xpt_rescan(ccb); in aac_cam_rescan()
149 union ccb *ccb; in aac_cam_event() local
154 ccb = arg; in aac_cam_event()
155 camsc = ccb->ccb_h.sim_priv.entries[0].ptr; in aac_cam_event()
158 ccb->ccb_h.status = CAM_REQUEUE_REQ; in aac_cam_event()
159 xpt_done(ccb); in aac_cam_event()
256 aac_cam_action(struct cam_sim *sim, union ccb *ccb) in aac_cam_action() argument
270 switch(ccb->ccb_h.func_code) { in aac_cam_action()
281 ccg = &ccb->ccg; in aac_cam_action()
297 ccb->ccb_h.status = CAM_REQ_CMP; in aac_cam_action()
298 xpt_done(ccb); in aac_cam_action()
303 struct ccb_pathinq *cpi = &ccb->cpi; in aac_cam_action()
328 ccb->ccb_h.status = CAM_REQ_CMP; in aac_cam_action()
329 xpt_done(ccb); in aac_cam_action()
335 &ccb->cts.proto_specific.scsi; in aac_cam_action()
337 &ccb->cts.xport_specific.spi; in aac_cam_action()
338 ccb->cts.protocol = PROTO_SCSI; in aac_cam_action()
339 ccb->cts.protocol_version = SCSI_REV_2; in aac_cam_action()
340 ccb->cts.transport = XPORT_SPI; in aac_cam_action()
341 ccb->cts.transport_version = 2; in aac_cam_action()
342 if (ccb->ccb_h.target_lun != CAM_LUN_WILDCARD) { in aac_cam_action()
348 ccb->ccb_h.status = CAM_REQ_CMP; in aac_cam_action()
349 xpt_done(ccb); in aac_cam_action()
353 ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; in aac_cam_action()
354 xpt_done(ccb); in aac_cam_action()
358 ccb->ccb_h.status = aac_cam_reset_bus(sim, ccb); in aac_cam_action()
360 ccb->ccb_h.status = CAM_REQ_CMP; in aac_cam_action()
362 xpt_done(ccb); in aac_cam_action()
365 ccb->ccb_h.status = aac_cam_abort_ccb(sim, ccb); in aac_cam_action()
366 xpt_done(ccb); in aac_cam_action()
369 ccb->ccb_h.status = aac_cam_term_io(sim, ccb); in aac_cam_action()
370 xpt_done(ccb); in aac_cam_action()
374 ccb->ccb_h.func_code); in aac_cam_action()
375 ccb->ccb_h.status = CAM_PROVIDE_FAIL; in aac_cam_action()
376 xpt_done(ccb); in aac_cam_action()
386 ccb->ccb_h.status = CAM_RESRC_UNAVAIL; in aac_cam_action()
387 ccb->ccb_h.sim_priv.entries[0].ptr = camsc; in aac_cam_action()
396 event->ev_arg = ccb; in aac_cam_action()
406 switch (ccb->ccb_h.flags & CAM_DIR_MASK) { in aac_cam_action()
424 switch(ccb->ccb_h.func_code) { in aac_cam_action()
427 struct ccb_scsiio *csio = &ccb->csio; in aac_cam_action()
436 if (ccb->ccb_h.flags & CAM_CDB_POINTER) in aac_cam_action()
448 if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) { in aac_cam_action()
449 switch ((ccb->ccb_h.flags & CAM_DATA_MASK)) { in aac_cam_action()
487 ccb->ccb_h.status = CAM_REQ_CMP; in aac_cam_action()
488 xpt_done(ccb); in aac_cam_action()
496 srb->target = ccb->ccb_h.target_id; in aac_cam_action()
497 srb->lun = ccb->ccb_h.target_lun; in aac_cam_action()
498 srb->timeout = ccb->ccb_h.timeout; /* XXX */ in aac_cam_action()
502 cm->cm_private = ccb; in aac_cam_action()
528 aac_cam_fix_inquiry(struct aac_softc *sc, union ccb *ccb) in aac_cam_fix_inquiry() argument
535 if (ccb->ccb_h.flags & CAM_CDB_POINTER) in aac_cam_fix_inquiry()
536 data = ccb->csio.cdb_io.cdb_ptr; in aac_cam_fix_inquiry()
538 data = ccb->csio.cdb_io.cdb_bytes; in aac_cam_fix_inquiry()
543 if (ccb->ccb_h.status == CAM_REQ_CMP) { in aac_cam_fix_inquiry()
544 inq = (struct scsi_inquiry_data *)ccb->csio.data_ptr; in aac_cam_fix_inquiry()
565 ccb->csio.data_ptr[0] = (qual << 5) | T_NODEVICE; in aac_cam_fix_inquiry()
567 } else if (ccb->ccb_h.status == CAM_SEL_TIMEOUT && in aac_cam_fix_inquiry()
568 ccb->ccb_h.target_lun != 0) { in aac_cam_fix_inquiry()
570 ccb->ccb_h.status = CAM_DEV_NOT_THERE; in aac_cam_fix_inquiry()
577 union ccb *ccb; in aac_cam_complete() local
584 ccb = cm->cm_private; in aac_cam_complete()
589 ccb->ccb_h.status = CAM_REQ_ABORTED; in aac_cam_complete()
595 ccb->ccb_h.status = srbr->srb_status; in aac_cam_complete()
598 if (ccb->ccb_h.func_code == XPT_SCSI_IO) { in aac_cam_complete()
599 ccb->csio.scsi_status = srbr->scsi_status; in aac_cam_complete()
604 if (sense_returned < ccb->csio.sense_len) in aac_cam_complete()
605 ccb->csio.sense_resid = in aac_cam_complete()
606 ccb->csio.sense_len - in aac_cam_complete()
609 ccb->csio.sense_resid = 0; in aac_cam_complete()
610 bzero(&ccb->csio.sense_data, in aac_cam_complete()
612 bcopy(&srbr->sense[0], &ccb->csio.sense_data, in aac_cam_complete()
613 min(ccb->csio.sense_len, sense_returned)); in aac_cam_complete()
614 ccb->ccb_h.status |= CAM_AUTOSNS_VALID; in aac_cam_complete()
618 aac_cam_fix_inquiry(sc, ccb); in aac_cam_complete()
623 xpt_done(ccb); in aac_cam_complete()
627 aac_cam_reset_bus(struct cam_sim *sim, union ccb *ccb) in aac_cam_reset_bus() argument
672 aac_cam_abort_ccb(struct cam_sim *sim, union ccb *ccb) in aac_cam_abort_ccb() argument
678 aac_cam_term_io(struct cam_sim *sim, union ccb *ccb) in aac_cam_term_io() argument