Lines Matching refs:scp

3806 static void asc_scsi_done(struct scsi_cmnd *scp)  in asc_scsi_done()  argument
3808 scsi_dma_unmap(scp); in asc_scsi_done()
3809 ASC_STATS(scp->device->host, done); in asc_scsi_done()
3810 scp->scsi_done(scp); in asc_scsi_done()
6140 struct scsi_cmnd *scp; in adv_isr_callback() local
6168 scp = reqp->cmndp; in adv_isr_callback()
6169 ASC_DBG(1, "scp 0x%p\n", scp); in adv_isr_callback()
6170 if (scp == NULL) { in adv_isr_callback()
6175 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in adv_isr_callback()
6177 shost = scp->device->host; in adv_isr_callback()
6190 scp->result = 0; in adv_isr_callback()
6199 if (scsi_bufflen(scp) != 0 && resid_cnt != 0 && in adv_isr_callback()
6200 resid_cnt <= scsi_bufflen(scp)) { in adv_isr_callback()
6203 scsi_set_resid(scp, resid_cnt); in adv_isr_callback()
6213 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in adv_isr_callback()
6227 scp->result = DRIVER_BYTE(DRIVER_SENSE) | in adv_isr_callback()
6230 scp->result = STATUS_BYTE(scsiqp->scsi_status); in adv_isr_callback()
6237 scp->result = HOST_BYTE(DID_BAD_TARGET); in adv_isr_callback()
6244 scp->result = in adv_isr_callback()
6250 scp->result = in adv_isr_callback()
6260 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in adv_isr_callback()
6263 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in adv_isr_callback()
6266 asc_scsi_done(scp); in adv_isr_callback()
7097 struct scsi_cmnd *scp; in asc_isr_callback() local
7103 scp = advansys_srb_to_ptr(asc_dvc_varp, qdonep->d2.srb_ptr); in asc_isr_callback()
7104 if (!scp) in asc_isr_callback()
7107 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in asc_isr_callback()
7109 shost = scp->device->host; in asc_isr_callback()
7116 dma_unmap_single(boardp->dev, scp->SCp.dma_handle, in asc_isr_callback()
7124 scp->result = 0; in asc_isr_callback()
7132 if (scsi_bufflen(scp) != 0 && qdonep->remain_bytes != 0 && in asc_isr_callback()
7133 qdonep->remain_bytes <= scsi_bufflen(scp)) { in asc_isr_callback()
7136 scsi_set_resid(scp, qdonep->remain_bytes); in asc_isr_callback()
7146 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in asc_isr_callback()
7160 scp->result = DRIVER_BYTE(DRIVER_SENSE) | in asc_isr_callback()
7163 scp->result = STATUS_BYTE(qdonep->d3.scsi_stat); in asc_isr_callback()
7170 scp->result = HOST_BYTE(DID_BAD_TARGET); in asc_isr_callback()
7177 scp->result = in asc_isr_callback()
7185 scp->result = in asc_isr_callback()
7197 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in asc_isr_callback()
7200 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in asc_isr_callback()
7203 asc_scsi_done(scp); in asc_isr_callback()
7462 static int advansys_reset(struct scsi_cmnd *scp) in advansys_reset() argument
7464 struct Scsi_Host *shost = scp->device->host; in advansys_reset()
7470 ASC_DBG(1, "0x%p\n", scp); in advansys_reset()
7474 scmd_printk(KERN_INFO, scp, "SCSI bus reset started...\n"); in advansys_reset()
7485 scmd_printk(KERN_INFO, scp, "SCSI bus reset error: " in advansys_reset()
7490 scmd_printk(KERN_INFO, scp, "SCSI bus reset warning: " in advansys_reset()
7493 scmd_printk(KERN_INFO, scp, "SCSI bus reset " in advansys_reset()
7512 scmd_printk(KERN_INFO, scp, "SCSI bus reset " in advansys_reset()
7517 scmd_printk(KERN_INFO, scp, "SCSI bus reset error\n"); in advansys_reset()
7854 static __le32 advansys_get_sense_buffer_dma(struct scsi_cmnd *scp) in advansys_get_sense_buffer_dma() argument
7856 struct asc_board *board = shost_priv(scp->device->host); in advansys_get_sense_buffer_dma()
7857 scp->SCp.dma_handle = dma_map_single(board->dev, scp->sense_buffer, in advansys_get_sense_buffer_dma()
7859 dma_cache_sync(board->dev, scp->sense_buffer, in advansys_get_sense_buffer_dma()
7861 return cpu_to_le32(scp->SCp.dma_handle); in advansys_get_sense_buffer_dma()
7864 static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in asc_build_req() argument
7875 asc_scsi_q->q2.srb_ptr = advansys_ptr_to_srb(asc_dvc, scp); in asc_build_req()
7877 scp->result = HOST_BYTE(DID_SOFT_ERROR); in asc_build_req()
7884 asc_scsi_q->cdbptr = &scp->cmnd[0]; in asc_build_req()
7885 asc_scsi_q->q2.cdb_len = scp->cmd_len; in asc_build_req()
7886 asc_scsi_q->q1.target_id = ASC_TID_TO_TARGET_ID(scp->device->id); in asc_build_req()
7887 asc_scsi_q->q1.target_lun = scp->device->lun; in asc_build_req()
7889 ASC_TIDLUN_TO_IX(scp->device->id, scp->device->lun); in asc_build_req()
7890 asc_scsi_q->q1.sense_addr = advansys_get_sense_buffer_dma(scp); in asc_build_req()
7904 if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && in asc_build_req()
7905 (boardp->reqcnt[scp->device->id] % 255) == 0) { in asc_build_req()
7912 use_sg = scsi_dma_map(scp); in asc_build_req()
7918 if (use_sg > scp->device->host->sg_tablesize) { in asc_build_req()
7919 scmd_printk(KERN_ERR, scp, "use_sg %d > " in asc_build_req()
7921 scp->device->host->sg_tablesize); in asc_build_req()
7922 scsi_dma_unmap(scp); in asc_build_req()
7923 scp->result = HOST_BYTE(DID_ERROR); in asc_build_req()
7930 scsi_dma_unmap(scp); in asc_build_req()
7931 scp->result = HOST_BYTE(DID_SOFT_ERROR); in asc_build_req()
7941 ASC_STATS_ADD(scp->device->host, xfer_elem, in asc_build_req()
7947 scsi_for_each_sg(scp, slp, use_sg, sgcnt) { in asc_build_req()
7952 ASC_STATS_ADD(scp->device->host, xfer_sect, in asc_build_req()
7957 ASC_STATS(scp->device->host, xfer_cnt); in asc_build_req()
7960 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in asc_build_req()
7978 adv_get_sglist(struct asc_board *boardp, adv_req_t *reqp, struct scsi_cmnd *scp, in adv_get_sglist() argument
7990 slp = scsi_sglist(scp); in adv_get_sglist()
8003 ASC_STATS(scp->device->host, adv_build_nosg); in adv_get_sglist()
8062 ASC_STATS_ADD(scp->device->host, xfer_sect, in adv_get_sglist()
8088 adv_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in adv_build_req() argument
8103 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
8129 reqp->cmndp = scp; in adv_build_req()
8136 scsiqp->cdb_len = scp->cmd_len; in adv_build_req()
8138 for (i = 0; i < scp->cmd_len && i < 12; i++) { in adv_build_req()
8139 scsiqp->cdb[i] = scp->cmnd[i]; in adv_build_req()
8142 for (; i < scp->cmd_len; i++) { in adv_build_req()
8143 scsiqp->cdb16[i - 12] = scp->cmnd[i]; in adv_build_req()
8146 scsiqp->target_id = scp->device->id; in adv_build_req()
8147 scsiqp->target_lun = scp->device->lun; in adv_build_req()
8149 scsiqp->sense_addr = cpu_to_le32(virt_to_bus(&scp->sense_buffer[0])); in adv_build_req()
8154 use_sg = scsi_dma_map(scp); in adv_build_req()
8166 scmd_printk(KERN_ERR, scp, "use_sg %d > " in adv_build_req()
8168 scp->device->host->sg_tablesize); in adv_build_req()
8169 scsi_dma_unmap(scp); in adv_build_req()
8170 scp->result = HOST_BYTE(DID_ERROR); in adv_build_req()
8182 scsiqp->data_cnt = cpu_to_le32(scsi_bufflen(scp)); in adv_build_req()
8184 ret = adv_get_sglist(boardp, reqp, scp, use_sg); in adv_build_req()
8196 ASC_STATS_ADD(scp->device->host, xfer_elem, use_sg); in adv_build_req()
8199 ASC_STATS(scp->device->host, xfer_cnt); in adv_build_req()
8202 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in adv_build_req()
8899 static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) in asc_execute_scsi_cmnd() argument
8902 struct asc_board *boardp = shost_priv(scp->device->host); in asc_execute_scsi_cmnd()
8904 ASC_DBG(1, "scp 0x%p\n", scp); in asc_execute_scsi_cmnd()
8911 ret = asc_build_req(boardp, scp, &asc_scsi_q); in asc_execute_scsi_cmnd()
8913 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8924 switch (adv_build_req(boardp, scp, &adv_scsiqp)) { in asc_execute_scsi_cmnd()
8940 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8950 ASC_STATS(scp->device->host, exe_noerror); in asc_execute_scsi_cmnd()
8955 boardp->reqcnt[scp->device->id]++; in asc_execute_scsi_cmnd()
8959 ASC_STATS(scp->device->host, exe_busy); in asc_execute_scsi_cmnd()
8962 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() ASC_ERROR, " in asc_execute_scsi_cmnd()
8964 ASC_STATS(scp->device->host, exe_error); in asc_execute_scsi_cmnd()
8965 scp->result = HOST_BYTE(DID_ERROR); in asc_execute_scsi_cmnd()
8968 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() unknown, " in asc_execute_scsi_cmnd()
8970 ASC_STATS(scp->device->host, exe_unknown); in asc_execute_scsi_cmnd()
8971 scp->result = HOST_BYTE(DID_ERROR); in asc_execute_scsi_cmnd()
8986 advansys_queuecommand_lck(struct scsi_cmnd *scp, void (*done)(struct scsi_cmnd *)) in advansys_queuecommand_lck() argument
8988 struct Scsi_Host *shost = scp->device->host; in advansys_queuecommand_lck()
8992 scp->scsi_done = done; in advansys_queuecommand_lck()
8994 asc_res = asc_execute_scsi_cmnd(scp); in advansys_queuecommand_lck()
9004 asc_scsi_done(scp); in advansys_queuecommand_lck()