Lines Matching refs:scp
3600 static void asc_scsi_done(struct scsi_cmnd *scp) in asc_scsi_done() argument
3602 scsi_dma_unmap(scp); in asc_scsi_done()
3603 ASC_STATS(scp->device->host, done); in asc_scsi_done()
3604 scsi_done(scp); in asc_scsi_done()
5901 struct scsi_cmnd *scp; in adv_isr_callback() local
5914 scp = scsi_host_find_tag(boardp->shost, scsiqp->srb_tag); in adv_isr_callback()
5916 ASC_DBG(1, "scp 0x%p\n", scp); in adv_isr_callback()
5917 if (scp == NULL) { in adv_isr_callback()
5922 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in adv_isr_callback()
5924 reqp = (adv_req_t *)scp->host_scribble; in adv_isr_callback()
5934 scp->host_scribble = NULL; in adv_isr_callback()
5947 scp->result = 0; in adv_isr_callback()
5959 if (scsi_bufflen(scp) != 0 && resid_cnt != 0 && in adv_isr_callback()
5960 resid_cnt <= scsi_bufflen(scp)) { in adv_isr_callback()
5963 scsi_set_resid(scp, resid_cnt); in adv_isr_callback()
5971 set_status_byte(scp, scsiqp->scsi_status); in adv_isr_callback()
5974 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in adv_isr_callback()
5982 set_host_byte(scp, DID_BAD_TARGET); in adv_isr_callback()
5989 set_status_byte(scp, scsiqp->scsi_status); in adv_isr_callback()
5990 set_host_byte(scp, DID_ABORT); in adv_isr_callback()
5995 set_status_byte(scp, scsiqp->scsi_status); in adv_isr_callback()
5996 set_host_byte(scp, DID_ERROR); in adv_isr_callback()
6005 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in adv_isr_callback()
6008 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in adv_isr_callback()
6011 asc_scsi_done(scp); in adv_isr_callback()
6676 struct scsi_cmnd *scp; in asc_isr_callback() local
6685 scp = scsi_host_find_tag(boardp->shost, srb_tag); in asc_isr_callback()
6686 if (!scp) in asc_isr_callback()
6689 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in asc_isr_callback()
6693 dma_unmap_single(boardp->dev, advansys_cmd(scp)->dma_handle, in asc_isr_callback()
6698 scp->result = 0; in asc_isr_callback()
6709 if (scsi_bufflen(scp) != 0 && qdonep->remain_bytes != 0 && in asc_isr_callback()
6710 qdonep->remain_bytes <= scsi_bufflen(scp)) { in asc_isr_callback()
6713 scsi_set_resid(scp, qdonep->remain_bytes); in asc_isr_callback()
6721 set_status_byte(scp, qdonep->d3.scsi_stat); in asc_isr_callback()
6724 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in asc_isr_callback()
6732 set_host_byte(scp, DID_BAD_TARGET); in asc_isr_callback()
6739 set_status_byte(scp, qdonep->d3.scsi_stat); in asc_isr_callback()
6740 set_host_byte(scp, DID_ABORT); in asc_isr_callback()
6745 set_status_byte(scp, qdonep->d3.scsi_stat); in asc_isr_callback()
6746 set_host_byte(scp, DID_ERROR); in asc_isr_callback()
6755 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in asc_isr_callback()
6758 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in asc_isr_callback()
6761 asc_scsi_done(scp); in asc_isr_callback()
7019 static int advansys_reset(struct scsi_cmnd *scp) in advansys_reset() argument
7021 struct Scsi_Host *shost = scp->device->host; in advansys_reset()
7027 ASC_DBG(1, "0x%p\n", scp); in advansys_reset()
7031 scmd_printk(KERN_INFO, scp, "SCSI host reset started...\n"); in advansys_reset()
7042 scmd_printk(KERN_INFO, scp, "SCSI host reset error: " in advansys_reset()
7047 scmd_printk(KERN_INFO, scp, "SCSI host reset warning: " in advansys_reset()
7050 scmd_printk(KERN_INFO, scp, "SCSI host reset " in advansys_reset()
7068 scmd_printk(KERN_INFO, scp, "SCSI host reset " in advansys_reset()
7073 scmd_printk(KERN_INFO, scp, "SCSI host reset error\n"); in advansys_reset()
7408 static __le32 asc_get_sense_buffer_dma(struct scsi_cmnd *scp) in asc_get_sense_buffer_dma() argument
7410 struct asc_board *board = shost_priv(scp->device->host); in asc_get_sense_buffer_dma()
7411 struct advansys_cmd *acmd = advansys_cmd(scp); in asc_get_sense_buffer_dma()
7413 acmd->dma_handle = dma_map_single(board->dev, scp->sense_buffer, in asc_get_sense_buffer_dma()
7422 static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in asc_build_req() argument
7435 srb_tag = scsi_cmd_to_rq(scp)->tag + 1; in asc_build_req()
7441 asc_scsi_q->cdbptr = &scp->cmnd[0]; in asc_build_req()
7442 asc_scsi_q->q2.cdb_len = scp->cmd_len; in asc_build_req()
7443 asc_scsi_q->q1.target_id = ASC_TID_TO_TARGET_ID(scp->device->id); in asc_build_req()
7444 asc_scsi_q->q1.target_lun = scp->device->lun; in asc_build_req()
7446 ASC_TIDLUN_TO_IX(scp->device->id, scp->device->lun); in asc_build_req()
7447 asc_scsi_q->q1.sense_addr = asc_get_sense_buffer_dma(scp); in asc_build_req()
7463 if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && in asc_build_req()
7464 (boardp->reqcnt[scp->device->id] % 255) == 0) { in asc_build_req()
7471 use_sg = scsi_dma_map(scp); in asc_build_req()
7480 if (use_sg > scp->device->host->sg_tablesize) { in asc_build_req()
7481 scmd_printk(KERN_ERR, scp, "use_sg %d > " in asc_build_req()
7483 scp->device->host->sg_tablesize); in asc_build_req()
7484 scsi_dma_unmap(scp); in asc_build_req()
7485 set_host_byte(scp, DID_ERROR); in asc_build_req()
7492 scsi_dma_unmap(scp); in asc_build_req()
7493 set_host_byte(scp, DID_SOFT_ERROR); in asc_build_req()
7503 ASC_STATS_ADD(scp->device->host, xfer_elem, in asc_build_req()
7509 scsi_for_each_sg(scp, slp, use_sg, sgcnt) { in asc_build_req()
7514 ASC_STATS_ADD(scp->device->host, xfer_sect, in asc_build_req()
7519 ASC_STATS(scp->device->host, xfer_cnt); in asc_build_req()
7522 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in asc_build_req()
7541 ADV_SCSI_REQ_Q *scsiqp, struct scsi_cmnd *scp, int use_sg) in adv_get_sglist() argument
7550 slp = scsi_sglist(scp); in adv_get_sglist()
7566 ASC_STATS(scp->device->host, adv_build_nosg); in adv_get_sglist()
7616 ASC_STATS_ADD(scp->device->host, xfer_sect, in adv_get_sglist()
7646 adv_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in adv_build_req() argument
7649 u32 srb_tag = scsi_cmd_to_rq(scp)->tag; in adv_build_req()
7661 if (reqp->cmndp && reqp->cmndp != scp ) { in adv_build_req()
7663 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7684 reqp->cmndp = scp; in adv_build_req()
7685 scp->host_scribble = (void *)reqp; in adv_build_req()
7692 scsiqp->cdb_len = scp->cmd_len; in adv_build_req()
7694 memcpy(scsiqp->cdb, scp->cmnd, scp->cmd_len < 12 ? scp->cmd_len : 12); in adv_build_req()
7696 if (scp->cmd_len > 12) { in adv_build_req()
7697 int cdb16_len = scp->cmd_len - 12; in adv_build_req()
7699 memcpy(scsiqp->cdb16, &scp->cmnd[12], cdb16_len); in adv_build_req()
7702 scsiqp->target_id = scp->device->id; in adv_build_req()
7703 scsiqp->target_lun = scp->device->lun; in adv_build_req()
7705 sense_addr = dma_map_single(boardp->dev, scp->sense_buffer, in adv_build_req()
7709 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7717 use_sg = scsi_dma_map(scp); in adv_build_req()
7720 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7732 scmd_printk(KERN_ERR, scp, "use_sg %d > " in adv_build_req()
7734 scp->device->host->sg_tablesize); in adv_build_req()
7735 scsi_dma_unmap(scp); in adv_build_req()
7736 set_host_byte(scp, DID_ERROR); in adv_build_req()
7738 scp->host_scribble = NULL; in adv_build_req()
7743 scsiqp->data_cnt = cpu_to_le32(scsi_bufflen(scp)); in adv_build_req()
7745 ret = adv_get_sglist(boardp, reqp, scsiqp, scp, use_sg); in adv_build_req()
7747 scsi_dma_unmap(scp); in adv_build_req()
7748 set_host_byte(scp, DID_ERROR); in adv_build_req()
7750 scp->host_scribble = NULL; in adv_build_req()
7755 ASC_STATS_ADD(scp->device->host, xfer_elem, use_sg); in adv_build_req()
7758 ASC_STATS(scp->device->host, xfer_cnt); in adv_build_req()
7761 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in adv_build_req()
8379 static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) in asc_execute_scsi_cmnd() argument
8382 struct asc_board *boardp = shost_priv(scp->device->host); in asc_execute_scsi_cmnd()
8384 ASC_DBG(1, "scp 0x%p\n", scp); in asc_execute_scsi_cmnd()
8390 ret = asc_build_req(boardp, scp, &asc_scsi_q); in asc_execute_scsi_cmnd()
8392 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8403 switch (adv_build_req(boardp, scp, &adv_reqp)) { in asc_execute_scsi_cmnd()
8419 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8429 ASC_STATS(scp->device->host, exe_noerror); in asc_execute_scsi_cmnd()
8434 boardp->reqcnt[scp->device->id]++; in asc_execute_scsi_cmnd()
8439 ASC_STATS(scp->device->host, exe_busy); in asc_execute_scsi_cmnd()
8442 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() ASC_ERROR, " in asc_execute_scsi_cmnd()
8444 ASC_STATS(scp->device->host, exe_error); in asc_execute_scsi_cmnd()
8445 set_host_byte(scp, DID_ERROR); in asc_execute_scsi_cmnd()
8448 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() unknown, " in asc_execute_scsi_cmnd()
8450 ASC_STATS(scp->device->host, exe_unknown); in asc_execute_scsi_cmnd()
8451 set_host_byte(scp, DID_ERROR); in asc_execute_scsi_cmnd()
8465 static int advansys_queuecommand_lck(struct scsi_cmnd *scp) in advansys_queuecommand_lck() argument
8467 struct Scsi_Host *shost = scp->device->host; in advansys_queuecommand_lck()
8472 asc_res = asc_execute_scsi_cmnd(scp); in advansys_queuecommand_lck()
8482 asc_scsi_done(scp); in advansys_queuecommand_lck()