Lines Matching refs:scmd

47 	struct scsi_cmnd *scmd)  in mpi3mr_host_tag_for_scmd()  argument
53 unique_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd)); in mpi3mr_host_tag_for_scmd()
63 priv = scsi_cmd_priv(scmd); in mpi3mr_host_tag_for_scmd()
66 priv->scmd = scmd; in mpi3mr_host_tag_for_scmd()
89 struct scsi_cmnd *scmd = NULL; in mpi3mr_scmd_from_host_tag() local
98 scmd = scsi_host_find_tag(mrioc->shost, unique_tag); in mpi3mr_scmd_from_host_tag()
99 if (scmd) { in mpi3mr_scmd_from_host_tag()
100 priv = scsi_cmd_priv(scmd); in mpi3mr_scmd_from_host_tag()
102 scmd = NULL; in mpi3mr_scmd_from_host_tag()
105 return scmd; in mpi3mr_scmd_from_host_tag()
119 struct scsi_cmnd *scmd) in mpi3mr_clear_scmd_priv() argument
123 priv = scsi_cmd_priv(scmd); in mpi3mr_clear_scmd_priv()
129 priv->scmd = NULL; in mpi3mr_clear_scmd_priv()
364 struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq); in mpi3mr_print_scmd() local
367 if (scmd) { in mpi3mr_print_scmd()
368 priv = scsi_cmd_priv(scmd); in mpi3mr_print_scmd()
374 scsi_print_command(scmd); in mpi3mr_print_scmd()
397 struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq); in mpi3mr_flush_scmd() local
400 if (scmd) { in mpi3mr_flush_scmd()
401 priv = scsi_cmd_priv(scmd); in mpi3mr_flush_scmd()
406 dma_unmap_sg(&mrioc->pdev->dev, scsi_prot_sglist(scmd), in mpi3mr_flush_scmd()
407 scsi_prot_sg_count(scmd), scmd->sc_data_direction); in mpi3mr_flush_scmd()
408 mpi3mr_clear_scmd_priv(mrioc, scmd); in mpi3mr_flush_scmd()
409 scsi_dma_unmap(scmd); in mpi3mr_flush_scmd()
410 scmd->result = DID_RESET << 16; in mpi3mr_flush_scmd()
411 scsi_print_command(scmd); in mpi3mr_flush_scmd()
412 scsi_done(scmd); in mpi3mr_flush_scmd()
1962 struct scsi_cmnd *scmd, struct mpi3_scsi_io_request *scsiio_req) in mpi3mr_setup_eedp() argument
1965 unsigned char prot_op = scsi_get_prot_op(scmd); in mpi3mr_setup_eedp()
1989 if (scmd->prot_flags & SCSI_PROT_IP_CHECKSUM) { in mpi3mr_setup_eedp()
2002 if (scmd->prot_flags & SCSI_PROT_GUARD_CHECK) in mpi3mr_setup_eedp()
2005 if (scmd->prot_flags & SCSI_PROT_IP_CHECKSUM) in mpi3mr_setup_eedp()
2008 if (scmd->prot_flags & SCSI_PROT_REF_CHECK) { in mpi3mr_setup_eedp()
2012 cpu_to_be32(scsi_prot_ref_tag(scmd)); in mpi3mr_setup_eedp()
2015 if (scmd->prot_flags & SCSI_PROT_REF_INCREMENT) in mpi3mr_setup_eedp()
2020 switch (scsi_prot_interval(scmd)) { in mpi3mr_setup_eedp()
2091 static void mpi3mr_map_eedp_error(struct scsi_cmnd *scmd, in mpi3mr_map_eedp_error() argument
2111 mpi3mr_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, in mpi3mr_map_eedp_error()
2113 scmd->result = (DID_ABORT << 16) | SAM_STAT_CHECK_CONDITION; in mpi3mr_map_eedp_error()
2140 struct scsi_cmnd *scmd = NULL; in mpi3mr_process_op_reply_desc() local
2196 scmd = mpi3mr_scmd_from_host_tag(mrioc, host_tag, qidx); in mpi3mr_process_op_reply_desc()
2197 if (!scmd) { in mpi3mr_process_op_reply_desc()
2202 priv = scsi_cmd_priv(scmd); in mpi3mr_process_op_reply_desc()
2204 scmd->result = DID_OK << 16; in mpi3mr_process_op_reply_desc()
2217 memcpy(scmd->sense_buffer, sense_buf, sz); in mpi3mr_process_op_reply_desc()
2223 scmd->result = SAM_STAT_BUSY; in mpi3mr_process_op_reply_desc()
2226 scmd->result = DID_NO_CONNECT << 16; in mpi3mr_process_op_reply_desc()
2229 scmd->result = DID_SOFT_ERROR << 16; in mpi3mr_process_op_reply_desc()
2233 scmd->result = DID_RESET << 16; in mpi3mr_process_op_reply_desc()
2236 if ((xfer_count == 0) || (scmd->underflow > xfer_count)) in mpi3mr_process_op_reply_desc()
2237 scmd->result = DID_SOFT_ERROR << 16; in mpi3mr_process_op_reply_desc()
2239 scmd->result = (DID_OK << 16) | scsi_status; in mpi3mr_process_op_reply_desc()
2242 scmd->result = (DID_OK << 16) | scsi_status; in mpi3mr_process_op_reply_desc()
2245 if (xfer_count < scmd->underflow) { in mpi3mr_process_op_reply_desc()
2247 scmd->result = SAM_STAT_BUSY; in mpi3mr_process_op_reply_desc()
2249 scmd->result = DID_SOFT_ERROR << 16; in mpi3mr_process_op_reply_desc()
2252 scmd->result = DID_SOFT_ERROR << 16; in mpi3mr_process_op_reply_desc()
2254 scmd->result = DID_RESET << 16; in mpi3mr_process_op_reply_desc()
2257 scsi_set_resid(scmd, 0); in mpi3mr_process_op_reply_desc()
2261 scmd->result = (DID_OK << 16) | scsi_status; in mpi3mr_process_op_reply_desc()
2265 scmd->result = DID_SOFT_ERROR << 16; in mpi3mr_process_op_reply_desc()
2267 scmd->result = DID_RESET << 16; in mpi3mr_process_op_reply_desc()
2272 mpi3mr_map_eedp_error(scmd, ioc_status); in mpi3mr_process_op_reply_desc()
2284 scmd->result = DID_SOFT_ERROR << 16; in mpi3mr_process_op_reply_desc()
2288 if (scmd->result != (DID_OK << 16) && (scmd->cmnd[0] != ATA_12) && in mpi3mr_process_op_reply_desc()
2289 (scmd->cmnd[0] != ATA_16)) { in mpi3mr_process_op_reply_desc()
2291 scmd->result); in mpi3mr_process_op_reply_desc()
2292 scsi_print_command(scmd); in mpi3mr_process_op_reply_desc()
2310 dma_unmap_sg(&mrioc->pdev->dev, scsi_prot_sglist(scmd), in mpi3mr_process_op_reply_desc()
2311 scsi_prot_sg_count(scmd), scmd->sc_data_direction); in mpi3mr_process_op_reply_desc()
2313 mpi3mr_clear_scmd_priv(mrioc, scmd); in mpi3mr_process_op_reply_desc()
2314 scsi_dma_unmap(scmd); in mpi3mr_process_op_reply_desc()
2315 scsi_done(scmd); in mpi3mr_process_op_reply_desc()
2363 struct scsi_cmnd *scmd, struct mpi3_scsi_io_request *scsiio_req) in mpi3mr_prepare_sg_scmd() argument
2379 priv = scsi_cmd_priv(scmd); in mpi3mr_prepare_sg_scmd()
2399 sg_scmd = scsi_prot_sglist(scmd); in mpi3mr_prepare_sg_scmd()
2401 scsi_prot_sglist(scmd), in mpi3mr_prepare_sg_scmd()
2402 scsi_prot_sg_count(scmd), in mpi3mr_prepare_sg_scmd()
2403 scmd->sc_data_direction); in mpi3mr_prepare_sg_scmd()
2406 sg_scmd = scsi_sglist(scmd); in mpi3mr_prepare_sg_scmd()
2407 sges_left = scsi_dma_map(scmd); in mpi3mr_prepare_sg_scmd()
2411 sdev_printk(KERN_ERR, scmd->device, in mpi3mr_prepare_sg_scmd()
2413 scsi_bufflen(scmd)); in mpi3mr_prepare_sg_scmd()
2417 sdev_printk(KERN_ERR, scmd->device, in mpi3mr_prepare_sg_scmd()
2504 struct scsi_cmnd *scmd, struct mpi3_scsi_io_request *scsiio_req) in mpi3mr_build_sg_scmd() argument
2508 ret = mpi3mr_prepare_sg_scmd(mrioc, scmd, scsiio_req); in mpi3mr_build_sg_scmd()
2516 ret = mpi3mr_prepare_sg_scmd(mrioc, scmd, scsiio_req); in mpi3mr_build_sg_scmd()
2870 static int mpi3mr_eh_host_reset(struct scsi_cmnd *scmd) in mpi3mr_eh_host_reset() argument
2872 struct mpi3mr_ioc *mrioc = shost_priv(scmd->device->host); in mpi3mr_eh_host_reset()
2878 sdev_priv_data = scmd->device->hostdata; in mpi3mr_eh_host_reset()
2901 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_host_reset()
2903 ((retval == SUCCESS) ? "SUCCESS" : "FAILED"), scmd); in mpi3mr_eh_host_reset()
2918 static int mpi3mr_eh_target_reset(struct scsi_cmnd *scmd) in mpi3mr_eh_target_reset() argument
2920 struct mpi3mr_ioc *mrioc = shost_priv(scmd->device->host); in mpi3mr_eh_target_reset()
2927 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_target_reset()
2928 "Attempting Target Reset! scmd(%p)\n", scmd); in mpi3mr_eh_target_reset()
2929 scsi_print_command(scmd); in mpi3mr_eh_target_reset()
2931 sdev_priv_data = scmd->device->hostdata; in mpi3mr_eh_target_reset()
2933 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_target_reset()
2941 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_target_reset()
2955 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_target_reset()
2957 ((retval == SUCCESS) ? "SUCCESS" : "FAILED"), scmd); in mpi3mr_eh_target_reset()
2972 static int mpi3mr_eh_dev_reset(struct scsi_cmnd *scmd) in mpi3mr_eh_dev_reset() argument
2974 struct mpi3mr_ioc *mrioc = shost_priv(scmd->device->host); in mpi3mr_eh_dev_reset()
2981 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_dev_reset()
2982 "Attempting Device(lun) Reset! scmd(%p)\n", scmd); in mpi3mr_eh_dev_reset()
2983 scsi_print_command(scmd); in mpi3mr_eh_dev_reset()
2985 sdev_priv_data = scmd->device->hostdata; in mpi3mr_eh_dev_reset()
2987 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_dev_reset()
2995 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_dev_reset()
3008 sdev_printk(KERN_INFO, scmd->device, in mpi3mr_eh_dev_reset()
3010 ((retval == SUCCESS) ? "SUCCESS" : "FAILED"), scmd); in mpi3mr_eh_dev_reset()
3312 struct scsi_cmnd *scmd) in mpi3mr_check_return_unmap() argument
3317 param_len = get_unaligned_be16(scmd->cmnd + 7); in mpi3mr_check_return_unmap()
3323 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3324 scmd->result = DID_OK << 16; in mpi3mr_check_return_unmap()
3325 scsi_done(scmd); in mpi3mr_check_return_unmap()
3333 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3334 scmd->result = SAM_STAT_CHECK_CONDITION; in mpi3mr_check_return_unmap()
3335 scsi_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, in mpi3mr_check_return_unmap()
3337 scsi_done(scmd); in mpi3mr_check_return_unmap()
3340 if (param_len != scsi_bufflen(scmd)) { in mpi3mr_check_return_unmap()
3343 __func__, param_len, scsi_bufflen(scmd)); in mpi3mr_check_return_unmap()
3344 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3345 scmd->result = SAM_STAT_CHECK_CONDITION; in mpi3mr_check_return_unmap()
3346 scsi_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, in mpi3mr_check_return_unmap()
3348 scsi_done(scmd); in mpi3mr_check_return_unmap()
3351 buf = kzalloc(scsi_bufflen(scmd), GFP_ATOMIC); in mpi3mr_check_return_unmap()
3353 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3354 scmd->result = SAM_STAT_CHECK_CONDITION; in mpi3mr_check_return_unmap()
3355 scsi_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, in mpi3mr_check_return_unmap()
3357 scsi_done(scmd); in mpi3mr_check_return_unmap()
3360 scsi_sg_copy_to_buffer(scmd, buf, scsi_bufflen(scmd)); in mpi3mr_check_return_unmap()
3367 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3368 scmd->result = SAM_STAT_CHECK_CONDITION; in mpi3mr_check_return_unmap()
3369 scsi_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, in mpi3mr_check_return_unmap()
3371 scsi_done(scmd); in mpi3mr_check_return_unmap()
3377 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3382 put_unaligned_be16(param_len, scmd->cmnd + 7); in mpi3mr_check_return_unmap()
3383 scsi_print_command(scmd); in mpi3mr_check_return_unmap()
3399 inline bool mpi3mr_allow_scmd_to_fw(struct scsi_cmnd *scmd) in mpi3mr_allow_scmd_to_fw() argument
3401 switch (scmd->cmnd[0]) { in mpi3mr_allow_scmd_to_fw()
3423 struct scsi_cmnd *scmd) in mpi3mr_qcmd() argument
3435 struct request *rq = scsi_cmd_to_rq(scmd); in mpi3mr_qcmd()
3438 sdev_priv_data = scmd->device->hostdata; in mpi3mr_qcmd()
3440 scmd->result = DID_NO_CONNECT << 16; in mpi3mr_qcmd()
3441 scsi_done(scmd); in mpi3mr_qcmd()
3446 !(mpi3mr_allow_scmd_to_fw(scmd))) { in mpi3mr_qcmd()
3447 scmd->result = DID_NO_CONNECT << 16; in mpi3mr_qcmd()
3448 scsi_done(scmd); in mpi3mr_qcmd()
3461 scmd->result = DID_NO_CONNECT << 16; in mpi3mr_qcmd()
3462 scsi_done(scmd); in mpi3mr_qcmd()
3466 scmd->result = DID_NO_CONNECT << 16; in mpi3mr_qcmd()
3467 scsi_done(scmd); in mpi3mr_qcmd()
3473 scmd->result = DID_NO_CONNECT << 16; in mpi3mr_qcmd()
3474 scsi_done(scmd); in mpi3mr_qcmd()
3481 if ((scmd->cmnd[0] == UNMAP) && in mpi3mr_qcmd()
3483 mpi3mr_check_return_unmap(mrioc, scmd)) in mpi3mr_qcmd()
3486 host_tag = mpi3mr_host_tag_for_scmd(mrioc, scmd); in mpi3mr_qcmd()
3488 scmd->result = DID_ERROR << 16; in mpi3mr_qcmd()
3489 scsi_done(scmd); in mpi3mr_qcmd()
3493 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in mpi3mr_qcmd()
3495 else if (scmd->sc_data_direction == DMA_TO_DEVICE) in mpi3mr_qcmd()
3508 if (scmd->cmd_len > 16) in mpi3mr_qcmd()
3511 scmd_priv_data = scsi_cmd_priv(scmd); in mpi3mr_qcmd()
3517 mpi3mr_setup_eedp(mrioc, scmd, scsiio_req); in mpi3mr_qcmd()
3519 memcpy(scsiio_req->cdb.cdb32, scmd->cmnd, scmd->cmd_len); in mpi3mr_qcmd()
3520 scsiio_req->data_length = cpu_to_le32(scsi_bufflen(scmd)); in mpi3mr_qcmd()
3526 if (mpi3mr_build_sg_scmd(mrioc, scmd, scsiio_req)) { in mpi3mr_qcmd()
3527 mpi3mr_clear_scmd_priv(mrioc, scmd); in mpi3mr_qcmd()
3535 mpi3mr_clear_scmd_priv(mrioc, scmd); in mpi3mr_qcmd()