Commit f842b64e authored by Boaz Harrosh's avatar Boaz Harrosh Committed by James Bottomley

[SCSI] gdth: Move members from SCp to gdth_cmndinfo, stage 2

  - Cleanup the rest of the scsi_cmnd->SCp members and move them
    to gdth_cmndinfo:
    SCp.this_residual 	 => priority
    SCp.buffers_residual => timeout
    SCp.Status 		 => status and dma_dir
    SCp.Message 	 => info
    SCp.have_data_in 	 => volatile wait_for_completion
    SCp.sent_command 	 => OpCode
    SCp.phase 		 => phase

  - Two more members will be naturally removed in the !use_sg cleanup

  TODO: What is the meaning of gdth_cmndinfo.phase? (rhetorically)

Signed-off-by Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 3058d5de
This diff is collapsed.
...@@ -923,6 +923,14 @@ typedef struct { ...@@ -923,6 +923,14 @@ typedef struct {
int index; int index;
int internal_command; /* don't call scsi_done */ int internal_command; /* don't call scsi_done */
dma_addr_t sense_paddr; /* sense dma-addr */ dma_addr_t sense_paddr; /* sense dma-addr */
unchar priority;
int timeout;
volatile int wait_for_completion;
ushort status;
ulong32 info;
enum dma_data_direction dma_dir;
int phase; /* ???? */
int OpCode;
} cmndinfo[GDTH_MAXCMDS]; /* index==0 is free */ } cmndinfo[GDTH_MAXCMDS]; /* index==0 is free */
unchar bus_cnt; /* SCSI bus count */ unchar bus_cnt; /* SCSI bus count */
unchar tid_cnt; /* Target ID count */ unchar tid_cnt; /* Target ID count */
......
...@@ -728,20 +728,22 @@ static void gdth_wait_completion(gdth_ha_str *ha, int busnum, int id) ...@@ -728,20 +728,22 @@ static void gdth_wait_completion(gdth_ha_str *ha, int busnum, int id)
ulong flags; ulong flags;
int i; int i;
Scsi_Cmnd *scp; Scsi_Cmnd *scp;
struct gdth_cmndinfo *cmndinfo;
unchar b, t; unchar b, t;
spin_lock_irqsave(&ha->smp_lock, flags); spin_lock_irqsave(&ha->smp_lock, flags);
for (i = 0; i < GDTH_MAXCMDS; ++i) { for (i = 0; i < GDTH_MAXCMDS; ++i) {
scp = ha->cmd_tab[i].cmnd; scp = ha->cmd_tab[i].cmnd;
cmndinfo = gdth_cmnd_priv(scp);
b = scp->device->channel; b = scp->device->channel;
t = scp->device->id; t = scp->device->id;
if (!SPECIAL_SCP(scp) && t == (unchar)id && if (!SPECIAL_SCP(scp) && t == (unchar)id &&
b == (unchar)busnum) { b == (unchar)busnum) {
scp->SCp.have_data_in = 0; cmndinfo->wait_for_completion = 0;
spin_unlock_irqrestore(&ha->smp_lock, flags); spin_unlock_irqrestore(&ha->smp_lock, flags);
while (!scp->SCp.have_data_in) while (!cmndinfo->wait_for_completion)
barrier(); barrier();
spin_lock_irqsave(&ha->smp_lock, flags); spin_lock_irqsave(&ha->smp_lock, flags);
} }
...@@ -764,7 +766,7 @@ static void gdth_stop_timeout(gdth_ha_str *ha, int busnum, int id) ...@@ -764,7 +766,7 @@ static void gdth_stop_timeout(gdth_ha_str *ha, int busnum, int id)
t = scp->device->id; t = scp->device->id;
if (t == (unchar)id && b == (unchar)busnum) { if (t == (unchar)id && b == (unchar)busnum) {
TRACE2(("gdth_stop_timeout(): update_timeout()\n")); TRACE2(("gdth_stop_timeout(): update_timeout()\n"));
scp->SCp.buffers_residual = gdth_update_timeout(scp, 0); cmndinfo->timeout = gdth_update_timeout(scp, 0);
} }
} }
} }
...@@ -786,7 +788,7 @@ static void gdth_start_timeout(gdth_ha_str *ha, int busnum, int id) ...@@ -786,7 +788,7 @@ static void gdth_start_timeout(gdth_ha_str *ha, int busnum, int id)
t = scp->device->id; t = scp->device->id;
if (t == (unchar)id && b == (unchar)busnum) { if (t == (unchar)id && b == (unchar)busnum) {
TRACE2(("gdth_start_timeout(): update_timeout()\n")); TRACE2(("gdth_start_timeout(): update_timeout()\n"));
gdth_update_timeout(scp, scp->SCp.buffers_residual); gdth_update_timeout(scp, cmndinfo->timeout);
} }
} }
} }
......
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