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

atp870u: Remove ugly gotos #2

parent 78614ecd
Loading
Loading
Loading
Loading
+30 −38
Original line number Diff line number Diff line
@@ -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,15 +638,15 @@ 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;
		}
		if (!workreq) {
			dev->last_cmd[c] = 0xff;
			if (dev->quhd[c] == dev->quend[c]) {
				dev->in_snd[c] = 0;
				return;
			}
		}
	}
	if (!workreq) {
		if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) {
			dev->in_snd[c] = 0;
			return;
@@ -654,34 +654,26 @@ static void send_s870(struct atp_unit *dev,unsigned char c)
		dev->working[c]++;
		j = dev->quhd[c];
		dev->quhd[c]++;
	if (dev->quhd[c] >= qcnt) {
		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->id[c][scmd_id(workreq)].curr_req = workreq;
		dev->last_cmd[c] = scmd_id(workreq);
		goto cmd_subp;
	}	
		if (dev->id[c][scmd_id(workreq)].curr_req != NULL) {
			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;
		dev->id[c][scmd_id(workreq)].curr_req = workreq;
		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
		printk("Abort to Send\n");
#endif
		dev->last_cmd[c] |= 0x40;
		dev->in_snd[c] = 0;
		return;
oktosend:
	}
#ifdef ED_DBGP
	printk("OK to Send\n");
	scmd_printk(KERN_DEBUG, workreq, "CDB");