mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
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:
parent
78614ecdda
commit
468b896815
1 changed files with 30 additions and 38 deletions
|
@ -617,7 +617,7 @@ static DEF_SCSI_QCMD(atp870u_queuecommand)
|
|||
*/
|
||||
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 char j, target_id;
|
||||
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)) {
|
||||
dev->last_cmd[c] &= 0x0f;
|
||||
workreq = dev->id[c][dev->last_cmd[c]].curr_req;
|
||||
if (workreq != NULL) { /* check NULL pointer */
|
||||
goto cmd_subp;
|
||||
}
|
||||
dev->last_cmd[c] = 0xff;
|
||||
if (dev->quhd[c] == dev->quend[c]) {
|
||||
dev->in_snd[c] = 0;
|
||||
return ;
|
||||
if (!workreq) {
|
||||
dev->last_cmd[c] = 0xff;
|
||||
if (dev->quhd[c] == dev->quend[c]) {
|
||||
dev->in_snd[c] = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) {
|
||||
dev->in_snd[c] = 0;
|
||||
return ;
|
||||
}
|
||||
dev->working[c]++;
|
||||
j = dev->quhd[c];
|
||||
dev->quhd[c]++;
|
||||
if (dev->quhd[c] >= qcnt) {
|
||||
dev->quhd[c] = 0;
|
||||
}
|
||||
workreq = dev->quereq[c][dev->quhd[c]];
|
||||
if (dev->id[c][scmd_id(workreq)].curr_req == NULL) {
|
||||
if (!workreq) {
|
||||
if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) {
|
||||
dev->in_snd[c] = 0;
|
||||
return;
|
||||
}
|
||||
dev->working[c]++;
|
||||
j = dev->quhd[c];
|
||||
dev->quhd[c]++;
|
||||
if (dev->quhd[c] >= qcnt)
|
||||
dev->quhd[c] = 0;
|
||||
workreq = dev->quereq[c][dev->quhd[c]];
|
||||
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->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) {
|
||||
goto oktosend;
|
||||
}
|
||||
abortsnd:
|
||||
if ((inb(dev->ioport[c] + 0x1f) & 0xb0) != 0 || inb(dev->ioport[c] + 0x1c) != 0) {
|
||||
#ifdef ED_DBGP
|
||||
printk("Abort to Send\n");
|
||||
printk("Abort to Send\n");
|
||||
#endif
|
||||
dev->last_cmd[c] |= 0x40;
|
||||
dev->in_snd[c] = 0;
|
||||
return;
|
||||
oktosend:
|
||||
dev->last_cmd[c] |= 0x40;
|
||||
dev->in_snd[c] = 0;
|
||||
return;
|
||||
}
|
||||
#ifdef ED_DBGP
|
||||
printk("OK to Send\n");
|
||||
scmd_printk(KERN_DEBUG, workreq, "CDB");
|
||||
|
|
Loading…
Reference in a new issue