Lines Matching refs:ccb

122 static void mprsas_action(struct cam_sim *sim, union ccb *ccb);
126 static void mprsas_action_scsiio(struct mprsas_softc *, union ccb *);
128 static void mprsas_action_resetdev(struct mprsas_softc *, union ccb *);
139 union ccb *done_ccb);
147 static void mprsas_send_smpcmd(struct mprsas_softc *sassc, union ccb *ccb,
149 static void mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb);
281 union ccb *ccb;
293 ccb = xpt_alloc_ccb_nowait();
294 if (ccb == NULL) {
299 if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid,
302 xpt_free_ccb(ccb);
307 ccb->ccb_h.func_code = XPT_SCAN_BUS;
309 ccb->ccb_h.func_code = XPT_SCAN_TGT;
312 xpt_rescan(ccb);
612 union ccb *ccb;
615 ccb = tm->cm_complete_data;
616 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
990 mprsas_action(struct cam_sim *sim, union ccb *ccb)
997 mpr_dprint(sassc->sc, MPR_TRACE, "ccb func_code 0x%x\n",
998 ccb->ccb_h.func_code);
1001 switch (ccb->ccb_h.func_code) {
1004 struct ccb_pathinq *cpi = &ccb->cpi;
1058 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
1068 cts = &ccb->cts;
1077 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
1107 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
1111 cam_calc_geometry(&ccb->ccg, /*extended*/1);
1112 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
1117 mprsas_action_resetdev(sassc, ccb);
1124 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
1127 mprsas_action_scsiio(sassc, ccb);
1131 mprsas_action_smpio(sassc, ccb);
1135 mprsas_set_ccbstatus(ccb, CAM_FUNC_NOTAVAIL);
1138 xpt_done(ccb);
1184 "completing cm %p state %x ccb %p for diag reset\n",
1192 "waking up cm %p state %x ccb %p for diag reset\n",
1204 "cm %p state %x flags 0x%x ccb %p during diag "
1663 mpr_dprint(sc, MPR_ERROR, "command timeout with NULL ccb\n");
1725 union ccb *ccb, struct mprsas_target *targ)
1737 csio = &ccb->csio;
1742 list_len = (ccb->csio.cdb_io.cdb_ptr[7] << 8 |
1743 ccb->csio.cdb_io.cdb_ptr[8]);
1745 list_len = (ccb->csio.cdb_io.cdb_bytes[7] << 8 |
1746 ccb->csio.cdb_io.cdb_bytes[8]);
1836 cm->cm_complete_data = ccb;
1839 cm->cm_ccb = ccb;
1845 callout_reset_sbt(&cm->cm_callout, SBT_1MS * ccb->ccb_h.timeout, 0,
1848 callout_reset(&cm->cm_callout, (ccb->ccb_h.timeout * hz) / 1000,
1855 ccb->ccb_h.status |= CAM_SIM_QUEUED;
1857 mprsas_log_command(cm, MPR_XINFO, "%s cm %p ccb %p outstanding %u\n",
1858 __func__, cm, ccb, targ->outstanding);
1870 mprsas_action_scsiio(struct mprsas_softc *sassc, union ccb *ccb)
1887 csio = &ccb->csio;
1892 mpr_dprint(sc, MPR_TRACE, "ccb %p target flag %x\n", ccb, targ->flags);
1896 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
1897 xpt_done(ccb);
1903 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
1904 xpt_done(ccb);
1912 if (mprsas_get_ccbstatus(ccb) != CAM_REQ_INPROG) {
1915 xpt_done(ccb);
1925 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
1927 mprsas_set_ccbstatus(ccb, CAM_SEL_TIMEOUT);
1928 xpt_done(ccb);
1934 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
1935 xpt_done(ccb);
1944 ccb->ccb_h.status = CAM_BUSY | CAM_DEV_QFRZN;
1947 xpt_freeze_devq(ccb->ccb_h.path, 1);
1948 xpt_done(ccb);
1961 ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
1962 ccb->ccb_h.status |= CAM_REQUEUE_REQ;
1963 xpt_done(ccb);
1981 rc = mprsas_build_nvme_unmap(sc, cm, ccb, targ);
1984 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
1985 xpt_done(ccb);
2054 mprsas_set_ccbstatus(ccb, CAM_LUN_INVALID);
2055 xpt_done(ccb);
2130 cm->cm_data = ccb;
2138 cm->cm_complete_data = ccb;
2141 cm->cm_ccb = ccb;
2163 callout_reset_sbt(&cm->cm_callout, SBT_1MS * ccb->ccb_h.timeout, 0,
2166 callout_reset(&cm->cm_callout, (ccb->ccb_h.timeout * hz) / 1000,
2173 ccb->ccb_h.status |= CAM_SIM_QUEUED;
2175 mprsas_log_command(cm, MPR_XINFO, "%s cm %p ccb %p outstanding %u\n",
2176 __func__, cm, ccb, targ->outstanding);
2395 union ccb *ccb = cm->cm_complete_data;
2542 if (returned_sense_len < ccb->csio.sense_len)
2543 ccb->csio.sense_resid = ccb->csio.sense_len -
2546 ccb->csio.sense_resid = 0;
2548 scsi_set_sense_data(&ccb->csio.sense_data, SSD_TYPE_FIXED,
2550 ccb->ccb_h.status |= CAM_AUTOSNS_VALID;
2580 union ccb *ccb;
2592 "cm %p SMID %u ccb %p reply %p outstanding %u\n", cm,
2600 ccb = cm->cm_complete_data;
2601 csio = &ccb->csio;
2621 ccb->ccb_h.status &= ~(CAM_STATUS_MASK | CAM_SIM_QUEUED);
2627 "completed timedout cm %p ccb %p during recovery "
2633 "completed timedout cm %p ccb %p during recovery\n",
2638 "completed cm %p ccb %p during recovery "
2645 "completed cm %p ccb %p during recovery\n",
2649 "reset completed cm %p ccb %p\n", cm, cm->cm_ccb);
2661 mprsas_set_ccbstatus(ccb, CAM_REQUEUE_REQ);
2710 if (mprsas_get_ccbstatus(ccb) == CAM_REQ_INPROG) {
2712 mprsas_set_ccbstatus(ccb, CAM_SCSI_BUS_RESET);
2714 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
2718 ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
2730 if (mprsas_get_ccbstatus(ccb) != CAM_REQ_CMP) {
2736 ccb->ccb_h.status |= CAM_DEV_QFRZN;
2737 xpt_freeze_devq(ccb->ccb_h.path, /*count*/ 1);
2740 xpt_done(ccb);
2770 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
2779 mprsas_set_ccbstatus(ccb, CAM_AUTOSENSE_FAIL);
2803 mprsas_set_ccbstatus(ccb, CAM_REQ_ABORTED);
2810 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
2812 mprsas_set_ccbstatus(ccb, CAM_SCSI_STATUS_ERROR);
2829 ccb->ccb_h.status |= CAM_AUTOSNS_VALID;
2892 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
2894 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
2898 mprsas_set_ccbstatus(ccb, CAM_UNREC_HBA_ERROR);
2911 mprsas_set_ccbstatus(ccb, CAM_CMD_TIMEOUT);
2913 mprsas_set_ccbstatus(ccb, CAM_REQ_ABORTED);
2918 mprsas_set_ccbstatus(ccb, CAM_DATA_RUN_ERR);
2936 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
2964 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
2966 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
2974 ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
2980 if (mprsas_get_ccbstatus(ccb) != CAM_REQ_CMP) {
2981 ccb->ccb_h.status |= CAM_DEV_QFRZN;
2982 xpt_freeze_devq(ccb->ccb_h.path, /*count*/ 1);
2986 xpt_done(ccb);
2996 union ccb *ccb;
2998 ccb = cm->cm_complete_data;
3009 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
3016 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
3029 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
3036 if (ccb->smpio.smp_response[2] == SMP_FR_ACCEPTED)
3037 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
3039 mprsas_set_ccbstatus(ccb, CAM_SMP_STATUS_ERROR);
3050 xpt_done(ccb);
3054 mprsas_send_smpcmd(struct mprsas_softc *sassc, union ccb *ccb, uint64_t sasaddr)
3069 switch (ccb->ccb_h.flags & CAM_DATA_MASK) {
3077 mprsas_set_ccbstatus(ccb, CAM_REQ_INVALID);
3078 xpt_done(ccb);
3085 if ((ccb->smpio.smp_request_sglist_cnt > 1)
3086 || (ccb->smpio.smp_response_sglist_cnt > 1)) {
3090 mprsas_set_ccbstatus(ccb, CAM_REQ_INVALID);
3091 xpt_done(ccb);
3103 if (ccb->smpio.smp_request_sglist_cnt != 0) {
3106 req_sg = (bus_dma_segment_t *)ccb->smpio.smp_request;
3109 request = ccb->smpio.smp_request;
3111 if (ccb->smpio.smp_response_sglist_cnt != 0) {
3114 rsp_sg = (bus_dma_segment_t *)ccb->smpio.smp_response;
3117 response = ccb->smpio.smp_response;
3120 request = ccb->smpio.smp_request;
3121 response = ccb->smpio.smp_response;
3124 mprsas_set_ccbstatus(ccb, CAM_REQ_INVALID);
3125 xpt_done(ccb);
3132 if (ccb->ccb_h.flags & (CAM_DATA_PHYS|CAM_SG_LIST_PHYS)) {
3135 mprsas_set_ccbstatus(ccb, CAM_REQ_INVALID);
3136 xpt_done(ccb);
3144 if (ccb->ccb_h.flags & CAM_SCATTER_VALID) {
3149 if ((ccb->smpio.smp_request_sglist_cnt > 1)
3150 || (ccb->smpio.smp_response_sglist_cnt > 1)) {
3154 mprsas_set_ccbstatus(ccb, CAM_REQ_INVALID);
3155 xpt_done(ccb);
3167 if (ccb->smpio.smp_request_sglist_cnt != 0) {
3170 req_sg = (bus_dma_segment_t *)ccb->smpio.smp_request;
3173 request = ccb->smpio.smp_request;
3175 if (ccb->smpio.smp_response_sglist_cnt != 0) {
3178 rsp_sg = (bus_dma_segment_t *)ccb->smpio.smp_response;
3181 response = ccb->smpio.smp_response;
3183 request = ccb->smpio.smp_request;
3184 response = ccb->smpio.smp_response;
3192 mprsas_set_ccbstatus(ccb, CAM_RESRC_UNAVAIL);
3193 xpt_done(ccb);
3204 req->RequestDataLength = htole16(ccb->smpio.smp_request_len);
3231 cm->cm_iovec[1].iov_len = ccb->smpio.smp_response_len;
3245 cm->cm_complete_data = ccb;
3279 mprsas_set_ccbstatus(ccb, CAM_RESRC_UNAVAIL);
3280 xpt_done(ccb);
3285 mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb)
3296 KASSERT(ccb->ccb_h.target_id < sassc->maxtargets,
3297 ("Target %d out of bounds in XPT_SMP_IO\n", ccb->ccb_h.target_id));
3298 targ = &sassc->targets[ccb->ccb_h.target_id];
3301 __func__, ccb->ccb_h.target_id);
3302 mprsas_set_ccbstatus(ccb, CAM_SEL_TIMEOUT);
3303 xpt_done(ccb);
3335 sasaddr = xpt_path_sas_addr(ccb->ccb_h.path);
3350 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
3360 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
3369 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
3380 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
3388 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
3400 mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
3403 mprsas_send_smpcmd(sassc, ccb, sasaddr);
3408 xpt_done(ccb);
3414 mprsas_action_resetdev(struct mprsas_softc *sassc, union ccb *ccb)
3424 KASSERT(ccb->ccb_h.target_id < sassc->maxtargets, ("Target %d out of "
3425 "bounds in XPT_RESET_DEV\n", ccb->ccb_h.target_id));
3431 mprsas_set_ccbstatus(ccb, CAM_RESRC_UNAVAIL);
3432 xpt_done(ccb);
3436 targ = &sassc->targets[ccb->ccb_h.target_id];
3449 tm->cm_complete_data = ccb;
3463 union ccb *ccb;
3469 ccb = tm->cm_complete_data;
3484 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
3492 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP);
3497 mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR);
3502 xpt_done(ccb);
3612 xpt_action((union ccb *)&cdai);
3616 if ((mprsas_get_ccbstatus((union ccb *)&cdai) == CAM_REQ_CMP)
3678 union ccb *ccb;
3709 ccb = xpt_alloc_ccb_nowait();
3710 if (ccb == NULL) {
3720 xpt_free_ccb(ccb);
3741 xpt_free_ccb(ccb);
3762 xpt_free_path(ccb->ccb_h.path);
3763 xpt_free_ccb(ccb);
3766 xpt_setup_ccb(&ccb->ccb_h, local_path, CAM_PRIORITY_XPT);
3767 csio = &ccb->csio;
3785 ccb->ccb_h.ppriv_ptr1 = sassc;
3786 xpt_action(ccb);
3790 mprsas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb)
3864 union ccb *ccb;
3874 ccb = xpt_alloc_ccb_nowait();
3875 if (ccb) {
3877 if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, path_id,
3879 xpt_free_ccb(ccb);
3881 tm->cm_ccb = ccb;