atp870u: Remove ugly gotos #2
authorOndrej Zary <linux@rainbow-software.org>
Tue, 17 Nov 2015 18:23:50 +0000 (19:23 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 26 Nov 2015 03:08:34 +0000 (22:08 -0500)
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>
drivers/scsi/atp870u.c

index 886e54ba97ffb0d94d3a07db4f4641ffa2f3934f..999bf74c3a861e9cb3aadf103735d97db0d10880 100644 (file)
@@ -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");