Lines Matching refs:ccb

143 static void mpssas_action(struct cam_sim *sim, union ccb *ccb);
148 struct mps_command *cm, union ccb *ccb);
149 static void mpssas_action_scsiio(struct mpssas_softc *, union ccb *);
151 static void mpssas_action_resetdev(struct mpssas_softc *, union ccb *);
154 static void mpssas_send_smpcmd(struct mpssas_softc *sassc, union ccb *ccb,
156 static void mpssas_action_smpio(struct mpssas_softc *sassc, union ccb *ccb);
161 static void mpssas_rescan(struct mpssas_softc *sassc, union ccb *ccb);
162 static void mpssas_rescan_done(struct cam_periph *periph, union ccb *done_ccb);
169 static void mpssas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb);
279 union ccb *ccb; in mpssas_rescan_target() local
290 ccb = xpt_alloc_ccb(); in mpssas_rescan_target()
292 if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid, in mpssas_rescan_target()
295 xpt_free_ccb(&ccb->ccb_h); in mpssas_rescan_target()
300 ccb->ccb_h.func_code = XPT_SCAN_BUS; in mpssas_rescan_target()
302 mpssas_rescan(sassc, ccb); in mpssas_rescan_target()
593 union ccb *ccb; in mpssas_remove_device() local
596 ccb = tm->cm_complete_data; in mpssas_remove_device()
597 ccb->ccb_h.status = CAM_DEV_NOT_THERE; in mpssas_remove_device()
893 mpssas_action(struct cam_sim *sim, union ccb *ccb) in mpssas_action() argument
900 ccb->ccb_h.func_code); in mpssas_action()
903 switch (ccb->ccb_h.func_code) { in mpssas_action()
906 struct ccb_pathinq *cpi = &ccb->cpi; in mpssas_action()
942 cts = &ccb->cts; in mpssas_action()
979 cam_calc_geometry(&ccb->ccg, /*extended*/1); in mpssas_action()
983 mpssas_action_resetdev(sassc, ccb); in mpssas_action()
990 ccb->ccb_h.status = CAM_REQ_CMP; in mpssas_action()
993 mpssas_action_scsiio(sassc, ccb); in mpssas_action()
997 mpssas_action_smpio(sassc, ccb); in mpssas_action()
1001 ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; in mpssas_action()
1004 xpt_done(ccb); in mpssas_action()
1555 mpssas_action_scsiio(struct mpssas_softc *sassc, union ccb *ccb) in mpssas_action_scsiio() argument
1567 mps_dprint(sc, MPS_TRACE, "%s ccb %p\n", __func__, ccb); in mpssas_action_scsiio()
1570 csio = &ccb->csio; in mpssas_action_scsiio()
1576 xpt_done(ccb); in mpssas_action_scsiio()
1583 xpt_done(ccb); in mpssas_action_scsiio()
1597 xpt_done(ccb); in mpssas_action_scsiio()
1604 xpt_done(ccb); in mpssas_action_scsiio()
1614 ccb->ccb_h.status &= ~CAM_SIM_QUEUED; in mpssas_action_scsiio()
1615 ccb->ccb_h.status |= CAM_REQUEUE_REQ; in mpssas_action_scsiio()
1616 xpt_done(ccb); in mpssas_action_scsiio()
1680 ccb->ccb_h.status = CAM_LUN_INVALID; in mpssas_action_scsiio()
1681 xpt_done(ccb); in mpssas_action_scsiio()
1750 cm->cm_complete_data = ccb; in mpssas_action_scsiio()
1753 cm->cm_ccb = ccb; in mpssas_action_scsiio()
1761 if (ccb->ccb_h.status != MPS_WD_RETRY) { in mpssas_action_scsiio()
1762 mpssas_direct_drive_io(sassc, cm, ccb); in mpssas_action_scsiio()
1764 ccb->ccb_h.status = CAM_REQ_INPROG; in mpssas_action_scsiio()
1768 callout_reset(&cm->cm_callout, (ccb->ccb_h.timeout * hz) / 1000, in mpssas_action_scsiio()
1777 __func__, cm, ccb, targ->outstanding); in mpssas_action_scsiio()
1787 union ccb *ccb; in mpssas_scsiio_complete() local
1804 ccb = cm->cm_complete_data; in mpssas_scsiio_complete()
1805 csio = &ccb->csio; in mpssas_scsiio_complete()
1865 ccb->ccb_h.status |= CAM_REQUEUE_REQ; in mpssas_scsiio_complete()
1888 if ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_INPROG) { in mpssas_scsiio_complete()
1890 ccb->ccb_h.status = CAM_SCSI_BUS_RESET; in mpssas_scsiio_complete()
1892 ccb->ccb_h.status = CAM_REQ_CMP; in mpssas_scsiio_complete()
1893 ccb->csio.scsi_status = SCSI_STATUS_OK; in mpssas_scsiio_complete()
1896 ccb->ccb_h.status |= CAM_RELEASE_SIMQ; in mpssas_scsiio_complete()
1908 if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { in mpssas_scsiio_complete()
1914 ccb->ccb_h.status |= CAM_DEV_QFRZN; in mpssas_scsiio_complete()
1915 xpt_freeze_devq(ccb->ccb_h.path, /*count*/ 1); in mpssas_scsiio_complete()
1918 xpt_done(ccb); in mpssas_scsiio_complete()
1936 ccb->ccb_h.status = MPS_WD_RETRY; in mpssas_scsiio_complete()
1937 mpssas_action_scsiio(sassc, ccb); in mpssas_scsiio_complete()
1955 ccb->ccb_h.status = CAM_REQ_CMP_ERR; in mpssas_scsiio_complete()
1964 ccb->ccb_h.status = CAM_AUTOSENSE_FAIL; in mpssas_scsiio_complete()
1988 ccb->ccb_h.status = CAM_REQ_ABORTED; in mpssas_scsiio_complete()
1995 ccb->ccb_h.status = CAM_REQ_CMP; in mpssas_scsiio_complete()
1997 ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR; in mpssas_scsiio_complete()
2004 if (returned_sense_len < ccb->csio.sense_len) in mpssas_scsiio_complete()
2005 ccb->csio.sense_resid = ccb->csio.sense_len - in mpssas_scsiio_complete()
2008 ccb->csio.sense_resid = 0; in mpssas_scsiio_complete()
2011 ccb->csio.sense_len - ccb->csio.sense_resid); in mpssas_scsiio_complete()
2012 bzero(&ccb->csio.sense_data, in mpssas_scsiio_complete()
2013 sizeof(ccb->csio.sense_data)); in mpssas_scsiio_complete()
2014 bcopy(cm->cm_sense, &ccb->csio.sense_data, sense_len); in mpssas_scsiio_complete()
2015 ccb->ccb_h.status |= CAM_AUTOSNS_VALID; in mpssas_scsiio_complete()
2058 ccb->ccb_h.status = CAM_REQ_CMP; in mpssas_scsiio_complete()
2060 ccb->ccb_h.status = CAM_DEV_NOT_THERE; in mpssas_scsiio_complete()
2064 ccb->ccb_h.status = CAM_UNREC_HBA_ERROR; in mpssas_scsiio_complete()
2077 ccb->ccb_h.status = CAM_CMD_TIMEOUT; in mpssas_scsiio_complete()
2079 ccb->ccb_h.status = CAM_REQ_ABORTED; in mpssas_scsiio_complete()
2084 ccb->ccb_h.status = CAM_DATA_RUN_ERR; in mpssas_scsiio_complete()
2093 ccb->ccb_h.status = CAM_REQUEUE_REQ; in mpssas_scsiio_complete()
2115 ccb->ccb_h.status = CAM_REQ_CMP_ERR; in mpssas_scsiio_complete()
2120 ccb->ccb_h.status |= CAM_RELEASE_SIMQ; in mpssas_scsiio_complete()
2126 if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { in mpssas_scsiio_complete()
2127 ccb->ccb_h.status |= CAM_DEV_QFRZN; in mpssas_scsiio_complete()
2128 xpt_freeze_devq(ccb->ccb_h.path, /*count*/ 1); in mpssas_scsiio_complete()
2132 xpt_done(ccb); in mpssas_scsiio_complete()
2137 union ccb *ccb) { in mpssas_direct_drive_io() argument
2402 union ccb *ccb;
2404 ccb = cm->cm_complete_data;
2415 ccb->ccb_h.status = CAM_REQ_CMP_ERR;
2422 ccb->ccb_h.status = CAM_REQ_CMP_ERR;
2434 ccb->ccb_h.status = CAM_REQ_CMP_ERR;
2442 if (ccb->smpio.smp_response[2] == SMP_FR_ACCEPTED)
2443 ccb->ccb_h.status = CAM_REQ_CMP;
2445 ccb->ccb_h.status = CAM_SMP_STATUS_ERROR;
2456 xpt_done(ccb);
2460 mpssas_send_smpcmd(struct mpssas_softc *sassc, union ccb *ccb, uint64_t sasaddr)
2474 if (ccb->ccb_h.flags & (CAM_DATA_PHYS|CAM_SG_LIST_PHYS)) {
2477 ccb->ccb_h.status = CAM_REQ_INVALID;
2478 xpt_done(ccb);
2486 if (ccb->ccb_h.flags & CAM_SCATTER_VALID) {
2491 if ((ccb->smpio.smp_request_sglist_cnt > 1)
2492 || (ccb->smpio.smp_response_sglist_cnt > 1)) {
2496 ccb->ccb_h.status = CAM_REQ_INVALID;
2497 xpt_done(ccb);
2509 if (ccb->smpio.smp_request_sglist_cnt != 0) {
2512 req_sg = (bus_dma_segment_t *)ccb->smpio.smp_request;
2515 request = ccb->smpio.smp_request;
2517 if (ccb->smpio.smp_response_sglist_cnt != 0) {
2520 rsp_sg = (bus_dma_segment_t *)ccb->smpio.smp_response;
2523 response = ccb->smpio.smp_response;
2525 request = ccb->smpio.smp_request;
2526 response = ccb->smpio.smp_response;
2532 ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
2533 xpt_done(ccb);
2544 req->RequestDataLength = ccb->smpio.smp_request_len;
2571 cm->cm_iovec[1].iov_len = ccb->smpio.smp_response_len;
2585 cm->cm_complete_data = ccb;
2619 ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
2620 xpt_done(ccb);
2626 mpssas_action_smpio(struct mpssas_softc *sassc, union ccb *ccb)
2637 targ = &sassc->targets[ccb->ccb_h.target_id];
2640 ccb->ccb_h.target_id);
2641 ccb->ccb_h.status = CAM_SEL_TIMEOUT;
2642 xpt_done(ccb);
2674 sasaddr = xpt_path_sas_addr(ccb->ccb_h.path);
2689 ccb->ccb_h.status = CAM_REQ_INVALID;
2699 ccb->ccb_h.status = CAM_REQ_INVALID;
2708 ccb->ccb_h.status = CAM_REQ_INVALID;
2720 ccb->ccb_h.status = CAM_REQ_INVALID;
2728 ccb->ccb_h.status = CAM_REQ_INVALID;
2740 ccb->ccb_h.status = CAM_REQ_INVALID;
2743 mpssas_send_smpcmd(sassc, ccb, sasaddr);
2748 xpt_done(ccb);
2754 mpssas_action_resetdev(struct mpssas_softc *sassc, union ccb *ccb) in mpssas_action_resetdev() argument
2768 ccb->ccb_h.status = CAM_RESRC_UNAVAIL; in mpssas_action_resetdev()
2769 xpt_done(ccb); in mpssas_action_resetdev()
2773 targ = &sassc->targets[ccb->ccb_h.target_id]; in mpssas_action_resetdev()
2785 tm->cm_complete_data = ccb; in mpssas_action_resetdev()
2794 union ccb *ccb; in mpssas_resetdev_complete() local
2800 ccb = tm->cm_complete_data; in mpssas_resetdev_complete()
2815 ccb->ccb_h.status = CAM_REQ_CMP_ERR; in mpssas_resetdev_complete()
2823 ccb->ccb_h.status = CAM_REQ_CMP; in mpssas_resetdev_complete()
2828 ccb->ccb_h.status = CAM_REQ_CMP_ERR; in mpssas_resetdev_complete()
2833 xpt_done(ccb); in mpssas_resetdev_complete()
2855 mpssas_rescan_done(struct cam_periph *periph, union ccb *done_ccb) in mpssas_rescan_done()
2889 union ccb *ccb; in mpssas_scanner_thread() local
2906 ccb = (union ccb *)TAILQ_FIRST(&sassc->ccb_scanq); in mpssas_scanner_thread()
2907 if (ccb == NULL) in mpssas_scanner_thread()
2910 TAILQ_REMOVE(&sassc->ccb_scanq, &ccb->ccb_h, sim_links.tqe); in mpssas_scanner_thread()
2911 xpt_action(ccb); in mpssas_scanner_thread()
2927 mpssas_rescan(struct mpssas_softc *sassc, union ccb *ccb) in mpssas_rescan() argument
2935 if (ccb == NULL) in mpssas_rescan()
2938 xpt_path_string(ccb->ccb_h.path, path_str, sizeof(path_str)); in mpssas_rescan()
2942 ccb->ccb_h.ppriv_ptr1 = sassc; in mpssas_rescan()
2943 ccb->ccb_h.cbfcnp = mpssas_rescan_done; in mpssas_rescan()
2944 xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, MPS_PRIORITY_XPT); in mpssas_rescan()
2945 TAILQ_INSERT_TAIL(&sassc->ccb_scanq, &ccb->ccb_h, sim_links.tqe); in mpssas_rescan()
3024 xpt_action((union ccb *)cdai);
3053 union ccb *ccb; in mpssas_check_eedp() local
3083 ccb = xpt_alloc_ccb(); in mpssas_check_eedp()
3085 if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, in mpssas_check_eedp()
3090 xpt_free_ccb(&ccb->ccb_h); in mpssas_check_eedp()
3098 if ((found_periph = cam_periph_find(ccb->ccb_h.path, in mpssas_check_eedp()
3125 csio = &ccb->csio; in mpssas_check_eedp()
3150 ccb->ccb_h.path_id = in mpssas_check_eedp()
3151 xpt_path_path_id(ccb->ccb_h.path); in mpssas_check_eedp()
3152 ccb->ccb_h.target_id = in mpssas_check_eedp()
3153 xpt_path_target_id(ccb->ccb_h.path); in mpssas_check_eedp()
3154 ccb->ccb_h.target_lun = in mpssas_check_eedp()
3155 xpt_path_lun_id(ccb->ccb_h.path); in mpssas_check_eedp()
3157 ccb->ccb_h.ppriv_ptr1 = sassc; in mpssas_check_eedp()
3158 xpt_action(ccb); in mpssas_check_eedp()
3161 xpt_free_path(ccb->ccb_h.path); in mpssas_check_eedp()
3162 xpt_free_ccb(&ccb->ccb_h); in mpssas_check_eedp()
3170 mpssas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb) in mpssas_read_cap_done()