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);
140 struct cciss_scsi_cmd_stack_elem_t *c; in scsi_cmd_alloc() local
150 c = stk->elem[stk->top]; in scsi_cmd_alloc()
152 memset(&c->cmd, 0, sizeof(c->cmd)); in scsi_cmd_alloc()
153 memset(&c->Err, 0, sizeof(c->Err)); in scsi_cmd_alloc()
155 c->cmd.busaddr = c->busaddr; in scsi_cmd_alloc()
156 c->cmd.cmdindex = c->cmdindex; in scsi_cmd_alloc()
160 temp64.val = (__u64) (c->busaddr + sizeof(CommandList_struct)); in scsi_cmd_alloc()
165 c->cmd.ErrDesc.Addr.lower = temp64.val32.lower; in scsi_cmd_alloc()
166 c->cmd.ErrDesc.Addr.upper = temp64.val32.upper; in scsi_cmd_alloc()
167 c->cmd.ErrDesc.Len = sizeof(ErrorInfo_struct); in scsi_cmd_alloc()
169 c->cmd.ctlr = h->ctlr; in scsi_cmd_alloc()
170 c->cmd.err_info = &c->Err; in scsi_cmd_alloc()
172 return (CommandList_struct *) c; in scsi_cmd_alloc()
176 scsi_cmd_free(ctlr_info_t *h, CommandList_struct *c) in scsi_cmd_free() argument
193 stk->elem[stk->top] = (struct cciss_scsi_cmd_stack_elem_t *) c; in scsi_cmd_free()
267 print_bytes (unsigned char *c, int len, int hex, int ascii)
275 x = c;
287 x = c;
721 static void complete_scsi_command(CommandList_struct *c, int timeout, in complete_scsi_command() argument
728 ei = c->err_info; in complete_scsi_command()
731 if (c->Request.Type.Type == TYPE_MSG) { in complete_scsi_command()
732 c->cmd_type = CMD_MSG_DONE; in complete_scsi_command()
736 cmd = (struct scsi_cmnd *) c->scsi_cmd; in complete_scsi_command()
737 h = hba[c->ctlr]; in complete_scsi_command()
740 if (c->Header.SGTotal > h->max_cmd_sgentries) in complete_scsi_command()
741 cciss_unmap_sg_chain_block(h, c); in complete_scsi_command()
782 "reported\n", c); in complete_scsi_command()
798 "%p has protocol error\n", c); in complete_scsi_command()
803 "%p had hardware error\n", c); in complete_scsi_command()
808 "%p had connection lost\n", c); in complete_scsi_command()
812 dev_warn(&h->pdev->dev, "%p was aborted\n", c); in complete_scsi_command()
817 "%p reports abort failed\n", c); in complete_scsi_command()
822 "unsolicited abort\n", c); in complete_scsi_command()
826 dev_warn(&h->pdev->dev, "%p timedout\n", c); in complete_scsi_command()
831 "unabortable\n", c); in complete_scsi_command()
836 "%p returned unknown status %x\n", c, in complete_scsi_command()
841 scsi_cmd_free(h, c); in complete_scsi_command()
880 CommandList_struct *c, in cciss_unmap_one() argument
886 addr64.val32.lower = c->SG[0].Addr.lower; in cciss_unmap_one()
887 addr64.val32.upper = c->SG[0].Addr.upper; in cciss_unmap_one()
893 CommandList_struct *c, in cciss_map_one() argument
901 c->SG[0].Addr.lower = in cciss_map_one()
903 c->SG[0].Addr.upper = in cciss_map_one()
905 c->SG[0].Len = buflen; in cciss_map_one()
906 c->Header.SGList = (__u8) 1; /* no. SGs contig in this cmd */ in cciss_map_one()
907 c->Header.SGTotal = (__u16) 1; /* total sgs in this cmd list */ in cciss_map_one()
912 CommandList_struct *c, in cciss_scsi_do_simple_cmd() argument
921 c->cmd_type = CMD_IOCTL_PEND; /* treat this like an ioctl */ in cciss_scsi_do_simple_cmd()
922 c->scsi_cmd = NULL; in cciss_scsi_do_simple_cmd()
923 c->Header.ReplyQueue = 0; /* unused in simple mode */ in cciss_scsi_do_simple_cmd()
924 memcpy(&c->Header.LUN, scsi3addr, sizeof(c->Header.LUN)); in cciss_scsi_do_simple_cmd()
925 c->Header.Tag.lower = c->busaddr; /* Use k. address of cmd as tag */ in cciss_scsi_do_simple_cmd()
932 memset(c->Request.CDB, 0, sizeof(c->Request.CDB)); in cciss_scsi_do_simple_cmd()
933 memcpy(c->Request.CDB, cdb, cdblen); in cciss_scsi_do_simple_cmd()
934 c->Request.Timeout = 0; in cciss_scsi_do_simple_cmd()
935 c->Request.CDBLen = cdblen; in cciss_scsi_do_simple_cmd()
936 c->Request.Type.Type = TYPE_CMD; in cciss_scsi_do_simple_cmd()
937 c->Request.Type.Attribute = ATTR_SIMPLE; in cciss_scsi_do_simple_cmd()
938 c->Request.Type.Direction = direction; in cciss_scsi_do_simple_cmd()
941 cciss_map_one(h->pdev, c, (unsigned char *) buf, in cciss_scsi_do_simple_cmd()
944 c->waiting = &wait; in cciss_scsi_do_simple_cmd()
945 enqueue_cmd_and_start_io(h, c); in cciss_scsi_do_simple_cmd()
949 cciss_unmap_one(h->pdev, c, bufsize, DMA_FROM_DEVICE); in cciss_scsi_do_simple_cmd()
954 cciss_scsi_interpret_error(ctlr_info_t *h, CommandList_struct *c) in cciss_scsi_interpret_error() argument
958 ei = c->err_info; in cciss_scsi_interpret_error()
963 "cmd %p has completed with errors\n", c); in cciss_scsi_interpret_error()
966 c, ei->ScsiStatus); in cciss_scsi_interpret_error()
980 "reported\n", c); in cciss_scsi_interpret_error()
987 "target device no longer present)\n", c); in cciss_scsi_interpret_error()
993 dev_warn(&h->pdev->dev, "%p has protocol error\n", c); in cciss_scsi_interpret_error()
997 dev_warn(&h->pdev->dev, "%p had hardware error\n", c); in cciss_scsi_interpret_error()
1000 dev_warn(&h->pdev->dev, "%p had connection lost\n", c); in cciss_scsi_interpret_error()
1003 dev_warn(&h->pdev->dev, "%p was aborted\n", c); in cciss_scsi_interpret_error()
1007 "%p reports abort failed\n", c); in cciss_scsi_interpret_error()
1011 "%p aborted due to an unsolicited abort\n", c); in cciss_scsi_interpret_error()
1014 dev_warn(&h->pdev->dev, "%p timedout\n", c); in cciss_scsi_interpret_error()
1018 "%p unabortable\n", c); in cciss_scsi_interpret_error()
1023 c, ei->CommandStatus); in cciss_scsi_interpret_error()
1033 CommandList_struct *c; in cciss_scsi_do_inquiry() local
1039 c = scsi_cmd_alloc(h); in cciss_scsi_do_inquiry()
1042 if (c == NULL) { /* trouble... */ in cciss_scsi_do_inquiry()
1047 ei = c->err_info; in cciss_scsi_do_inquiry()
1055 rc = cciss_scsi_do_simple_cmd(h, c, scsi3addr, cdb, in cciss_scsi_do_inquiry()
1062 cciss_scsi_interpret_error(h, c); in cciss_scsi_do_inquiry()
1066 scsi_cmd_free(h, c); in cciss_scsi_do_inquiry()
1095 CommandList_struct *c; in cciss_scsi_do_report_phys_luns() local
1102 c = scsi_cmd_alloc(h); in cciss_scsi_do_report_phys_luns()
1104 if (c == NULL) { /* trouble... */ in cciss_scsi_do_report_phys_luns()
1123 rc = cciss_scsi_do_simple_cmd(h, c, scsi3addr, in cciss_scsi_do_report_phys_luns()
1130 ei = c->err_info; in cciss_scsi_do_report_phys_luns()
1133 cciss_scsi_interpret_error(h, c); in cciss_scsi_do_report_phys_luns()
1137 scsi_cmd_free(h, c); in cciss_scsi_do_report_phys_luns()
1356 static void cciss_scatter_gather(ctlr_info_t *h, CommandList_struct *c, in cciss_scatter_gather() argument
1370 curr_sg = c->SG; in cciss_scatter_gather()
1378 curr_sg = sa->cmd_sg_list[c->cmdindex]; in cciss_scatter_gather()
1391 cciss_map_sg_chain_block(h, c, in cciss_scatter_gather()
1392 sa->cmd_sg_list[c->cmdindex], in cciss_scatter_gather()
1399 c->Header.SGTotal = (u16) request_nsgs + chained; in cciss_scatter_gather()
1401 c->Header.SGList = h->max_cmd_sgentries; in cciss_scatter_gather()
1403 c->Header.SGList = c->Header.SGTotal; in cciss_scatter_gather()
1414 CommandList_struct *c; in cciss_scsi_queue_command_lck() local
1437 c = scsi_cmd_alloc(h); in cciss_scsi_queue_command_lck()
1439 if (c == NULL) { /* trouble... */ in cciss_scsi_queue_command_lck()
1452 cmd->host_scribble = (unsigned char *) c; in cciss_scsi_queue_command_lck()
1454 c->cmd_type = CMD_SCSI; in cciss_scsi_queue_command_lck()
1455 c->scsi_cmd = cmd; in cciss_scsi_queue_command_lck()
1456 c->Header.ReplyQueue = 0; /* unused in simple mode */ in cciss_scsi_queue_command_lck()
1457 memcpy(&c->Header.LUN.LunAddrBytes[0], &scsi3addr[0], 8); in cciss_scsi_queue_command_lck()
1458 c->Header.Tag.lower = c->busaddr; /* Use k. address of cmd as tag */ in cciss_scsi_queue_command_lck()
1462 c->Request.Timeout = 0; in cciss_scsi_queue_command_lck()
1463 memset(c->Request.CDB, 0, sizeof(c->Request.CDB)); in cciss_scsi_queue_command_lck()
1464 BUG_ON(cmd->cmd_len > sizeof(c->Request.CDB)); in cciss_scsi_queue_command_lck()
1465 c->Request.CDBLen = cmd->cmd_len; in cciss_scsi_queue_command_lck()
1466 memcpy(c->Request.CDB, cmd->cmnd, cmd->cmd_len); in cciss_scsi_queue_command_lck()
1467 c->Request.Type.Type = TYPE_CMD; in cciss_scsi_queue_command_lck()
1468 c->Request.Type.Attribute = ATTR_SIMPLE; in cciss_scsi_queue_command_lck()
1472 c->Request.Type.Direction = XFER_WRITE; in cciss_scsi_queue_command_lck()
1475 c->Request.Type.Direction = XFER_READ; in cciss_scsi_queue_command_lck()
1478 c->Request.Type.Direction = XFER_NONE; in cciss_scsi_queue_command_lck()
1485 c->Request.Type.Direction = XFER_RSVD; in cciss_scsi_queue_command_lck()
1501 cciss_scatter_gather(h, c, cmd); in cciss_scsi_queue_command_lck()
1502 enqueue_cmd_and_start_io(h, c); in cciss_scsi_queue_command_lck()
1577 CommandList_struct *c; in wait_for_device_to_become_ready() local
1579 c = cmd_alloc(h); in wait_for_device_to_become_ready()
1580 if (!c) { in wait_for_device_to_become_ready()
1600 rc = fill_cmd(h, c, TEST_UNIT_READY, NULL, 0, 0, in wait_for_device_to_become_ready()
1603 rc = sendcmd_withirq_core(h, c, 0); in wait_for_device_to_become_ready()
1605 (void) process_sendcmd_error(h, c); in wait_for_device_to_become_ready()
1610 if (c->err_info->CommandStatus == CMD_SUCCESS) in wait_for_device_to_become_ready()
1613 if (c->err_info->CommandStatus == CMD_TARGET_STATUS && in wait_for_device_to_become_ready()
1614 c->err_info->ScsiStatus == SAM_STAT_CHECK_CONDITION) { in wait_for_device_to_become_ready()
1615 if (c->err_info->SenseInfo[2] == NO_SENSE) in wait_for_device_to_become_ready()
1617 if (c->err_info->SenseInfo[2] == UNIT_ATTENTION) { in wait_for_device_to_become_ready()
1619 asc = c->err_info->SenseInfo[12]; in wait_for_device_to_become_ready()
1620 check_for_unit_attention(h, c); in wait_for_device_to_become_ready()
1637 cmd_free(h, c); in wait_for_device_to_become_ready()