Lines Matching refs:scp

3591 static void asc_scsi_done(struct scsi_cmnd *scp)  in asc_scsi_done()  argument
3593 scsi_dma_unmap(scp); in asc_scsi_done()
3594 ASC_STATS(scp->device->host, done); in asc_scsi_done()
3595 scp->scsi_done(scp); in asc_scsi_done()
5892 struct scsi_cmnd *scp; in adv_isr_callback() local
5905 scp = scsi_host_find_tag(boardp->shost, scsiqp->srb_tag); in adv_isr_callback()
5907 ASC_DBG(1, "scp 0x%p\n", scp); in adv_isr_callback()
5908 if (scp == NULL) { in adv_isr_callback()
5913 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in adv_isr_callback()
5915 reqp = (adv_req_t *)scp->host_scribble; in adv_isr_callback()
5925 scp->host_scribble = NULL; in adv_isr_callback()
5938 scp->result = 0; in adv_isr_callback()
5950 if (scsi_bufflen(scp) != 0 && resid_cnt != 0 && in adv_isr_callback()
5951 resid_cnt <= scsi_bufflen(scp)) { in adv_isr_callback()
5954 scsi_set_resid(scp, resid_cnt); in adv_isr_callback()
5962 set_status_byte(scp, scsiqp->scsi_status); in adv_isr_callback()
5965 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in adv_isr_callback()
5973 set_host_byte(scp, DID_BAD_TARGET); in adv_isr_callback()
5980 set_status_byte(scp, scsiqp->scsi_status); in adv_isr_callback()
5981 set_host_byte(scp, DID_ABORT); in adv_isr_callback()
5986 set_status_byte(scp, scsiqp->scsi_status); in adv_isr_callback()
5987 set_host_byte(scp, DID_ERROR); in adv_isr_callback()
5996 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in adv_isr_callback()
5999 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in adv_isr_callback()
6002 asc_scsi_done(scp); in adv_isr_callback()
6667 struct scsi_cmnd *scp; in asc_isr_callback() local
6676 scp = scsi_host_find_tag(boardp->shost, srb_tag); in asc_isr_callback()
6677 if (!scp) in asc_isr_callback()
6680 ASC_DBG_PRT_CDB(2, scp->cmnd, scp->cmd_len); in asc_isr_callback()
6684 dma_unmap_single(boardp->dev, scp->SCp.dma_handle, in asc_isr_callback()
6689 scp->result = 0; in asc_isr_callback()
6700 if (scsi_bufflen(scp) != 0 && qdonep->remain_bytes != 0 && in asc_isr_callback()
6701 qdonep->remain_bytes <= scsi_bufflen(scp)) { in asc_isr_callback()
6704 scsi_set_resid(scp, qdonep->remain_bytes); in asc_isr_callback()
6712 set_status_byte(scp, qdonep->d3.scsi_stat); in asc_isr_callback()
6715 ASC_DBG_PRT_SENSE(2, scp->sense_buffer, in asc_isr_callback()
6723 set_host_byte(scp, DID_BAD_TARGET); in asc_isr_callback()
6730 set_status_byte(scp, qdonep->d3.scsi_stat); in asc_isr_callback()
6731 set_host_byte(scp, DID_ABORT); in asc_isr_callback()
6736 set_status_byte(scp, qdonep->d3.scsi_stat); in asc_isr_callback()
6737 set_host_byte(scp, DID_ERROR); in asc_isr_callback()
6746 if ((boardp->init_tidmask & ADV_TID_TO_TIDMASK(scp->device->id)) == 0 && in asc_isr_callback()
6749 boardp->init_tidmask |= ADV_TID_TO_TIDMASK(scp->device->id); in asc_isr_callback()
6752 asc_scsi_done(scp); in asc_isr_callback()
7010 static int advansys_reset(struct scsi_cmnd *scp) in advansys_reset() argument
7012 struct Scsi_Host *shost = scp->device->host; in advansys_reset()
7018 ASC_DBG(1, "0x%p\n", scp); in advansys_reset()
7022 scmd_printk(KERN_INFO, scp, "SCSI host reset started...\n"); in advansys_reset()
7033 scmd_printk(KERN_INFO, scp, "SCSI host reset error: " in advansys_reset()
7038 scmd_printk(KERN_INFO, scp, "SCSI host reset warning: " in advansys_reset()
7041 scmd_printk(KERN_INFO, scp, "SCSI host reset " in advansys_reset()
7059 scmd_printk(KERN_INFO, scp, "SCSI host reset " in advansys_reset()
7064 scmd_printk(KERN_INFO, scp, "SCSI host reset error\n"); in advansys_reset()
7399 static __le32 asc_get_sense_buffer_dma(struct scsi_cmnd *scp) in asc_get_sense_buffer_dma() argument
7401 struct asc_board *board = shost_priv(scp->device->host); in asc_get_sense_buffer_dma()
7403 scp->SCp.dma_handle = dma_map_single(board->dev, scp->sense_buffer, in asc_get_sense_buffer_dma()
7406 if (dma_mapping_error(board->dev, scp->SCp.dma_handle)) { in asc_get_sense_buffer_dma()
7410 return cpu_to_le32(scp->SCp.dma_handle); in asc_get_sense_buffer_dma()
7413 static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in asc_build_req() argument
7426 srb_tag = scsi_cmd_to_rq(scp)->tag + 1; in asc_build_req()
7432 asc_scsi_q->cdbptr = &scp->cmnd[0]; in asc_build_req()
7433 asc_scsi_q->q2.cdb_len = scp->cmd_len; in asc_build_req()
7434 asc_scsi_q->q1.target_id = ASC_TID_TO_TARGET_ID(scp->device->id); in asc_build_req()
7435 asc_scsi_q->q1.target_lun = scp->device->lun; in asc_build_req()
7437 ASC_TIDLUN_TO_IX(scp->device->id, scp->device->lun); in asc_build_req()
7438 asc_scsi_q->q1.sense_addr = asc_get_sense_buffer_dma(scp); in asc_build_req()
7454 if ((asc_dvc->cur_dvc_qng[scp->device->id] > 0) && in asc_build_req()
7455 (boardp->reqcnt[scp->device->id] % 255) == 0) { in asc_build_req()
7462 use_sg = scsi_dma_map(scp); in asc_build_req()
7471 if (use_sg > scp->device->host->sg_tablesize) { in asc_build_req()
7472 scmd_printk(KERN_ERR, scp, "use_sg %d > " in asc_build_req()
7474 scp->device->host->sg_tablesize); in asc_build_req()
7475 scsi_dma_unmap(scp); in asc_build_req()
7476 set_host_byte(scp, DID_ERROR); in asc_build_req()
7483 scsi_dma_unmap(scp); in asc_build_req()
7484 set_host_byte(scp, DID_SOFT_ERROR); in asc_build_req()
7494 ASC_STATS_ADD(scp->device->host, xfer_elem, in asc_build_req()
7500 scsi_for_each_sg(scp, slp, use_sg, sgcnt) { in asc_build_req()
7505 ASC_STATS_ADD(scp->device->host, xfer_sect, in asc_build_req()
7510 ASC_STATS(scp->device->host, xfer_cnt); in asc_build_req()
7513 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in asc_build_req()
7532 ADV_SCSI_REQ_Q *scsiqp, struct scsi_cmnd *scp, int use_sg) in adv_get_sglist() argument
7541 slp = scsi_sglist(scp); in adv_get_sglist()
7557 ASC_STATS(scp->device->host, adv_build_nosg); in adv_get_sglist()
7607 ASC_STATS_ADD(scp->device->host, xfer_sect, in adv_get_sglist()
7637 adv_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, in adv_build_req() argument
7640 u32 srb_tag = scsi_cmd_to_rq(scp)->tag; in adv_build_req()
7652 if (reqp->cmndp && reqp->cmndp != scp ) { in adv_build_req()
7654 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7675 reqp->cmndp = scp; in adv_build_req()
7676 scp->host_scribble = (void *)reqp; in adv_build_req()
7683 scsiqp->cdb_len = scp->cmd_len; in adv_build_req()
7685 memcpy(scsiqp->cdb, scp->cmnd, scp->cmd_len < 12 ? scp->cmd_len : 12); in adv_build_req()
7687 if (scp->cmd_len > 12) { in adv_build_req()
7688 int cdb16_len = scp->cmd_len - 12; in adv_build_req()
7690 memcpy(scsiqp->cdb16, &scp->cmnd[12], cdb16_len); in adv_build_req()
7693 scsiqp->target_id = scp->device->id; in adv_build_req()
7694 scsiqp->target_lun = scp->device->lun; in adv_build_req()
7696 sense_addr = dma_map_single(boardp->dev, scp->sense_buffer, in adv_build_req()
7700 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7708 use_sg = scsi_dma_map(scp); in adv_build_req()
7711 ASC_STATS(scp->device->host, adv_build_noreq); in adv_build_req()
7723 scmd_printk(KERN_ERR, scp, "use_sg %d > " in adv_build_req()
7725 scp->device->host->sg_tablesize); in adv_build_req()
7726 scsi_dma_unmap(scp); in adv_build_req()
7727 set_host_byte(scp, DID_ERROR); in adv_build_req()
7729 scp->host_scribble = NULL; in adv_build_req()
7734 scsiqp->data_cnt = cpu_to_le32(scsi_bufflen(scp)); in adv_build_req()
7736 ret = adv_get_sglist(boardp, reqp, scsiqp, scp, use_sg); in adv_build_req()
7738 scsi_dma_unmap(scp); in adv_build_req()
7739 set_host_byte(scp, DID_ERROR); in adv_build_req()
7741 scp->host_scribble = NULL; in adv_build_req()
7746 ASC_STATS_ADD(scp->device->host, xfer_elem, use_sg); in adv_build_req()
7749 ASC_STATS(scp->device->host, xfer_cnt); in adv_build_req()
7752 ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); in adv_build_req()
8370 static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) in asc_execute_scsi_cmnd() argument
8373 struct asc_board *boardp = shost_priv(scp->device->host); in asc_execute_scsi_cmnd()
8375 ASC_DBG(1, "scp 0x%p\n", scp); in asc_execute_scsi_cmnd()
8381 ret = asc_build_req(boardp, scp, &asc_scsi_q); in asc_execute_scsi_cmnd()
8383 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8394 switch (adv_build_req(boardp, scp, &adv_reqp)) { in asc_execute_scsi_cmnd()
8410 ASC_STATS(scp->device->host, build_error); in asc_execute_scsi_cmnd()
8420 ASC_STATS(scp->device->host, exe_noerror); in asc_execute_scsi_cmnd()
8425 boardp->reqcnt[scp->device->id]++; in asc_execute_scsi_cmnd()
8430 ASC_STATS(scp->device->host, exe_busy); in asc_execute_scsi_cmnd()
8433 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() ASC_ERROR, " in asc_execute_scsi_cmnd()
8435 ASC_STATS(scp->device->host, exe_error); in asc_execute_scsi_cmnd()
8436 set_host_byte(scp, DID_ERROR); in asc_execute_scsi_cmnd()
8439 scmd_printk(KERN_ERR, scp, "ExeScsiQueue() unknown, " in asc_execute_scsi_cmnd()
8441 ASC_STATS(scp->device->host, exe_unknown); in asc_execute_scsi_cmnd()
8442 set_host_byte(scp, DID_ERROR); in asc_execute_scsi_cmnd()
8457 advansys_queuecommand_lck(struct scsi_cmnd *scp, void (*done)(struct scsi_cmnd *)) in advansys_queuecommand_lck() argument
8459 struct Scsi_Host *shost = scp->device->host; in advansys_queuecommand_lck()
8463 scp->scsi_done = done; in advansys_queuecommand_lck()
8465 asc_res = asc_execute_scsi_cmnd(scp); in advansys_queuecommand_lck()
8475 asc_scsi_done(scp); in advansys_queuecommand_lck()