• Home
  • Raw
  • Download

Lines Matching refs:h

47 static int fill_cmd(ctlr_info_t *h, CommandList_struct *c, __u8 cmd, void *buff,
52 static CommandList_struct *cmd_alloc(ctlr_info_t *h);
53 static CommandList_struct *cmd_special_alloc(ctlr_info_t *h);
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);
63 static int cciss_scsi_queue_command (struct Scsi_Host *h,
126 #define CPQ_TAPE_LOCK(h, flags) spin_lock_irqsave( \ argument
127 &h->scsi_ctlr->lock, flags);
128 #define CPQ_TAPE_UNLOCK(h, flags) spin_unlock_irqrestore( \ argument
129 &h->scsi_ctlr->lock, flags);
132 scsi_cmd_alloc(ctlr_info_t *h) in scsi_cmd_alloc() argument
145 sa = h->scsi_ctlr; in scsi_cmd_alloc()
169 c->cmd.ctlr = h->ctlr; in scsi_cmd_alloc()
176 scsi_cmd_free(ctlr_info_t *h, CommandList_struct *c) in scsi_cmd_free() argument
185 sa = h->scsi_ctlr; in scsi_cmd_free()
189 dev_err(&h->pdev->dev, in scsi_cmd_free()
197 scsi_cmd_stack_setup(ctlr_info_t *h, struct cciss_scsi_adapter_data_t *sa) in scsi_cmd_stack_setup() argument
205 sa->cmd_sg_list = cciss_allocate_sg_chain_blocks(h, in scsi_cmd_stack_setup()
206 h->chainsize, stk->nelems); in scsi_cmd_stack_setup()
207 if (!sa->cmd_sg_list && h->chainsize > 0) in scsi_cmd_stack_setup()
216 pci_alloc_consistent(h->pdev, size, &stk->cmd_pool_handle); in scsi_cmd_stack_setup()
225 pci_free_consistent(h->pdev, size, stk->pool, in scsi_cmd_stack_setup()
240 scsi_cmd_stack_free(ctlr_info_t *h) in scsi_cmd_stack_free() argument
246 sa = h->scsi_ctlr; in scsi_cmd_stack_free()
249 dev_warn(&h->pdev->dev, in scsi_cmd_stack_free()
255 pci_free_consistent(h->pdev, size, stk->pool, stk->cmd_pool_handle); in scsi_cmd_stack_free()
349 find_bus_target_lun(ctlr_info_t *h, int *bus, int *target, int *lun) in find_bus_target_lun() argument
359 for (i = 0; i < ccissscsi[h->ctlr].ndevices; i++) in find_bus_target_lun()
360 target_taken[ccissscsi[h->ctlr].dev[i].target] = 1; in find_bus_target_lun()
376 cciss_scsi_add_entry(ctlr_info_t *h, int hostno, in cciss_scsi_add_entry() argument
381 int n = ccissscsi[h->ctlr].ndevices; in cciss_scsi_add_entry()
387 dev_warn(&h->pdev->dev, "Too many devices, " in cciss_scsi_add_entry()
404 sd = &ccissscsi[h->ctlr].dev[i]; in cciss_scsi_add_entry()
417 sd = &ccissscsi[h->ctlr].dev[n]; in cciss_scsi_add_entry()
419 if (find_bus_target_lun(h, in cciss_scsi_add_entry()
438 ccissscsi[h->ctlr].ndevices++; in cciss_scsi_add_entry()
444 dev_info(&h->pdev->dev, "%s device c%db%dt%dl%d added.\n", in cciss_scsi_add_entry()
451 cciss_scsi_remove_entry(ctlr_info_t *h, int hostno, int entry, in cciss_scsi_remove_entry() argument
459 sd = ccissscsi[h->ctlr].dev[entry]; in cciss_scsi_remove_entry()
464 for (i = entry; i < ccissscsi[h->ctlr].ndevices-1; i++) in cciss_scsi_remove_entry()
465 ccissscsi[h->ctlr].dev[i] = ccissscsi[h->ctlr].dev[i+1]; in cciss_scsi_remove_entry()
466 ccissscsi[h->ctlr].ndevices--; in cciss_scsi_remove_entry()
467 dev_info(&h->pdev->dev, "%s device c%db%dt%dl%d removed.\n", in cciss_scsi_remove_entry()
483 static void fixup_botched_add(ctlr_info_t *h, char *scsi3addr) in fixup_botched_add() argument
489 CPQ_TAPE_LOCK(h, flags); in fixup_botched_add()
490 for (i = 0; i < ccissscsi[h->ctlr].ndevices; i++) { in fixup_botched_add()
492 ccissscsi[h->ctlr].dev[i].scsi3addr, 8) == 0) { in fixup_botched_add()
493 for (j = i; j < ccissscsi[h->ctlr].ndevices-1; j++) in fixup_botched_add()
494 ccissscsi[h->ctlr].dev[j] = in fixup_botched_add()
495 ccissscsi[h->ctlr].dev[j+1]; in fixup_botched_add()
496 ccissscsi[h->ctlr].ndevices--; in fixup_botched_add()
500 CPQ_TAPE_UNLOCK(h, flags); in fixup_botched_add()
520 adjust_cciss_scsi_table(ctlr_info_t *h, int hostno, in adjust_cciss_scsi_table() argument
541 dev_warn(&h->pdev->dev, in adjust_cciss_scsi_table()
546 CPQ_TAPE_LOCK(h, flags); in adjust_cciss_scsi_table()
549 sh = h->scsi_ctlr->scsi_host; in adjust_cciss_scsi_table()
557 while (i < ccissscsi[h->ctlr].ndevices) { in adjust_cciss_scsi_table()
558 csd = &ccissscsi[h->ctlr].dev[i]; in adjust_cciss_scsi_table()
573 cciss_scsi_remove_entry(h, hostno, i, in adjust_cciss_scsi_table()
578 dev_info(&h->pdev->dev, in adjust_cciss_scsi_table()
581 cciss_scsi_remove_entry(h, hostno, i, in adjust_cciss_scsi_table()
584 if (cciss_scsi_add_entry(h, hostno, &sd[j], in adjust_cciss_scsi_table()
606 for (j = 0; j < ccissscsi[h->ctlr].ndevices; j++) { in adjust_cciss_scsi_table()
607 csd = &ccissscsi[h->ctlr].dev[j]; in adjust_cciss_scsi_table()
619 if (cciss_scsi_add_entry(h, hostno, &sd[i], in adjust_cciss_scsi_table()
625 dev_warn(&h->pdev->dev, in adjust_cciss_scsi_table()
630 CPQ_TAPE_UNLOCK(h, flags); in adjust_cciss_scsi_table()
650 dev_warn(&h->pdev->dev, "didn't find " in adjust_cciss_scsi_table()
664 dev_warn(&h->pdev->dev, "scsi_add_device " in adjust_cciss_scsi_table()
669 fixup_botched_add(h, added[i].scsi3addr); in adjust_cciss_scsi_table()
679 lookup_scsi3addr(ctlr_info_t *h, int bus, int target, int lun, char *scsi3addr) in lookup_scsi3addr() argument
685 CPQ_TAPE_LOCK(h, flags); in lookup_scsi3addr()
686 for (i = 0; i < ccissscsi[h->ctlr].ndevices; i++) { in lookup_scsi3addr()
687 sd = &ccissscsi[h->ctlr].dev[i]; in lookup_scsi3addr()
692 CPQ_TAPE_UNLOCK(h, flags); in lookup_scsi3addr()
696 CPQ_TAPE_UNLOCK(h, flags); in lookup_scsi3addr()
701 cciss_scsi_setup(ctlr_info_t *h) in cciss_scsi_setup() argument
705 ccissscsi[h->ctlr].ndevices = 0; in cciss_scsi_setup()
713 if (scsi_cmd_stack_setup(h, shba) != 0) { in cciss_scsi_setup()
717 h->scsi_ctlr = shba; in cciss_scsi_setup()
725 ctlr_info_t *h; in complete_scsi_command() local
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()
780 dev_warn(&h->pdev->dev, "%p has" in complete_scsi_command()
797 dev_warn(&h->pdev->dev, in complete_scsi_command()
802 dev_warn(&h->pdev->dev, in complete_scsi_command()
807 dev_warn(&h->pdev->dev, in complete_scsi_command()
812 dev_warn(&h->pdev->dev, "%p was aborted\n", c); in complete_scsi_command()
816 dev_warn(&h->pdev->dev, in complete_scsi_command()
821 dev_warn(&h->pdev->dev, "%p aborted due to an " in complete_scsi_command()
826 dev_warn(&h->pdev->dev, "%p timedout\n", c); in complete_scsi_command()
830 dev_warn(&h->pdev->dev, "c %p command " in complete_scsi_command()
835 dev_warn(&h->pdev->dev, in complete_scsi_command()
841 scsi_cmd_free(h, c); in complete_scsi_command()
845 cciss_scsi_detect(ctlr_info_t *h) in cciss_scsi_detect() argument
857 sh->sg_tablesize = h->maxsgentries; in cciss_scsi_detect()
859 sh->max_sectors = h->cciss_max_sectors; in cciss_scsi_detect()
862 h->scsi_ctlr)->scsi_host = sh; in cciss_scsi_detect()
863 sh->hostdata[0] = (unsigned long) h; in cciss_scsi_detect()
864 sh->irq = h->intr[SIMPLE_MODE_INT]; in cciss_scsi_detect()
866 error = scsi_add_host(sh, &h->pdev->dev); in cciss_scsi_detect()
911 cciss_scsi_do_simple_cmd(ctlr_info_t *h, in cciss_scsi_do_simple_cmd() argument
941 cciss_map_one(h->pdev, c, (unsigned char *) buf, 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
962 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
964 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
968 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
975 dev_info(&h->pdev->dev, "UNDERRUN\n"); in cciss_scsi_interpret_error()
978 dev_warn(&h->pdev->dev, "%p has" in cciss_scsi_interpret_error()
985 dev_warn(&h->pdev->dev, 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()
1006 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
1010 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
1014 dev_warn(&h->pdev->dev, "%p timedout\n", c); in cciss_scsi_interpret_error()
1017 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
1021 dev_warn(&h->pdev->dev, in cciss_scsi_interpret_error()
1028 cciss_scsi_do_inquiry(ctlr_info_t *h, unsigned char *scsi3addr, in cciss_scsi_do_inquiry() argument
1038 spin_lock_irqsave(&h->lock, flags); in cciss_scsi_do_inquiry()
1039 c = scsi_cmd_alloc(h); in cciss_scsi_do_inquiry()
1040 spin_unlock_irqrestore(&h->lock, flags); 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()
1065 spin_lock_irqsave(&h->lock, flags); in cciss_scsi_do_inquiry()
1066 scsi_cmd_free(h, c); in cciss_scsi_do_inquiry()
1067 spin_unlock_irqrestore(&h->lock, flags); in cciss_scsi_do_inquiry()
1072 static int cciss_scsi_get_device_id(ctlr_info_t *h, unsigned char *scsi3addr, in cciss_scsi_get_device_id() argument
1083 rc = cciss_scsi_do_inquiry(h, scsi3addr, 0x83, buf, 64); in cciss_scsi_get_device_id()
1091 cciss_scsi_do_report_phys_luns(ctlr_info_t *h, in cciss_scsi_do_report_phys_luns() argument
1101 spin_lock_irqsave(&h->lock, flags); in cciss_scsi_do_report_phys_luns()
1102 c = scsi_cmd_alloc(h); in cciss_scsi_do_report_phys_luns()
1103 spin_unlock_irqrestore(&h->lock, flags); in cciss_scsi_do_report_phys_luns()
1123 rc = cciss_scsi_do_simple_cmd(h, c, scsi3addr, in cciss_scsi_do_report_phys_luns()
1133 cciss_scsi_interpret_error(h, c); in cciss_scsi_do_report_phys_luns()
1136 spin_lock_irqsave(&h->lock, flags); in cciss_scsi_do_report_phys_luns()
1137 scsi_cmd_free(h, c); in cciss_scsi_do_report_phys_luns()
1138 spin_unlock_irqrestore(&h->lock, flags); in cciss_scsi_do_report_phys_luns()
1143 cciss_update_non_disk_devices(ctlr_info_t *h, int hostno) in cciss_update_non_disk_devices() argument
1192 if (cciss_scsi_do_report_phys_luns(h, ld_buff, reportlunsize) == 0) { in cciss_update_non_disk_devices()
1216 if (cciss_scsi_do_inquiry(h, scsi3addr, 0, inq_buff, in cciss_update_non_disk_devices()
1234 cciss_scsi_get_device_id(h, scsi3addr, in cciss_update_non_disk_devices()
1261 "too many devices.\n", h->ctlr, in cciss_update_non_disk_devices()
1273 adjust_cciss_scsi_table(h, hostno, currentsd, ncurrent); in cciss_update_non_disk_devices()
1292 cciss_scsi_user_command(ctlr_info_t *h, int hostno, char *buffer, int length) in cciss_scsi_user_command() argument
1297 cciss_update_non_disk_devices(h, hostno); in cciss_scsi_user_command()
1308 ctlr_info_t *h = (ctlr_info_t *) sh->hostdata[0]; in cciss_scsi_write_info() local
1309 if (h == NULL) /* This really shouldn't ever happen. */ in cciss_scsi_write_info()
1312 return cciss_scsi_user_command(h, sh->host_no, in cciss_scsi_write_info()
1320 ctlr_info_t *h = (ctlr_info_t *) sh->hostdata[0]; in cciss_scsi_show_info() local
1323 if (h == NULL) /* This really shouldn't ever happen. */ in cciss_scsi_show_info()
1327 h->ctlr, sh->host_no); in cciss_scsi_show_info()
1337 for (i = 0; i < ccissscsi[h->ctlr].ndevices; i++) { in cciss_scsi_show_info()
1339 &ccissscsi[h->ctlr].dev[i]; in cciss_scsi_show_info()
1356 static void cciss_scatter_gather(ctlr_info_t *h, CommandList_struct *c, in cciss_scatter_gather() argument
1363 struct cciss_scsi_adapter_data_t *sa = h->scsi_ctlr; in cciss_scatter_gather()
1366 BUG_ON(scsi_sg_count(cmd) > h->maxsgentries); in cciss_scatter_gather()
1374 if (sg_index + 1 == h->max_cmd_sgentries && in cciss_scatter_gather()
1391 cciss_map_sg_chain_block(h, c, in cciss_scatter_gather()
1393 (request_nsgs - (h->max_cmd_sgentries - 1)) * in cciss_scatter_gather()
1397 if (request_nsgs > h->maxSG) in cciss_scatter_gather()
1398 h->maxSG = request_nsgs; in cciss_scatter_gather()
1400 if (request_nsgs > h->max_cmd_sgentries) in cciss_scatter_gather()
1401 c->Header.SGList = h->max_cmd_sgentries; in cciss_scatter_gather()
1411 ctlr_info_t *h; in cciss_scsi_queue_command_lck() local
1419 h = (ctlr_info_t *) cmd->device->host->hostdata[0]; in cciss_scsi_queue_command_lck()
1421 rc = lookup_scsi3addr(h, cmd->device->channel, cmd->device->id, in cciss_scsi_queue_command_lck()
1436 spin_lock_irqsave(&h->lock, flags); in cciss_scsi_queue_command_lck()
1437 c = scsi_cmd_alloc(h); in cciss_scsi_queue_command_lck()
1438 spin_unlock_irqrestore(&h->lock, flags); in cciss_scsi_queue_command_lck()
1440 dev_warn(&h->pdev->dev, "scsi_cmd_alloc returned NULL!\n"); in cciss_scsi_queue_command_lck()
1496 dev_warn(&h->pdev->dev, "unknown data direction: %d\n", 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()
1509 static void cciss_unregister_scsi(ctlr_info_t *h) in DEF_SCSI_QCMD()
1517 spin_lock_irqsave(&h->lock, flags); in DEF_SCSI_QCMD()
1518 sa = h->scsi_ctlr; in DEF_SCSI_QCMD()
1523 spin_unlock_irqrestore(&h->lock, flags); in DEF_SCSI_QCMD()
1526 spin_lock_irqsave(&h->lock, flags); in DEF_SCSI_QCMD()
1532 spin_unlock_irqrestore(&h->lock, flags); in DEF_SCSI_QCMD()
1533 scsi_cmd_stack_free(h); in DEF_SCSI_QCMD()
1537 static int cciss_engage_scsi(ctlr_info_t *h) in cciss_engage_scsi() argument
1543 spin_lock_irqsave(&h->lock, flags); in cciss_engage_scsi()
1544 sa = h->scsi_ctlr; in cciss_engage_scsi()
1548 dev_info(&h->pdev->dev, "SCSI subsystem already engaged.\n"); in cciss_engage_scsi()
1549 spin_unlock_irqrestore(&h->lock, flags); in cciss_engage_scsi()
1553 spin_unlock_irqrestore(&h->lock, flags); in cciss_engage_scsi()
1554 cciss_update_non_disk_devices(h, -1); in cciss_engage_scsi()
1555 cciss_scsi_detect(h); in cciss_engage_scsi()
1560 cciss_seq_tape_report(struct seq_file *seq, ctlr_info_t *h) in cciss_seq_tape_report() argument
1564 CPQ_TAPE_LOCK(h, flags); in cciss_seq_tape_report()
1567 ccissscsi[h->ctlr].ndevices); in cciss_seq_tape_report()
1568 CPQ_TAPE_UNLOCK(h, flags); in cciss_seq_tape_report()
1571 static int wait_for_device_to_become_ready(ctlr_info_t *h, in wait_for_device_to_become_ready() argument
1579 c = cmd_alloc(h); in wait_for_device_to_become_ready()
1581 dev_warn(&h->pdev->dev, "out of memory in " 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()
1620 check_for_unit_attention(h, c); in wait_for_device_to_become_ready()
1626 dev_warn(&h->pdev->dev, "Waiting %d secs " in wait_for_device_to_become_ready()
1633 dev_warn(&h->pdev->dev, "giving up on device.\n"); in wait_for_device_to_become_ready()
1635 dev_warn(&h->pdev->dev, "device is ready.\n"); in wait_for_device_to_become_ready()
1637 cmd_free(h, c); in wait_for_device_to_become_ready()
1657 ctlr_info_t *h; in cciss_eh_device_reset_handler() local
1660 h = (ctlr_info_t *) scsicmd->device->host->hostdata[0]; in cciss_eh_device_reset_handler()
1661 if (h == NULL) /* paranoia */ in cciss_eh_device_reset_handler()
1663 dev_warn(&h->pdev->dev, "resetting tape drive or medium changer.\n"); in cciss_eh_device_reset_handler()
1670 rc = sendcmd_withirq(h, CCISS_RESET_MSG, NULL, 0, 0, lunaddr, in cciss_eh_device_reset_handler()
1672 if (rc == 0 && wait_for_device_to_become_ready(h, lunaddr) == 0) in cciss_eh_device_reset_handler()
1674 dev_warn(&h->pdev->dev, "resetting device failed.\n"); in cciss_eh_device_reset_handler()
1683 ctlr_info_t *h; in cciss_eh_abort_handler() local
1686 h = (ctlr_info_t *) scsicmd->device->host->hostdata[0]; in cciss_eh_abort_handler()
1687 if (h == NULL) /* paranoia */ in cciss_eh_abort_handler()
1689 dev_warn(&h->pdev->dev, "aborting tardy SCSI cmd\n"); in cciss_eh_abort_handler()
1696 rc = sendcmd_withirq(h, CCISS_ABORT_MSG, &cmd_to_abort->Header.Tag, in cciss_eh_abort_handler()
1709 #define cciss_engage_scsi(h) argument