Lines Matching refs:scp

3653 static void asc_scsi_done(struct scsi_cmnd *scp)  in asc_scsi_done()  argument
3655 scsi_dma_unmap(scp); in asc_scsi_done()
3656 ASC_STATS(scp->device->host, done); in asc_scsi_done()
3657 scp->scsi_done(scp); in asc_scsi_done()
5955 struct scsi_cmnd *scp; in adv_isr_callback() local
5969 scp = scsi_host_find_tag(boardp->shost, scsiqp->srb_tag); in adv_isr_callback()
5971 ASC_DBG(1, "scp 0x%p\n", scp); in adv_isr_callback()
5972 if (scp == NULL) { in adv_isr_callback()
5977 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in adv_isr_callback()
5979 reqp = (adv_req_t *)scp->host_scribble; in adv_isr_callback()
5989 scp->host_scribble = NULL; in adv_isr_callback()
6005 scp->result = 0; in adv_isr_callback()
6014 if (scsi_bufflen(scp) != 0 && resid_cnt != 0 && in adv_isr_callback()
6015 resid_cnt <= scsi_bufflen(scp)) { in adv_isr_callback()
6018 scsi_set_resid(scp, resid_cnt); in adv_isr_callback()
6028 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in adv_isr_callback()
6042 scp->result = DRIVER_BYTE(DRIVER_SENSE) | in adv_isr_callback()
6045 scp->result = STATUS_BYTE(scsiqp->scsi_status); in adv_isr_callback()
6052 scp->result = HOST_BYTE(DID_BAD_TARGET); in adv_isr_callback()
6059 scp->result = in adv_isr_callback()
6065 scp->result = in adv_isr_callback()
6075 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in adv_isr_callback()
6078 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in adv_isr_callback()
6081 asc_scsi_done(scp); in adv_isr_callback()
6750 struct scsi_cmnd *scp; in asc_isr_callback() local
6759 scp = scsi_host_find_tag(boardp->shost, srb_tag); in asc_isr_callback()
6760 if (!scp) in asc_isr_callback()
6763 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in asc_isr_callback()
6767 dma_unmap_single(boardp->dev, scp->SCp.dma_handle, in asc_isr_callback()
6775 scp->result = 0; in asc_isr_callback()
6783 if (scsi_bufflen(scp) != 0 && qdonep->remain_bytes != 0 && in asc_isr_callback()
6784 qdonep->remain_bytes <= scsi_bufflen(scp)) { in asc_isr_callback()
6787 scsi_set_resid(scp, qdonep->remain_bytes); in asc_isr_callback()
6797 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in asc_isr_callback()
6811 scp->result = DRIVER_BYTE(DRIVER_SENSE) | in asc_isr_callback()
6814 scp->result = STATUS_BYTE(qdonep->d3.scsi_stat); in asc_isr_callback()
6821 scp->result = HOST_BYTE(DID_BAD_TARGET); in asc_isr_callback()
6828 scp->result = in asc_isr_callback()
6836 scp->result = in asc_isr_callback()
6848 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in asc_isr_callback()
6851 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in asc_isr_callback()
6854 asc_scsi_done(scp); in asc_isr_callback()
7112 static int advansys_reset(struct scsi_cmnd *scp) in advansys_reset() argument
7114 struct Scsi_Host *shost = scp->device->host; in advansys_reset()
7120 ASC_DBG(1, "0x%p\n", scp); in advansys_reset()
7124 scmd_printk(KERN_INFO, scp, "SCSI host reset started...\n"); in advansys_reset()
7135 scmd_printk(KERN_INFO, scp, "SCSI host reset error: " in advansys_reset()
7140 scmd_printk(KERN_INFO, scp, "SCSI host reset warning: " in advansys_reset()
7143 scmd_printk(KERN_INFO, scp, "SCSI host reset " in advansys_reset()
7161 scmd_printk(KERN_INFO, scp, "SCSI host reset " in advansys_reset()
7166 scmd_printk(KERN_INFO, scp, "SCSI host reset error\n"); in advansys_reset()
7501 static __le32 asc_get_sense_buffer_dma(struct scsi_cmnd *scp) in asc_get_sense_buffer_dma() argument
7503 struct asc_board *board = shost_priv(scp->device->host); in asc_get_sense_buffer_dma()
7505 scp->SCp.dma_handle = dma_map_single(board->dev, scp->sense_buffer, in asc_get_sense_buffer_dma()
7508 if (dma_mapping_error(board->dev, scp->SCp.dma_handle)) { in asc_get_sense_buffer_dma()
7512 return cpu_to_le32(scp->SCp.dma_handle); in asc_get_sense_buffer_dma()
7515 static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in asc_build_req() argument
7528 srb_tag = scp->request->tag + 1; in asc_build_req()
7534 asc_scsi_q->cdbptr = &scp->cmnd[0]; in asc_build_req()
7535 asc_scsi_q->q2.cdb_len = scp->cmd_len; in asc_build_req()
7536 asc_scsi_q->q1.target_id = ASC_TID_TO_TARGET_ID(scp->device->id); in asc_build_req()
7537 asc_scsi_q->q1.target_lun = scp->device->lun; in asc_build_req()
7539 ASC_TIDLUN_TO_IX(scp->device->id, scp->device->lun); in asc_build_req()
7540 asc_scsi_q->q1.sense_addr = asc_get_sense_buffer_dma(scp); in asc_build_req()
7556 if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && in asc_build_req()
7557 (boardp->reqcnt[scp->device->id] % 255) == 0) { in asc_build_req()
7564 use_sg = scsi_dma_map(scp); in asc_build_req()
7573 if (use_sg > scp->device->host->sg_tablesize) { in asc_build_req()
7574 scmd_printk(KERN_ERR, scp, "use_sg %d > " in asc_build_req()
7576 scp->device->host->sg_tablesize); in asc_build_req()
7577 scsi_dma_unmap(scp); in asc_build_req()
7578 scp->result = HOST_BYTE(DID_ERROR); in asc_build_req()
7585 scsi_dma_unmap(scp); in asc_build_req()
7586 scp->result = HOST_BYTE(DID_SOFT_ERROR); in asc_build_req()
7596 ASC_STATS_ADD(scp->device->host, xfer_elem, in asc_build_req()
7602 scsi_for_each_sg(scp, slp, use_sg, sgcnt) { in asc_build_req()
7607 ASC_STATS_ADD(scp->device->host, xfer_sect, in asc_build_req()
7612 ASC_STATS(scp->device->host, xfer_cnt); in asc_build_req()
7615 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in asc_build_req()
7634 ADV_SCSI_REQ_Q *scsiqp, struct scsi_cmnd *scp, int use_sg) in adv_get_sglist() argument
7643 slp = scsi_sglist(scp); in adv_get_sglist()
7659 ASC_STATS(scp->device->host, adv_build_nosg); in adv_get_sglist()
7709 ASC_STATS_ADD(scp->device->host, xfer_sect, in adv_get_sglist()
7739 adv_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in adv_build_req() argument
7742 u32 srb_tag = scp->request->tag; in adv_build_req()
7754 if (reqp->cmndp && reqp->cmndp != scp ) { in adv_build_req()
7756 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7777 reqp->cmndp = scp; in adv_build_req()
7778 scp->host_scribble = (void *)reqp; in adv_build_req()
7785 scsiqp->cdb_len = scp->cmd_len; in adv_build_req()
7787 memcpy(scsiqp->cdb, scp->cmnd, scp->cmd_len < 12 ? scp->cmd_len : 12); in adv_build_req()
7789 if (scp->cmd_len > 12) { in adv_build_req()
7790 int cdb16_len = scp->cmd_len - 12; in adv_build_req()
7792 memcpy(scsiqp->cdb16, &scp->cmnd[12], cdb16_len); in adv_build_req()
7795 scsiqp->target_id = scp->device->id; in adv_build_req()
7796 scsiqp->target_lun = scp->device->lun; in adv_build_req()
7798 sense_addr = dma_map_single(boardp->dev, scp->sense_buffer, in adv_build_req()
7802 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7810 use_sg = scsi_dma_map(scp); in adv_build_req()
7813 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7825 scmd_printk(KERN_ERR, scp, "use_sg %d > " in adv_build_req()
7827 scp->device->host->sg_tablesize); in adv_build_req()
7828 scsi_dma_unmap(scp); in adv_build_req()
7829 scp->result = HOST_BYTE(DID_ERROR); in adv_build_req()
7831 scp->host_scribble = NULL; in adv_build_req()
7836 scsiqp->data_cnt = cpu_to_le32(scsi_bufflen(scp)); in adv_build_req()
7838 ret = adv_get_sglist(boardp, reqp, scsiqp, scp, use_sg); in adv_build_req()
7840 scsi_dma_unmap(scp); in adv_build_req()
7841 scp->result = HOST_BYTE(DID_ERROR); in adv_build_req()
7843 scp->host_scribble = NULL; in adv_build_req()
7848 ASC_STATS_ADD(scp->device->host, xfer_elem, use_sg); in adv_build_req()
7851 ASC_STATS(scp->device->host, xfer_cnt); in adv_build_req()
7854 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in adv_build_req()
8472 static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) in asc_execute_scsi_cmnd() argument
8475 struct asc_board *boardp = shost_priv(scp->device->host); in asc_execute_scsi_cmnd()
8477 ASC_DBG(1, "scp 0x%p\n", scp); in asc_execute_scsi_cmnd()
8483 ret = asc_build_req(boardp, scp, &asc_scsi_q); in asc_execute_scsi_cmnd()
8485 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8496 switch (adv_build_req(boardp, scp, &adv_reqp)) { in asc_execute_scsi_cmnd()
8512 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8522 ASC_STATS(scp->device->host, exe_noerror); in asc_execute_scsi_cmnd()
8527 boardp->reqcnt[scp->device->id]++; in asc_execute_scsi_cmnd()
8532 ASC_STATS(scp->device->host, exe_busy); in asc_execute_scsi_cmnd()
8535 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() ASC_ERROR, " in asc_execute_scsi_cmnd()
8537 ASC_STATS(scp->device->host, exe_error); in asc_execute_scsi_cmnd()
8538 scp->result = HOST_BYTE(DID_ERROR); in asc_execute_scsi_cmnd()
8541 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() unknown, " in asc_execute_scsi_cmnd()
8543 ASC_STATS(scp->device->host, exe_unknown); in asc_execute_scsi_cmnd()
8544 scp->result = HOST_BYTE(DID_ERROR); in asc_execute_scsi_cmnd()
8559 advansys_queuecommand_lck(struct scsi_cmnd *scp, void (*done)(struct scsi_cmnd *)) in advansys_queuecommand_lck() argument
8561 struct Scsi_Host *shost = scp->device->host; in advansys_queuecommand_lck()
8565 scp->scsi_done = done; in advansys_queuecommand_lck()
8567 asc_res = asc_execute_scsi_cmnd(scp); in advansys_queuecommand_lck()
8577 asc_scsi_done(scp); in advansys_queuecommand_lck()