Lines Matching full: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()
5919 ("adv_isr_callback: scp is NULL; adv_req_t dropped.\n"); 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()
7013 * Reset the host associated with the command 'scp'.
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()
7409 static __le32 asc_get_sense_buffer_dma(struct scsi_cmnd *scp) in asc_get_sense_buffer_dma() argument
7411 struct asc_board *board = shost_priv(scp->device->host); in asc_get_sense_buffer_dma()
7412 struct advansys_cmd *acmd = advansys_cmd(scp); in asc_get_sense_buffer_dma()
7414 acmd->dma_handle = dma_map_single(board->dev, scp->sense_buffer, in asc_get_sense_buffer_dma()
7423 static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in asc_build_req() argument
7436 srb_tag = scsi_cmd_to_rq(scp)->tag + 1; in asc_build_req()
7442 asc_scsi_q->cdbptr = &scp->cmnd[0]; in asc_build_req()
7443 asc_scsi_q->q2.cdb_len = scp->cmd_len; in asc_build_req()
7444 asc_scsi_q->q1.target_id = ASC_TID_TO_TARGET_ID(scp->device->id); in asc_build_req()
7445 asc_scsi_q->q1.target_lun = scp->device->lun; in asc_build_req()
7447 ASC_TIDLUN_TO_IX(scp->device->id, scp->device->lun); in asc_build_req()
7448 asc_scsi_q->q1.sense_addr = asc_get_sense_buffer_dma(scp); in asc_build_req()
7464 if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && in asc_build_req()
7465 (boardp->reqcnt[scp->device->id] % 255) == 0) { in asc_build_req()
7472 use_sg = scsi_dma_map(scp); in asc_build_req()
7481 if (use_sg > scp->device->host->sg_tablesize) { in asc_build_req()
7482 scmd_printk(KERN_ERR, scp, "use_sg %d > " in asc_build_req()
7484 scp->device->host->sg_tablesize); in asc_build_req()
7485 scsi_dma_unmap(scp); in asc_build_req()
7486 set_host_byte(scp, DID_ERROR); in asc_build_req()
7493 scsi_dma_unmap(scp); in asc_build_req()
7494 set_host_byte(scp, DID_SOFT_ERROR); in asc_build_req()
7504 ASC_STATS_ADD(scp->device->host, xfer_elem, in asc_build_req()
7510 scsi_for_each_sg(scp, slp, use_sg, sgcnt) { in asc_build_req()
7515 ASC_STATS_ADD(scp->device->host, xfer_sect, in asc_build_req()
7520 ASC_STATS(scp->device->host, xfer_cnt); in asc_build_req()
7523 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in asc_build_req()
7542 ADV_SCSI_REQ_Q *scsiqp, struct scsi_cmnd *scp, int use_sg) in adv_get_sglist() argument
7551 slp = scsi_sglist(scp); in adv_get_sglist()
7567 ASC_STATS(scp->device->host, adv_build_nosg); in adv_get_sglist()
7617 ASC_STATS_ADD(scp->device->host, xfer_sect, in adv_get_sglist()
7647 adv_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in adv_build_req() argument
7650 u32 srb_tag = scsi_cmd_to_rq(scp)->tag; in adv_build_req()
7662 if (reqp->cmndp && reqp->cmndp != scp ) { in adv_build_req()
7664 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7685 reqp->cmndp = scp; in adv_build_req()
7686 scp->host_scribble = (void *)reqp; in adv_build_req()
7693 scsiqp->cdb_len = scp->cmd_len; in adv_build_req()
7695 memcpy(scsiqp->cdb, scp->cmnd, scp->cmd_len < 12 ? scp->cmd_len : 12); in adv_build_req()
7697 if (scp->cmd_len > 12) { in adv_build_req()
7698 int cdb16_len = scp->cmd_len - 12; in adv_build_req()
7700 memcpy(scsiqp->cdb16, &scp->cmnd[12], cdb16_len); in adv_build_req()
7703 scsiqp->target_id = scp->device->id; in adv_build_req()
7704 scsiqp->target_lun = scp->device->lun; in adv_build_req()
7706 sense_addr = dma_map_single(boardp->dev, scp->sense_buffer, in adv_build_req()
7710 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7718 use_sg = scsi_dma_map(scp); in adv_build_req()
7721 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7733 scmd_printk(KERN_ERR, scp, "use_sg %d > " in adv_build_req()
7735 scp->device->host->sg_tablesize); in adv_build_req()
7736 scsi_dma_unmap(scp); in adv_build_req()
7737 set_host_byte(scp, DID_ERROR); in adv_build_req()
7739 scp->host_scribble = NULL; in adv_build_req()
7744 scsiqp->data_cnt = cpu_to_le32(scsi_bufflen(scp)); in adv_build_req()
7746 ret = adv_get_sglist(boardp, reqp, scsiqp, scp, use_sg); in adv_build_req()
7748 scsi_dma_unmap(scp); in adv_build_req()
7749 set_host_byte(scp, DID_ERROR); in adv_build_req()
7751 scp->host_scribble = NULL; in adv_build_req()
7756 ASC_STATS_ADD(scp->device->host, xfer_elem, use_sg); in adv_build_req()
7759 ASC_STATS(scp->device->host, xfer_cnt); in adv_build_req()
7762 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in adv_build_req()
8380 static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) in asc_execute_scsi_cmnd() argument
8383 struct asc_board *boardp = shost_priv(scp->device->host); in asc_execute_scsi_cmnd()
8385 ASC_DBG(1, "scp 0x%p\n", scp); in asc_execute_scsi_cmnd()
8391 ret = asc_build_req(boardp, scp, &asc_scsi_q); in asc_execute_scsi_cmnd()
8393 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8404 switch (adv_build_req(boardp, scp, &adv_reqp)) { in asc_execute_scsi_cmnd()
8420 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8430 ASC_STATS(scp->device->host, exe_noerror); in asc_execute_scsi_cmnd()
8435 boardp->reqcnt[scp->device->id]++; in asc_execute_scsi_cmnd()
8440 ASC_STATS(scp->device->host, exe_busy); in asc_execute_scsi_cmnd()
8443 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() ASC_ERROR, " in asc_execute_scsi_cmnd()
8445 ASC_STATS(scp->device->host, exe_error); in asc_execute_scsi_cmnd()
8446 set_host_byte(scp, DID_ERROR); in asc_execute_scsi_cmnd()
8449 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() unknown, " in asc_execute_scsi_cmnd()
8451 ASC_STATS(scp->device->host, exe_unknown); in asc_execute_scsi_cmnd()
8452 set_host_byte(scp, DID_ERROR); in asc_execute_scsi_cmnd()
8464 * in the 'scp' result field.
8466 static int advansys_queuecommand_lck(struct scsi_cmnd *scp) in advansys_queuecommand_lck() argument
8468 struct Scsi_Host *shost = scp->device->host; in advansys_queuecommand_lck()
8473 asc_res = asc_execute_scsi_cmnd(scp); in advansys_queuecommand_lck()
8483 asc_scsi_done(scp); in advansys_queuecommand_lck()