Commit 201c37d7 authored by Finn Thain's avatar Finn Thain Committed by Martin K. Petersen

scsi: esp_scsi: Clean up control flow and dead code

This patch improves readability. There are no functional changes.

Since this touches on a questionable ESP_INTR_DC conditional, add some
commentary to help others who may (as I did) find themselves chasing an
"Invalid Command" error after the device flags this condition.

This cleanup also eliminates a warning from "make W=1":
drivers/scsi/esp_scsi.c: In function 'esp_finish_select':
drivers/scsi/esp_scsi.c:1233:5: warning: variable 'orig_select_state' set but not used [-Wunused-but-set-variable]
  u8 orig_select_state;
Tested-by: default avatarStan Johnson <userm57@yahoo.com>
Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 7640d91d
...@@ -597,13 +597,11 @@ static int esp_alloc_lun_tag(struct esp_cmd_entry *ent, ...@@ -597,13 +597,11 @@ static int esp_alloc_lun_tag(struct esp_cmd_entry *ent,
lp->non_tagged_cmd = ent; lp->non_tagged_cmd = ent;
return 0; return 0;
} else { }
/* Tagged command, see if blocked by a
* non-tagged one. /* Tagged command. Check that it isn't blocked by a non-tagged one. */
*/
if (lp->non_tagged_cmd || lp->hold) if (lp->non_tagged_cmd || lp->hold)
return -EBUSY; return -EBUSY;
}
BUG_ON(lp->tagged_cmds[ent->orig_tag[1]]); BUG_ON(lp->tagged_cmds[ent->orig_tag[1]]);
...@@ -1210,12 +1208,6 @@ static int esp_reconnect(struct esp *esp) ...@@ -1210,12 +1208,6 @@ static int esp_reconnect(struct esp *esp)
esp->active_cmd = ent; esp->active_cmd = ent;
if (ent->flags & ESP_CMD_FLAG_ABORT) {
esp->msg_out[0] = ABORT_TASK_SET;
esp->msg_out_len = 1;
scsi_esp_cmd(esp, ESP_CMD_SATN);
}
esp_event(esp, ESP_EVENT_CHECK_PHASE); esp_event(esp, ESP_EVENT_CHECK_PHASE);
esp_restore_pointers(esp, ent); esp_restore_pointers(esp, ent);
esp->flags |= ESP_FLAG_QUICKIRQ_CHECK; esp->flags |= ESP_FLAG_QUICKIRQ_CHECK;
...@@ -1230,9 +1222,6 @@ static int esp_finish_select(struct esp *esp) ...@@ -1230,9 +1222,6 @@ static int esp_finish_select(struct esp *esp)
{ {
struct esp_cmd_entry *ent; struct esp_cmd_entry *ent;
struct scsi_cmnd *cmd; struct scsi_cmnd *cmd;
u8 orig_select_state;
orig_select_state = esp->select_state;
/* No longer selecting. */ /* No longer selecting. */
esp->select_state = ESP_SELECT_NONE; esp->select_state = ESP_SELECT_NONE;
...@@ -1745,7 +1734,6 @@ static int esp_process_event(struct esp *esp) ...@@ -1745,7 +1734,6 @@ static int esp_process_event(struct esp *esp)
return 0; return 0;
} }
goto again; goto again;
break;
case ESP_EVENT_DATA_IN: case ESP_EVENT_DATA_IN:
write = 1; write = 1;
...@@ -1956,12 +1944,14 @@ static int esp_process_event(struct esp *esp) ...@@ -1956,12 +1944,14 @@ static int esp_process_event(struct esp *esp)
} else { } else {
if (esp->msg_out_len > 1) if (esp->msg_out_len > 1)
esp->ops->dma_invalidate(esp); esp->ops->dma_invalidate(esp);
}
if (!(esp->ireg & ESP_INTR_DC)) { /* XXX if the chip went into disconnected mode,
if (esp->rev != FASHME) * we can't run the phase state machine anyway.
*/
if (!(esp->ireg & ESP_INTR_DC))
scsi_esp_cmd(esp, ESP_CMD_NULL); scsi_esp_cmd(esp, ESP_CMD_NULL);
} }
esp_event(esp, ESP_EVENT_CHECK_PHASE); esp_event(esp, ESP_EVENT_CHECK_PHASE);
goto again; goto again;
case ESP_EVENT_MSGIN: case ESP_EVENT_MSGIN:
...@@ -2022,7 +2012,6 @@ static int esp_process_event(struct esp *esp) ...@@ -2022,7 +2012,6 @@ static int esp_process_event(struct esp *esp)
} }
esp_schedule_reset(esp); esp_schedule_reset(esp);
return 0; return 0;
break;
case ESP_EVENT_RESET: case ESP_EVENT_RESET:
scsi_esp_cmd(esp, ESP_CMD_RS); scsi_esp_cmd(esp, ESP_CMD_RS);
...@@ -2033,7 +2022,6 @@ static int esp_process_event(struct esp *esp) ...@@ -2033,7 +2022,6 @@ static int esp_process_event(struct esp *esp)
"Unexpected event %x, resetting\n", esp->event); "Unexpected event %x, resetting\n", esp->event);
esp_schedule_reset(esp); esp_schedule_reset(esp);
return 0; return 0;
break;
} }
return 1; return 1;
} }
...@@ -2170,14 +2158,14 @@ static void __esp_interrupt(struct esp *esp) ...@@ -2170,14 +2158,14 @@ static void __esp_interrupt(struct esp *esp)
esp_schedule_reset(esp); esp_schedule_reset(esp);
} else { } else {
if (!(esp->ireg & ESP_INTR_RSEL)) { if (esp->ireg & ESP_INTR_RSEL) {
/* Some combination of FDONE, BSERV, DC. */
if (esp->select_state != ESP_SELECT_NONE)
intr_done = esp_finish_select(esp);
} else if (esp->ireg & ESP_INTR_RSEL) {
if (esp->active_cmd) if (esp->active_cmd)
(void) esp_finish_select(esp); (void) esp_finish_select(esp);
intr_done = esp_reconnect(esp); intr_done = esp_reconnect(esp);
} else {
/* Some combination of FDONE, BSERV, DC. */
if (esp->select_state != ESP_SELECT_NONE)
intr_done = esp_finish_select(esp);
} }
} }
while (!intr_done) while (!intr_done)
......
...@@ -281,7 +281,6 @@ struct esp_cmd_entry { ...@@ -281,7 +281,6 @@ struct esp_cmd_entry {
u8 flags; u8 flags;
#define ESP_CMD_FLAG_WRITE 0x01 /* DMA is a write */ #define ESP_CMD_FLAG_WRITE 0x01 /* DMA is a write */
#define ESP_CMD_FLAG_ABORT 0x02 /* being aborted */
#define ESP_CMD_FLAG_AUTOSENSE 0x04 /* Doing automatic REQUEST_SENSE */ #define ESP_CMD_FLAG_AUTOSENSE 0x04 /* Doing automatic REQUEST_SENSE */
#define ESP_CMD_FLAG_RESIDUAL 0x08 /* AM53c974 BLAST residual */ #define ESP_CMD_FLAG_RESIDUAL 0x08 /* AM53c974 BLAST residual */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment