PATCH: fix ibm MCA adapter for new scsi, use mca_legacy for now

PATCH: fix ibm MCA adapter for new scsi, use mca_legacy for now

Post by Alan Co » Sat, 15 Feb 2003 23:30:11



diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.5.60-ref/drivers/scsi/ibmmca.c linux-2.5.60-ac1/drivers/scsi/ibmmca.c
--- linux-2.5.60-ref/drivers/scsi/ibmmca.c      2003-02-14 21:21:35.000000000 +0000
+++ linux-2.5.60-ac1/drivers/scsi/ibmmca.c      2003-02-14 20:32:08.000000000 +0000
@@ -39,6 +39,7 @@
 #include <linux/string.h>
 #include <linux/spinlock.h>
 #include <linux/init.h>
+#include <linux/mca-legacy.h>

 #include <asm/system.h>
 #include <asm/io.h>
@@ -668,8 +669,8 @@
        ld(ihost_index)[ldn].cmd = NULL;
 #ifdef IM_DEBUG_TIMEOUT
        if (cmd) {
-               if ((cmd->target == TIMEOUT_PUN) && (cmd->lun == TIMEOUT_LUN)) {
-                       printk("IBM MCA SCSI: Ignoring interrupt from pun=%x, lun=%x.\n", cmd->target, cmd->lun);
+               if ((cmd->target == TIMEOUT_PUN) && (cmd->device->lun == TIMEOUT_LUN)) {
+                       printk("IBM MCA SCSI: Ignoring interrupt from pun=%x, lun=%x.\n", cmd->target, cmd->device->lun);
                        return;
                }
        }
@@ -1824,7 +1825,7 @@
        int i;
        struct scatterlist *sl;

-       shpnt = cmd->host;
+       shpnt = cmd->device->host;
        /* search for the right hostadapter */
        for (host_index = 0; hosts[host_index] && hosts[host_index]->host_no != shpnt->host_no; host_index++);

@@ -1836,16 +1837,16 @@
        }
        max_pun = subsystem_maxid(host_index);
        if (ibm_ansi_order) {
-               target = max_pun - 1 - cmd->target;
-               if ((target <= subsystem_pun(host_index)) && (cmd->target <= subsystem_pun(host_index)))
+               target = max_pun - 1 - cmd->device->id;
+               if ((target <= subsystem_pun(host_index)) && (cmd->device->id <= subsystem_pun(host_index)))
                        target--;
-               else if ((target >= subsystem_pun(host_index)) && (cmd->target >= subsystem_pun(host_index)))
+               else if ((target >= subsystem_pun(host_index)) && (cmd->device->id >= subsystem_pun(host_index)))
                        target++;
        } else
-               target = cmd->target;
+               target = cmd->device->id;

        /* if (target,lun) is NO LUN or not existing at all, return error */
-       if ((get_scsi(host_index)[target][cmd->lun] == TYPE_NO_LUN) || (get_scsi(host_index)[target][cmd->lun] == TYPE_NO_DEVICE)) {
+       if ((get_scsi(host_index)[target][cmd->device->lun] == TYPE_NO_LUN) || (get_scsi(host_index)[target][cmd->device->lun] == TYPE_NO_DEVICE)) {
                cmd->result = DID_NO_CONNECT << 16;
                if (done)
                        done(cmd);
@@ -1853,7 +1854,7 @@
        }

        /*if (target,lun) unassigned, do further checks... */
-       ldn = get_ldn(host_index)[target][cmd->lun];
+       ldn = get_ldn(host_index)[target][cmd->device->lun];
        if (ldn >= MAX_LOG_DEV) {    /* on invalid ldn do special stuff */
                if (ldn > MAX_LOG_DEV) {     /* dynamical remapping if ldn unassigned */
                        current_ldn = next_ldn(host_index);     /* stop-value for one circle */
@@ -1864,7 +1865,7 @@
                                        next_ldn(host_index) = 7;
                                if (current_ldn == next_ldn(host_index)) {      /* One circle done ? */
                                        /* no non-processing ldn found */
-                                       printk("IBM MCA SCSI: Cannot assign SCSI-device dynamically!\n" "              On ldn 7-14 SCSI-commands everywhere in progress.\n" "              Reporting DID_NO_CONNECT for device (%d,%d).\n", target, cmd->lun);
+                                       printk("IBM MCA SCSI: Cannot assign SCSI-device dynamically!\n" "              On ldn 7-14 SCSI-commands everywhere in progress.\n" "              Reporting DID_NO_CONNECT for device (%d,%d).\n", target, cmd->device->lun);
                                        cmd->result = DID_NO_CONNECT << 16;    /* return no connect */
                                        if (done)
                                                done(cmd);
@@ -1884,26 +1885,26 @@
                        /* set reduced interrupt_handler-mode for checking */
                        local_checking_phase_flag(host_index) = 1;
                        /* map found ldn to pun,lun */
-                       get_ldn(host_index)[target][cmd->lun] = next_ldn(host_index);
+                       get_ldn(host_index)[target][cmd->device->lun] = next_ldn(host_index);
                        /* change ldn to the right value, that is now next_ldn */
                        ldn = next_ldn(host_index);
                        /* unassign all ldns (pun,lun,ldn does not matter for remove) */
                        immediate_assign(host_index, 0, 0, 0, REMOVE_LDN);
                        /* set only LDN for remapped device */
-                       immediate_assign(host_index, target, cmd->lun, ldn, SET_LDN);
+                       immediate_assign(host_index, target, cmd->device->lun, ldn, SET_LDN);
                        /* get device information for ld[ldn] */
                        if (device_exists(host_index, ldn, &ld(host_index)[ldn].block_length, &ld(host_index)[ldn].device_type)) {
                                ld(host_index)[ldn].cmd = NULL; /* To prevent panic set 0, because
                                                                   devices that were not assigned,
                                                                   should have nothing in progress. */
-                               get_scsi(host_index)[target][cmd->lun] = ld(host_index)[ldn].device_type;
+                               get_scsi(host_index)[target][cmd->device->lun] = ld(host_index)[ldn].device_type;
                                /* increase assignment counters for statistics in /proc */
                                IBM_DS(host_index).dynamical_assignments++;
                                IBM_DS(host_index).ldn_assignments[ldn]++;
                        } else
                                /* panic here, because a device, found at boottime has
                                   vanished */
-                               panic("IBM MCA SCSI: ldn=0x%x, SCSI-device on (%d,%d) vanished!\n", ldn, target, cmd->lun);
+                               panic("IBM MCA SCSI: ldn=0x%x, SCSI-device on (%d,%d) vanished!\n", ldn, target, cmd->device->lun);
                        /* unassign again all ldns (pun,lun,ldn does not matter for remove) */
                        immediate_assign(host_index, 0, 0, 0, REMOVE_LDN);
                        /* remap all ldns, as written in the pun/lun table */
@@ -1919,7 +1920,7 @@
                        local_checking_phase_flag(host_index) = 0;
 #ifdef IM_DEBUG_PROBE
                        /* Information on syslog terminal */
-                       printk("IBM MCA SCSI: ldn=0x%x dynamically reassigned to (%d,%d).\n", ldn, target, cmd->lun);
+                       printk("IBM MCA SCSI: ldn=0x%x dynamically reassigned to (%d,%d).\n", ldn, target, cmd->device->lun);
 #endif
                        /* increase next_ldn for next dynamical assignment */
                        next_ldn(host_index)++;
@@ -2141,7 +2142,7 @@
        printk("IBM MCA SCSI: Abort subroutine called...\n");
 #endif

-       shpnt = cmd->host;
+       shpnt = cmd->device->host;
        /* search for the right hostadapter */
        for (host_index = 0; hosts[host_index] && hosts[host_index]->host_no != shpnt->host_no; host_index++);

@@ -2149,7 +2150,7 @@
                cmd->result = DID_NO_CONNECT << 16;
                if (cmd->scsi_done)
                        (cmd->scsi_done) (cmd);
-               shpnt = cmd->host;
+               shpnt = cmd->device->host;
 #ifdef IM_DEBUG_PROBE
                printk(KERN_DEBUG "IBM MCA SCSI: Abort adapter selection failed!\n");
 #endif
@@ -2157,17 +2158,17 @@
        }
        max_pun = subsystem_maxid(host_index);
        if (ibm_ansi_order) {
-               target = max_pun - 1 - cmd->target;
-               if ((target <= subsystem_pun(host_index)) && (cmd->target <= subsystem_pun(host_index)))
+               target = max_pun - 1 - cmd->device->id;
+               if ((target <= subsystem_pun(host_index)) && (cmd->device->id <= subsystem_pun(host_index)))
                        target--;
-               else if ((target >= subsystem_pun(host_index)) && (cmd->target >= subsystem_pun(host_index)))
+               else if ((target >= subsystem_pun(host_index)) && (cmd->device->id >= subsystem_pun(host_index)))
                        target++;
        } else
-               target = cmd->target;
+               target = cmd->device->id;

        /* get logical device number, and disable system interrupts */
-       printk(KERN_WARNING "IBM MCA SCSI: Sending abort to device pun=%d, lun=%d.\n", target, cmd->lun);
-       ldn = get_ldn(host_index)[target][cmd->lun];
+       printk(KERN_WARNING "IBM MCA SCSI: Sending abort to device pun=%d, lun=%d.\n", target, cmd->device->lun);
+       ldn = get_ldn(host_index)[target][cmd->device->lun];

        /*if cmd for this ldn has already finished, no need to abort */
        if (!ld(host_index)[ldn].cmd) {
@@ -2242,7 +2243,7 @@
                BUG();

        ticks = IM_RESET_DELAY * HZ;
-       shpnt = cmd->host;
+       shpnt = cmd->device->host;
        /* search for the right hostadapter */
        for (host_index = 0; hosts[host_index] && hosts[host_index]->host_no != shpnt->host_no; host_index++);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

1. IBM MCA SCSI Adapter

Hello.
I am trying to understand which driver I can best use to install RedHat
onto an IBM MCA SCSI hard disk. The (rather sparse) HOWTO documentation
suggests using the Adaptec 1640 driver, which appears to not be present
in the basic RedHat5.2 install.
I know nothing of configuring SCSI Adapters and so any help is very much
appreciated.

Sorry, but Windows NT has no problem with this hardware at all...

Thanks very much for your time.
Rgds, Steve Pipes.

2. hacked???

3. IBM MCA F/W-SCSI adapter 4-7 problems

4. Authen/Authz question with Apache mod_perl question

5. PATCH: fix fd_mcs build for scsi changes, mca compt

6. ANSI emulation in color xterm

7. PATCH: fix ultrastor for new scsi

8. libtiff problems

9. PATCH: fix wd7000 for new scsi

10. PATCH: Fix seagate for new scsi

11. PATCH: fix sym53c416 for new scsi

12. PATCH: fix NCR53c406a for new scsi

13. PATCH: fix ppa for new scsi