Commit 468b8968 authored by Ondrej Zary's avatar Ondrej Zary Committed by Martin K. Petersen

atp870u: Remove ugly gotos #2

Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
Reviewed-by: default avatarHannes Reinicke <hare@suse.de>
Acked-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 78614ecd
...@@ -617,7 +617,7 @@ static DEF_SCSI_QCMD(atp870u_queuecommand) ...@@ -617,7 +617,7 @@ static DEF_SCSI_QCMD(atp870u_queuecommand)
*/ */
static void send_s870(struct atp_unit *dev,unsigned char c) static void send_s870(struct atp_unit *dev,unsigned char c)
{ {
struct scsi_cmnd *workreq; struct scsi_cmnd *workreq = NULL;
unsigned int i;//,k; unsigned int i;//,k;
unsigned char j, target_id; unsigned char j, target_id;
unsigned char *prd; unsigned char *prd;
...@@ -638,50 +638,42 @@ static void send_s870(struct atp_unit *dev,unsigned char c) ...@@ -638,50 +638,42 @@ static void send_s870(struct atp_unit *dev,unsigned char c)
if ((dev->last_cmd[c] != 0xff) && ((dev->last_cmd[c] & 0x40) != 0)) { if ((dev->last_cmd[c] != 0xff) && ((dev->last_cmd[c] & 0x40) != 0)) {
dev->last_cmd[c] &= 0x0f; dev->last_cmd[c] &= 0x0f;
workreq = dev->id[c][dev->last_cmd[c]].curr_req; workreq = dev->id[c][dev->last_cmd[c]].curr_req;
if (workreq != NULL) { /* check NULL pointer */ if (!workreq) {
goto cmd_subp;
}
dev->last_cmd[c] = 0xff; dev->last_cmd[c] = 0xff;
if (dev->quhd[c] == dev->quend[c]) { if (dev->quhd[c] == dev->quend[c]) {
dev->in_snd[c] = 0; dev->in_snd[c] = 0;
return ; return;
}
} }
} }
if (!workreq) {
if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) { if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) {
dev->in_snd[c] = 0; dev->in_snd[c] = 0;
return ; return;
} }
dev->working[c]++; dev->working[c]++;
j = dev->quhd[c]; j = dev->quhd[c];
dev->quhd[c]++; dev->quhd[c]++;
if (dev->quhd[c] >= qcnt) { if (dev->quhd[c] >= qcnt)
dev->quhd[c] = 0; dev->quhd[c] = 0;
}
workreq = dev->quereq[c][dev->quhd[c]]; workreq = dev->quereq[c][dev->quhd[c]];
if (dev->id[c][scmd_id(workreq)].curr_req == NULL) { if (dev->id[c][scmd_id(workreq)].curr_req != NULL) {
dev->id[c][scmd_id(workreq)].curr_req = workreq;
dev->last_cmd[c] = scmd_id(workreq);
goto cmd_subp;
}
dev->quhd[c] = j; dev->quhd[c] = j;
dev->working[c]--; dev->working[c]--;
dev->in_snd[c] = 0; dev->in_snd[c] = 0;
return; return;
cmd_subp:
if ((inb(dev->ioport[c] + 0x1f) & 0xb0) != 0) {
goto abortsnd;
} }
if (inb(dev->ioport[c] + 0x1c) == 0) { dev->id[c][scmd_id(workreq)].curr_req = workreq;
goto oktosend; dev->last_cmd[c] = scmd_id(workreq);
} }
abortsnd: if ((inb(dev->ioport[c] + 0x1f) & 0xb0) != 0 || inb(dev->ioport[c] + 0x1c) != 0) {
#ifdef ED_DBGP #ifdef ED_DBGP
printk("Abort to Send\n"); printk("Abort to Send\n");
#endif #endif
dev->last_cmd[c] |= 0x40; dev->last_cmd[c] |= 0x40;
dev->in_snd[c] = 0; dev->in_snd[c] = 0;
return; return;
oktosend: }
#ifdef ED_DBGP #ifdef ED_DBGP
printk("OK to Send\n"); printk("OK to Send\n");
scmd_printk(KERN_DEBUG, workreq, "CDB"); scmd_printk(KERN_DEBUG, workreq, "CDB");
......
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