atp870u: Remove ugly gotos #2
Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Reviewed-by: Hannes Reinicke <hare@suse.de> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
78614ecdda
commit
468b896815
@@ -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)
|
|||||||
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;
|
||||||
}
|
if (dev->quhd[c] == dev->quend[c]) {
|
||||||
dev->last_cmd[c] = 0xff;
|
dev->in_snd[c] = 0;
|
||||||
if (dev->quhd[c] == dev->quend[c]) {
|
return;
|
||||||
dev->in_snd[c] = 0;
|
}
|
||||||
return ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) {
|
if (!workreq) {
|
||||||
dev->in_snd[c] = 0;
|
if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) {
|
||||||
return ;
|
dev->in_snd[c] = 0;
|
||||||
}
|
return;
|
||||||
dev->working[c]++;
|
}
|
||||||
j = dev->quhd[c];
|
dev->working[c]++;
|
||||||
dev->quhd[c]++;
|
j = dev->quhd[c];
|
||||||
if (dev->quhd[c] >= qcnt) {
|
dev->quhd[c]++;
|
||||||
dev->quhd[c] = 0;
|
if (dev->quhd[c] >= qcnt)
|
||||||
}
|
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->quhd[c] = j;
|
||||||
|
dev->working[c]--;
|
||||||
|
dev->in_snd[c] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
dev->id[c][scmd_id(workreq)].curr_req = workreq;
|
dev->id[c][scmd_id(workreq)].curr_req = workreq;
|
||||||
dev->last_cmd[c] = scmd_id(workreq);
|
dev->last_cmd[c] = scmd_id(workreq);
|
||||||
goto cmd_subp;
|
|
||||||
}
|
|
||||||
dev->quhd[c] = j;
|
|
||||||
dev->working[c]--;
|
|
||||||
dev->in_snd[c] = 0;
|
|
||||||
return;
|
|
||||||
cmd_subp:
|
|
||||||
if ((inb(dev->ioport[c] + 0x1f) & 0xb0) != 0) {
|
|
||||||
goto abortsnd;
|
|
||||||
}
|
}
|
||||||
if (inb(dev->ioport[c] + 0x1c) == 0) {
|
if ((inb(dev->ioport[c] + 0x1f) & 0xb0) != 0 || inb(dev->ioport[c] + 0x1c) != 0) {
|
||||||
goto oktosend;
|
|
||||||
}
|
|
||||||
abortsnd:
|
|
||||||
#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");
|
||||||
|
|||||||
Reference in New Issue
Block a user