• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/fc4/

Lines Matching refs:SCpnt

71 #define FCP_CMND(SCpnt) ((fcp_cmnd *)&(SCpnt->SCp))
72 #define FC_SCMND(SCpnt) ((fc_channel *)(SCpnt->device->host->hostdata[0]))
369 static void fcp_scsi_done(struct scsi_cmnd *SCpnt);
376 struct scsi_cmnd *SCpnt;
383 SCpnt = SC_FCMND(fcmd);
385 if (SCpnt->done != fcp_scsi_done)
414 if (sense_len > sizeof(SCpnt->sense_buffer)) sense_len = sizeof(SCpnt->sense_buffer);
415 memcpy(SCpnt->sense_buffer, ((char *)(rsp+1)), sense_len);
419 if (SCpnt->use_sg)
420 dma_unmap_sg(fc->dev, (struct scatterlist *)SCpnt->request_buffer,
421 SCpnt->use_sg,
422 SCpnt->sc_data_direction);
424 dma_unmap_single(fc->dev, fcmd->data, SCpnt->request_bufflen,
425 SCpnt->sc_data_direction);
435 printk ("%s: (%d,%d) Received rsp_status 0x%x\n", fc->name, SCpnt->device->channel, SCpnt->device->id, rsp_status);
438 SCpnt->result = (host_status << 16) | (rsp_status & 0xff);
440 if (host_status || SCpnt->result || rsp_status) printk("FC: host_status %d, packet status %d\n",
441 host_status, SCpnt->result);
443 SCpnt->done = fcmd->done;
447 FCD(("Calling scsi_done with %08x\n", SCpnt->result))
448 SCpnt->scsi_done(SCpnt);
748 static void fcp_scsi_done(struct scsi_cmnd *SCpnt)
750 if (FCP_CMND(SCpnt)->done)
751 FCP_CMND(SCpnt)->done(SCpnt);
754 static int fcp_scsi_queue_it(fc_channel *fc, struct scsi_cmnd *SCpnt,
766 if (fc->encode_addr (SCpnt, cmd->fcp_addr, fc, fcmd)) {
769 SCpnt->result = (DID_BAD_TARGET << 16);
770 SCpnt->scsi_done(SCpnt);
776 if (SCpnt->device->tagged_supported) {
777 if (jiffies - fc->ages[SCpnt->device->channel * fc->targets + SCpnt->device->id] > (5 * 60 * HZ)) {
778 fc->ages[SCpnt->device->channel * fc->targets + SCpnt->device->id] = jiffies;
784 if (!SCpnt->request_bufflen && !SCpnt->use_sg) {
788 switch (SCpnt->cmnd[0]) {
796 if (!SCpnt->use_sg) {
797 cmd->fcp_data_len = SCpnt->request_bufflen;
798 fcmd->data = dma_map_single (fc->dev, (char *)SCpnt->request_buffer,
799 SCpnt->request_bufflen,
800 SCpnt->sc_data_direction);
802 struct scatterlist *sg = (struct scatterlist *)SCpnt->request_buffer;
805 FCD(("XXX: Use_sg %d %d\n", SCpnt->use_sg, sg->length))
806 nents = dma_map_sg (fc->dev, sg, SCpnt->use_sg,
807 SCpnt->sc_data_direction);
808 if (nents > 1) printk ("%s: SG for nents %d (use_sg %d) not handled yet\n", fc->name, nents, SCpnt->use_sg);
813 memcpy (cmd->fcp_cdb, SCpnt->cmnd, SCpnt->cmd_len);
814 memset (cmd->fcp_cdb+SCpnt->cmd_len, 0, sizeof(cmd->fcp_cdb)-SCpnt->cmd_len);
815 FCD(("XXX: %04x.%04x.%04x.%04x - %08x%08x%08x\n", cmd->fcp_addr[0], cmd->fcp_addr[1], cmd->fcp_addr[2], cmd->fcp_addr[3], *(u32 *)SCpnt->cmnd, *(u32 *)(SCpnt->cmnd+4), *(u32 *)(SCpnt->cmnd+8)))
829 int fcp_scsi_queuecommand(struct scsi_cmnd *SCpnt,
832 fcp_cmnd *fcmd = FCP_CMND(SCpnt);
833 fc_channel *fc = FC_SCMND(SCpnt);
836 if (SCpnt->done != fcp_scsi_done) {
837 fcmd->done = SCpnt->done;
838 SCpnt->done = fcp_scsi_done;
839 SCpnt->scsi_done = done;
848 return fcp_scsi_queue_it(fc, SCpnt, fcmd, 1);
850 return fcp_scsi_queue_it(fc, SCpnt, fcmd, 0);
866 int fcp_scsi_abort(struct scsi_cmnd *SCpnt)
869 fcp_cmnd *fcmd = FCP_CMND(SCpnt);
870 fc_channel *fc = FC_SCMND(SCpnt);
892 SCpnt->result = DID_ABORT;
893 fcmd->done(SCpnt);
905 int fcp_scsi_dev_reset(struct scsi_cmnd *SCpnt)
910 static int __fcp_scsi_host_reset(struct scsi_cmnd *SCpnt)
912 fc_channel *fc = FC_SCMND(SCpnt);
913 fcp_cmnd *fcmd = FCP_CMND(SCpnt);
919 if (fc->cmd_slots[i] && SCpnt->result != DID_ABORT) {
920 SCpnt->result = DID_RESET;
921 fcmd->done(SCpnt);
931 int fcp_scsi_host_reset(struct scsi_cmnd *SCpnt)
936 spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
937 rc = __fcp_scsi_host_reset(SCpnt);
938 spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);