Lines Matching refs:c

47 static int fill_cmd(ctlr_info_t *h, CommandList_struct *c, __u8 cmd, void *buff,
54 static void cmd_free(ctlr_info_t *h, CommandList_struct *c);
55 static void cmd_special_free(ctlr_info_t *h, CommandList_struct *c);
141 struct cciss_scsi_cmd_stack_elem_t *c; in scsi_cmd_alloc() local
151 c = stk->elem[stk->top]; in scsi_cmd_alloc()
153 memset(&c->cmd, 0, sizeof(c->cmd)); in scsi_cmd_alloc()
154 memset(&c->Err, 0, sizeof(c->Err)); in scsi_cmd_alloc()
156 c->cmd.busaddr = c->busaddr; in scsi_cmd_alloc()
157 c->cmd.cmdindex = c->cmdindex; in scsi_cmd_alloc()
161 temp64.val = (__u64) (c->busaddr + sizeof(CommandList_struct)); in scsi_cmd_alloc()
166 c->cmd.ErrDesc.Addr.lower = temp64.val32.lower; in scsi_cmd_alloc()
167 c->cmd.ErrDesc.Addr.upper = temp64.val32.upper; in scsi_cmd_alloc()
168 c->cmd.ErrDesc.Len = sizeof(ErrorInfo_struct); in scsi_cmd_alloc()
170 c->cmd.ctlr = h->ctlr; in scsi_cmd_alloc()
171 c->cmd.err_info = &c->Err; in scsi_cmd_alloc()
173 return (CommandList_struct *) c; in scsi_cmd_alloc()
177 scsi_cmd_free(ctlr_info_t *h, CommandList_struct *c) in scsi_cmd_free() argument
194 stk->elem[stk->top] = (struct cciss_scsi_cmd_stack_elem_t *) c; in scsi_cmd_free()
268 print_bytes (unsigned char *c, int len, int hex, int ascii)
276 x = c;
288 x = c;
722 static void complete_scsi_command(CommandList_struct *c, int timeout, in complete_scsi_command() argument
729 ei = c->err_info; in complete_scsi_command()
732 if (c->Request.Type.Type == TYPE_MSG) { in complete_scsi_command()
733 c->cmd_type = CMD_MSG_DONE; in complete_scsi_command()
737 cmd = (struct scsi_cmnd *) c->scsi_cmd; in complete_scsi_command()
738 h = hba[c->ctlr]; in complete_scsi_command()
741 if (c->Header.SGTotal > h->max_cmd_sgentries) in complete_scsi_command()
742 cciss_unmap_sg_chain_block(h, c); in complete_scsi_command()
783 "reported\n", c); in complete_scsi_command()
799 "%p has protocol error\n", c); in complete_scsi_command()
804 "%p had hardware error\n", c); in complete_scsi_command()
809 "%p had connection lost\n", c); in complete_scsi_command()
813 dev_warn(&h->pdev->dev, "%p was aborted\n", c); in complete_scsi_command()
818 "%p reports abort failed\n", c); in complete_scsi_command()
823 "unsolicited abort\n", c); in complete_scsi_command()
827 dev_warn(&h->pdev->dev, "%p timedout\n", c); in complete_scsi_command()
832 "unabortable\n", c); in complete_scsi_command()
837 "%p returned unknown status %x\n", c, in complete_scsi_command()
842 scsi_cmd_free(h, c); in complete_scsi_command()
881 CommandList_struct *c, in cciss_unmap_one() argument
887 addr64.val32.lower = c->SG[0].Addr.lower; in cciss_unmap_one()
888 addr64.val32.upper = c->SG[0].Addr.upper; in cciss_unmap_one()
894 CommandList_struct *c, in cciss_map_one() argument
902 c->SG[0].Addr.lower = in cciss_map_one()
904 c->SG[0].Addr.upper = in cciss_map_one()
906 c->SG[0].Len = buflen; in cciss_map_one()
907 c->Header.SGList = (__u8) 1; /* no. SGs contig in this cmd */ in cciss_map_one()
908 c->Header.SGTotal = (__u16) 1; /* total sgs in this cmd list */ in cciss_map_one()
913 CommandList_struct *c, in cciss_scsi_do_simple_cmd() argument
922 c->cmd_type = CMD_IOCTL_PEND; /* treat this like an ioctl */ in cciss_scsi_do_simple_cmd()
923 c->scsi_cmd = NULL; in cciss_scsi_do_simple_cmd()
924 c->Header.ReplyQueue = 0; /* unused in simple mode */ in cciss_scsi_do_simple_cmd()
925 memcpy(&c->Header.LUN, scsi3addr, sizeof(c->Header.LUN)); in cciss_scsi_do_simple_cmd()
926 c->Header.Tag.lower = c->busaddr; /* Use k. address of cmd as tag */ in cciss_scsi_do_simple_cmd()
933 memset(c->Request.CDB, 0, sizeof(c->Request.CDB)); in cciss_scsi_do_simple_cmd()
934 memcpy(c->Request.CDB, cdb, cdblen); in cciss_scsi_do_simple_cmd()
935 c->Request.Timeout = 0; in cciss_scsi_do_simple_cmd()
936 c->Request.CDBLen = cdblen; in cciss_scsi_do_simple_cmd()
937 c->Request.Type.Type = TYPE_CMD; in cciss_scsi_do_simple_cmd()
938 c->Request.Type.Attribute = ATTR_SIMPLE; in cciss_scsi_do_simple_cmd()
939 c->Request.Type.Direction = direction; in cciss_scsi_do_simple_cmd()
942 cciss_map_one(h->pdev, c, (unsigned char *) buf, in cciss_scsi_do_simple_cmd()
945 c->waiting = &wait; in cciss_scsi_do_simple_cmd()
946 enqueue_cmd_and_start_io(h, c); in cciss_scsi_do_simple_cmd()
950 cciss_unmap_one(h->pdev, c, bufsize, DMA_FROM_DEVICE); in cciss_scsi_do_simple_cmd()
955 cciss_scsi_interpret_error(ctlr_info_t *h, CommandList_struct *c) in cciss_scsi_interpret_error() argument
959 ei = c->err_info; in cciss_scsi_interpret_error()
964 "cmd %p has completed with errors\n", c); in cciss_scsi_interpret_error()
967 c, ei->ScsiStatus); in cciss_scsi_interpret_error()
981 "reported\n", c); in cciss_scsi_interpret_error()
988 "target device no longer present)\n", c); in cciss_scsi_interpret_error()
994 dev_warn(&h->pdev->dev, "%p has protocol error\n", c); in cciss_scsi_interpret_error()
998 dev_warn(&h->pdev->dev, "%p had hardware error\n", c); in cciss_scsi_interpret_error()
1001 dev_warn(&h->pdev->dev, "%p had connection lost\n", c); in cciss_scsi_interpret_error()
1004 dev_warn(&h->pdev->dev, "%p was aborted\n", c); in cciss_scsi_interpret_error()
1008 "%p reports abort failed\n", c); in cciss_scsi_interpret_error()
1012 "%p aborted due to an unsolicited abort\n", c); in cciss_scsi_interpret_error()
1015 dev_warn(&h->pdev->dev, "%p timedout\n", c); in cciss_scsi_interpret_error()
1019 "%p unabortable\n", c); in cciss_scsi_interpret_error()
1024 c, ei->CommandStatus); in cciss_scsi_interpret_error()
1034 CommandList_struct *c; in cciss_scsi_do_inquiry() local
1040 c = scsi_cmd_alloc(h); in cciss_scsi_do_inquiry()
1043 if (c == NULL) { /* trouble... */ in cciss_scsi_do_inquiry()
1048 ei = c->err_info; in cciss_scsi_do_inquiry()
1056 rc = cciss_scsi_do_simple_cmd(h, c, scsi3addr, cdb, in cciss_scsi_do_inquiry()
1063 cciss_scsi_interpret_error(h, c); in cciss_scsi_do_inquiry()
1067 scsi_cmd_free(h, c); in cciss_scsi_do_inquiry()
1096 CommandList_struct *c; in cciss_scsi_do_report_phys_luns() local
1103 c = scsi_cmd_alloc(h); in cciss_scsi_do_report_phys_luns()
1105 if (c == NULL) { /* trouble... */ in cciss_scsi_do_report_phys_luns()
1124 rc = cciss_scsi_do_simple_cmd(h, c, scsi3addr, in cciss_scsi_do_report_phys_luns()
1131 ei = c->err_info; in cciss_scsi_do_report_phys_luns()
1134 cciss_scsi_interpret_error(h, c); in cciss_scsi_do_report_phys_luns()
1138 scsi_cmd_free(h, c); in cciss_scsi_do_report_phys_luns()
1357 static void cciss_scatter_gather(ctlr_info_t *h, CommandList_struct *c, in cciss_scatter_gather() argument
1371 curr_sg = c->SG; in cciss_scatter_gather()
1379 curr_sg = sa->cmd_sg_list[c->cmdindex]; in cciss_scatter_gather()
1392 cciss_map_sg_chain_block(h, c, in cciss_scatter_gather()
1393 sa->cmd_sg_list[c->cmdindex], in cciss_scatter_gather()
1400 c->Header.SGTotal = (u16) request_nsgs + chained; in cciss_scatter_gather()
1402 c->Header.SGList = h->max_cmd_sgentries; in cciss_scatter_gather()
1404 c->Header.SGList = c->Header.SGTotal; in cciss_scatter_gather()
1415 CommandList_struct *c; in cciss_scsi_queue_command_lck() local
1438 c = scsi_cmd_alloc(h); in cciss_scsi_queue_command_lck()
1440 if (c == NULL) { /* trouble... */ in cciss_scsi_queue_command_lck()
1453 cmd->host_scribble = (unsigned char *) c; in cciss_scsi_queue_command_lck()
1455 c->cmd_type = CMD_SCSI; in cciss_scsi_queue_command_lck()
1456 c->scsi_cmd = cmd; in cciss_scsi_queue_command_lck()
1457 c->Header.ReplyQueue = 0; /* unused in simple mode */ in cciss_scsi_queue_command_lck()
1458 memcpy(&c->Header.LUN.LunAddrBytes[0], &scsi3addr[0], 8); in cciss_scsi_queue_command_lck()
1459 c->Header.Tag.lower = c->busaddr; /* Use k. address of cmd as tag */ in cciss_scsi_queue_command_lck()
1463 c->Request.Timeout = 0; in cciss_scsi_queue_command_lck()
1464 memset(c->Request.CDB, 0, sizeof(c->Request.CDB)); in cciss_scsi_queue_command_lck()
1465 BUG_ON(cmd->cmd_len > sizeof(c->Request.CDB)); in cciss_scsi_queue_command_lck()
1466 c->Request.CDBLen = cmd->cmd_len; in cciss_scsi_queue_command_lck()
1467 memcpy(c->Request.CDB, cmd->cmnd, cmd->cmd_len); in cciss_scsi_queue_command_lck()
1468 c->Request.Type.Type = TYPE_CMD; in cciss_scsi_queue_command_lck()
1469 c->Request.Type.Attribute = ATTR_SIMPLE; in cciss_scsi_queue_command_lck()
1473 c->Request.Type.Direction = XFER_WRITE; in cciss_scsi_queue_command_lck()
1476 c->Request.Type.Direction = XFER_READ; in cciss_scsi_queue_command_lck()
1479 c->Request.Type.Direction = XFER_NONE; in cciss_scsi_queue_command_lck()
1486 c->Request.Type.Direction = XFER_RSVD; in cciss_scsi_queue_command_lck()
1502 cciss_scatter_gather(h, c, cmd); in cciss_scsi_queue_command_lck()
1503 enqueue_cmd_and_start_io(h, c); in cciss_scsi_queue_command_lck()
1578 CommandList_struct *c; in wait_for_device_to_become_ready() local
1580 c = cmd_alloc(h); in wait_for_device_to_become_ready()
1581 if (!c) { in wait_for_device_to_become_ready()
1601 rc = fill_cmd(h, c, TEST_UNIT_READY, NULL, 0, 0, in wait_for_device_to_become_ready()
1604 rc = sendcmd_withirq_core(h, c, 0); in wait_for_device_to_become_ready()
1606 (void) process_sendcmd_error(h, c); in wait_for_device_to_become_ready()
1611 if (c->err_info->CommandStatus == CMD_SUCCESS) in wait_for_device_to_become_ready()
1614 if (c->err_info->CommandStatus == CMD_TARGET_STATUS && in wait_for_device_to_become_ready()
1615 c->err_info->ScsiStatus == SAM_STAT_CHECK_CONDITION) { in wait_for_device_to_become_ready()
1616 if (c->err_info->SenseInfo[2] == NO_SENSE) in wait_for_device_to_become_ready()
1618 if (c->err_info->SenseInfo[2] == UNIT_ATTENTION) { in wait_for_device_to_become_ready()
1620 asc = c->err_info->SenseInfo[12]; in wait_for_device_to_become_ready()
1621 check_for_unit_attention(h, c); in wait_for_device_to_become_ready()
1638 cmd_free(h, c); in wait_for_device_to_become_ready()