• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/scsi/

Lines Matching refs:ent

158 		printk(KERN_INFO PFX "esp%d: ent[%d] %s ",
346 static dma_addr_t esp_cur_dma_addr(struct esp_cmd_entry *ent,
351 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
352 return ent->sense_dma +
353 (ent->sense_ptr - cmd->sense_buffer);
361 static unsigned int esp_cur_dma_len(struct esp_cmd_entry *ent,
366 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
368 (ent->sense_ptr - cmd->sense_buffer);
373 static void esp_advance_dma(struct esp *esp, struct esp_cmd_entry *ent,
378 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
379 ent->sense_ptr += len;
412 static void esp_save_pointers(struct esp *esp, struct esp_cmd_entry *ent)
414 struct scsi_cmnd *cmd = ent->cmd;
417 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
418 ent->saved_sense_ptr = ent->sense_ptr;
421 ent->saved_cur_residue = spriv->cur_residue;
422 ent->saved_cur_sg = spriv->cur_sg;
423 ent->saved_tot_residue = spriv->tot_residue;
426 static void esp_restore_pointers(struct esp *esp, struct esp_cmd_entry *ent)
428 struct scsi_cmnd *cmd = ent->cmd;
431 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
432 ent->sense_ptr = ent->saved_sense_ptr;
435 spriv->cur_residue = ent->saved_cur_residue;
436 spriv->cur_sg = ent->saved_cur_sg;
437 spriv->tot_residue = ent->saved_tot_residue;
530 static int esp_alloc_lun_tag(struct esp_cmd_entry *ent,
533 if (!ent->tag[0]) {
557 lp->non_tagged_cmd = ent;
567 BUG_ON(lp->tagged_cmds[ent->tag[1]]);
569 lp->tagged_cmds[ent->tag[1]] = ent;
575 static void esp_free_lun_tag(struct esp_cmd_entry *ent,
578 if (ent->tag[0]) {
579 BUG_ON(lp->tagged_cmds[ent->tag[1]] != ent);
580 lp->tagged_cmds[ent->tag[1]] = NULL;
583 BUG_ON(lp->non_tagged_cmd != ent);
595 static void esp_autosense(struct esp *esp, struct esp_cmd_entry *ent)
597 struct scsi_cmnd *cmd = ent->cmd;
606 if (!ent->sense_ptr) {
611 ent->sense_ptr = cmd->sense_buffer;
612 ent->sense_dma = esp->ops->map_single(esp,
613 ent->sense_ptr,
617 ent->saved_sense_ptr = ent->sense_ptr;
619 esp->active_cmd = ent;
653 struct esp_cmd_entry *ent;
655 list_for_each_entry(ent, &esp->queued_cmds, list) {
656 struct scsi_cmnd *cmd = ent->cmd;
660 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
661 ent->tag[0] = 0;
662 ent->tag[1] = 0;
663 return ent;
666 if (!scsi_populate_tag_msg(cmd, &ent->tag[0])) {
667 ent->tag[0] = 0;
668 ent->tag[1] = 0;
671 if (esp_alloc_lun_tag(ent, lp) < 0)
674 return ent;
686 struct esp_cmd_entry *ent;
695 ent = find_and_prep_issuable_command(esp);
696 if (!ent)
699 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
700 esp_autosense(esp, ent);
704 cmd = ent->cmd;
711 list_del(&ent->list);
712 list_add(&ent->list, &esp->active_cmds);
714 esp->active_cmd = ent;
717 esp_save_pointers(esp, ent);
770 if (lp && (tp->flags & ESP_TGT_DISCONNECT) && ent->tag[0])
775 if (ent->tag[0] && esp->rev == ESP100) {
784 if (ent->tag[0]) {
785 *p++ = ent->tag[0];
786 *p++ = ent->tag[1];
799 if (ent->tag[0]) {
803 esp->msg_out[0] = ent->tag[0];
804 esp->msg_out[1] = ent->tag[1];
849 static void esp_put_ent(struct esp *esp, struct esp_cmd_entry *ent)
851 list_add(&ent->list, &esp->esp_cmd_pool);
854 static void esp_cmd_is_done(struct esp *esp, struct esp_cmd_entry *ent,
863 esp_free_lun_tag(ent, dev->hostdata);
866 if (ent->eh_done) {
867 complete(ent->eh_done);
868 ent->eh_done = NULL;
871 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
872 esp->ops->unmap_single(esp, ent->sense_dma,
874 ent->sense_ptr = NULL;
885 ent->flags &= ~ESP_CMD_FLAG_AUTOSENSE;
899 list_del(&ent->list);
900 esp_put_ent(esp, ent);
911 static void esp_event_queue_full(struct esp *esp, struct esp_cmd_entry *ent)
913 struct scsi_device *dev = ent->cmd->device;
924 struct esp_cmd_entry *ent;
926 ent = esp_get_ent(esp);
927 if (!ent)
930 ent->cmd = cmd;
937 list_add_tail(&ent->list, &esp->queued_cmds);
1013 struct esp_cmd_entry *ent;
1091 ent = lp->tagged_cmds[esp->command_block[1]];
1092 if (!ent) {
1099 return ent;
1104 struct esp_cmd_entry *ent;
1168 ent = lp->non_tagged_cmd;
1169 if (!ent) {
1170 ent = esp_reconnect_with_tag(esp, lp);
1171 if (!ent)
1175 esp->active_cmd = ent;
1177 if (ent->flags & ESP_CMD_FLAG_ABORT) {
1184 esp_restore_pointers(esp, ent);
1195 struct esp_cmd_entry *ent;
1205 ent = esp->active_cmd;
1206 cmd = ent->cmd;
1213 esp_cmd_is_done(esp, ent, cmd, (DID_ERROR << 16));
1226 if (!(ent->flags & ESP_CMD_FLAG_AUTOSENSE)) {
1228 esp_free_lun_tag(ent, cmd->device->hostdata);
1234 esp->ops->unmap_single(esp, ent->sense_dma,
1237 ent->sense_ptr = NULL;
1243 list_del(&ent->list);
1244 list_add(&ent->list, &esp->queued_cmds);
1263 esp_cmd_is_done(esp, ent, cmd, (DID_BAD_TARGET << 16));
1296 static int esp_data_bytes_sent(struct esp *esp, struct esp_cmd_entry *ent,
1316 if (!(ent->flags & ESP_CMD_FLAG_WRITE))
1348 if (!(ent->flags & ESP_CMD_FLAG_WRITE))
1399 struct esp_cmd_entry *ent = esp->active_cmd;
1400 struct scsi_cmnd *cmd = ent->cmd;
1540 struct esp_cmd_entry *ent = esp->active_cmd;
1541 struct scsi_cmnd *cmd = ent->cmd;
1587 struct esp_cmd_entry *ent;
1595 ent = esp->active_cmd;
1596 spriv = ESP_CMD_PRIV(ent->cmd);
1617 struct esp_cmd_entry *ent = esp->active_cmd;
1619 ent->message = msg0;
1685 struct esp_cmd_entry *ent = esp->active_cmd;
1686 struct scsi_cmnd *cmd = ent->cmd;
1687 dma_addr_t dma_addr = esp_cur_dma_addr(ent, cmd);
1688 unsigned int dma_len = esp_cur_dma_len(ent, cmd);
1694 ent->flags |= ESP_CMD_FLAG_WRITE;
1696 ent->flags &= ~ESP_CMD_FLAG_WRITE;
1711 (unsigned long long)esp_cur_dma_addr(ent, cmd),
1712 esp_cur_dma_len(ent, cmd));
1727 struct esp_cmd_entry *ent = esp->active_cmd;
1728 struct scsi_cmnd *cmd = ent->cmd;
1737 if (ent->flags & ESP_CMD_FLAG_WRITE) {
1752 bytes_sent = esp_data_bytes_sent(esp, ent, cmd);
1755 ent->flags, bytes_sent);
1762 esp_advance_dma(esp, ent, cmd, bytes_sent);
1768 struct esp_cmd_entry *ent = esp->active_cmd;
1771 ent->status = esp_read8(ESP_FDATA);
1772 ent->message = esp_read8(ESP_FDATA);
1775 ent->status = esp_read8(ESP_FDATA);
1776 ent->message = 0xff;
1781 if (ent->message != COMMAND_COMPLETE) {
1783 ent->message);
1793 struct esp_cmd_entry *ent = esp->active_cmd;
1794 struct scsi_cmnd *cmd = ent->cmd;
1796 if (ent->message == COMMAND_COMPLETE ||
1797 ent->message == DISCONNECT)
1800 if (ent->message == COMMAND_COMPLETE) {
1803 ent->status, ent->message);
1804 if (ent->status == SAM_STAT_TASK_SET_FULL)
1805 esp_event_queue_full(esp, ent);
1807 if (ent->status == SAM_STAT_CHECK_CONDITION &&
1808 !(ent->flags & ESP_CMD_FLAG_AUTOSENSE)) {
1809 ent->flags |= ESP_CMD_FLAG_AUTOSENSE;
1810 esp_autosense(esp, ent);
1812 esp_cmd_is_done(esp, ent, cmd,
1813 compose_result(ent->status,
1814 ent->message,
1817 } else if (ent->message == DISCONNECT) {
1821 ent->tag[0], ent->tag[1]);
1827 ent->message);
1967 static void esp_reset_cleanup_one(struct esp *esp, struct esp_cmd_entry *ent)
1969 struct scsi_cmnd *cmd = ent->cmd;
1972 esp_free_lun_tag(ent, cmd->device->hostdata);
1975 if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) {
1976 esp->ops->unmap_single(esp, ent->sense_dma,
1978 ent->sense_ptr = NULL;
1982 list_del(&ent->list);
1983 esp_put_ent(esp, ent);
1996 struct esp_cmd_entry *ent, *tmp;
1999 list_for_each_entry_safe(ent, tmp, &esp->queued_cmds, list) {
2000 struct scsi_cmnd *cmd = ent->cmd;
2002 list_del(&ent->list);
2005 esp_put_ent(esp, ent);
2008 list_for_each_entry_safe(ent, tmp, &esp->active_cmds, list) {
2009 if (ent == esp->active_cmd)
2011 esp_reset_cleanup_one(esp, ent);
2439 struct esp_cmd_entry *ent, *tmp;
2446 ent = esp->active_cmd;
2447 if (ent)
2449 esp->host->unique_id, ent->cmd, ent->cmd->cmnd[0]);
2450 list_for_each_entry(ent, &esp->queued_cmds, list) {
2452 esp->host->unique_id, ent->cmd, ent->cmd->cmnd[0]);
2454 list_for_each_entry(ent, &esp->active_cmds, list) {
2456 esp->host->unique_id, ent->cmd, ent->cmd->cmnd[0]);
2463 ent = NULL;
2466 ent = tmp;
2471 if (ent) {
2475 list_del(&ent->list);
2480 esp_put_ent(esp, ent);
2487 ent = esp->active_cmd;
2488 if (ent && ent->cmd == cmd) {
2501 ent->eh_done = &eh_done;
2528 ent->eh_done = NULL;