patch-2.1.102 linux/drivers/scsi/in2000.c

Next file: linux/drivers/scsi/scsi.c
Previous file: linux/drivers/scsi/ide-scsi.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.101/linux/drivers/scsi/in2000.c linux/drivers/scsi/in2000.c
@@ -858,7 +858,6 @@
 struct Scsi_Host *instance;
 struct IN2000_hostdata *hostdata;
 Scsi_Cmnd *patch, *cmd;
-unsigned long flags;
 uchar asr, sr, phs, id, lun, *ucp, msg;
 int i,j;
 unsigned long length;
@@ -875,11 +874,6 @@
       }
    hostdata = (struct IN2000_hostdata *)instance->hostdata;
 
-/* OK - it should now be safe to re-enable system interrupts */
-
-   save_flags(flags);
-   sti();
-
 #ifdef PROC_STATISTICS
    hostdata->int_cnt++;
 #endif
@@ -1014,7 +1008,6 @@
             }
 
       write1_io(0, IO_LED_OFF);
-      restore_flags(flags);
       return;
       }
 
@@ -1030,7 +1023,6 @@
    if (!cmd && (sr != CSR_RESEL_AM && sr != CSR_TIMEOUT && sr != CSR_SELECT)) {
       printk("\nNR:wd-intr-1\n");
       write1_io(0, IO_LED_OFF);
-      restore_flags(flags);
       return;
       }
 
@@ -1092,10 +1084,12 @@
 /* Respond to the specific WD3393 interrupt - there are quite a few! */
 
    switch (sr) {
+      unsigned long flags;
 
       case CSR_TIMEOUT:
 DB(DB_INTR,printk("TIMEOUT"))
 
+	 save_flags(flags);
          cli();
          if (hostdata->state == S_RUNNING_LEVEL2)
             hostdata->connected = NULL;
@@ -1114,7 +1108,7 @@
  * are commands waiting to be executed.
  */
 
-         sti();
+         restore_flags(flags);
          in2000_execute(instance);
          break;
 
@@ -1361,6 +1355,7 @@
 /* Note: this interrupt will occur only after a LEVEL2 command */
 
       case CSR_SEL_XFER_DONE:
+         save_flags(flags);
          cli();
 
 /* Make sure that reselection is enabled at this point - it may
@@ -1388,7 +1383,7 @@
  * there are commands waiting to be executed.
  */
 
-            sti();
+            restore_flags(flags);
             in2000_execute(instance);
             }
          else {
@@ -1447,6 +1442,7 @@
  * so we treat it as a normal command-complete-disconnect.
  */
 
+	 save_flags(flags);
          cli();
 
 /* Make sure that reselection is enabled at this point - it may
@@ -1473,12 +1469,13 @@
  * there are commands waiting to be executed.
  */
 
-         sti();
+         restore_flags(flags);
          in2000_execute(instance);
          break;
 
 
       case CSR_DISC:
+         save_flags(flags);
          cli();
 
 /* Make sure that reselection is enabled at this point - it may
@@ -1524,7 +1521,7 @@
  * there are commands waiting to be executed.
  */
 
-         sti();
+         restore_flags(flags);
          in2000_execute(instance);
          break;
 
@@ -1633,7 +1630,6 @@
       }
 
    write1_io(0, IO_LED_OFF);
-   restore_flags(flags);
 
 DB(DB_INTR,printk("} "))
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov