Enable 16-bit CDBs for aic7xxx/aic79xxx
Subsystems (2)
PATCH 1/1 Enable 16-bit CDBs for aic7xxx/aic79xxx
Hi James,
this patch enables 16-bit CDBs for aic7xxx and aic79xx. aic7xxx actuallys supports up to 32-bit CDBs, so it might be that aic79xx does that, too. But this would include some more hacking, so this is way easier.
Please apply.
Cheers,
Hannes
Signature · 4 lines
Dr. Hannes Reinecke zSeries & Storage [email protected] +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg)
Enable 16-bit CDBs for aic7xxx/aix79xx
The patch enables support for 16-bit CDBs in aic7xxx and aic79xx. aic7xxx can actually support up to 32-bit CDBs, should they ever see the light of day.
drivers/scsi/aic7xxx/aic79xx_osm.c +1 -0
@@ -1089,6 +1089,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa host->max_id = (ahd->features &AHD_WIDE ) ?16 :8 ; host->max_lun =AHD_NUM_LUNS ; host->max_channel =0 ; + host->max_cmd_len =MAX_CDB_LEN ; host->sg_tablesize =AHD_NSEG ;ahd_lock (ahd, &s);ahd_set_unit (ahd, ahd_linux_unit++);
drivers/scsi/aic7xxx/aic7xxx_osm.c +1 -0
@@ -1047,6 +1047,7 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa host->max_id = (ahc->features &AHC_WIDE ) ?16 :8 ; host->max_lun =AHC_NUM_LUNS ; host->max_channel = (ahc->features &AHC_TWIN ) ?1 :0 ; + host->max_cmd_len =32 ; host->sg_tablesize =AHC_NSEG ;ahc_lock (ahc, &s);ahc_set_unit (ahc, ahc_linux_unit++);
Quoted 6 lines · Hannes Reinecke
Hi James,
this patch enables 16-bit CDBs for aic7xxx and aic79xx. aic7xxx actuallys supports up to 32-bit CDBs, so it might be that aic79xx does that, too. But this would include some more hacking, so this is way easier.
Yeah, grand. That should read '16-byte CDBs', of course.
But at least I've been consistent :-)
New patch attached.
Cheers,
Hannes
Signature · 4 lines
Dr. Hannes Reinecke zSeries & Storage [email protected] +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg)
Enable 16-byte CDBs for aic7xxx/aix79xx
The patch enables support for 16-byte CDBs in aic7xxx and aic79xx. aic7xxx can actually support up to 32-byte CDBs, should they ever see the light of day.
drivers/scsi/aic7xxx/aic79xx_osm.c +1 -0
@@ -1089,6 +1089,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa host->max_id = (ahd->features &AHD_WIDE ) ?16 :8 ; host->max_lun =AHD_NUM_LUNS ; host->max_channel =0 ; + host->max_cmd_len =MAX_CDB_LEN ; host->sg_tablesize =AHD_NSEG ;ahd_lock (ahd, &s);ahd_set_unit (ahd, ahd_linux_unit++);
drivers/scsi/aic7xxx/aic7xxx_osm.c +1 -0
@@ -1047,6 +1047,7 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa host->max_id = (ahc->features &AHC_WIDE ) ?16 :8 ; host->max_lun =AHC_NUM_LUNS ; host->max_channel = (ahc->features &AHC_TWIN ) ?1 :0 ; + host->max_cmd_len =32 ; host->sg_tablesize =AHC_NSEG ;ahc_lock (ahc, &s);ahc_set_unit (ahc, ahc_linux_unit++);
Just wondering, have you tried testing it with our patches to support long cdb? If not, it would be great if you could try doing that.
A snapshot of them is in http://www.bhalevy.com/open-osd/download/sgtable_bidi_varlen/
Benny
Quoted 51 lines · Hannes Reinecke
Quoted 6 lines · Hannes Reinecke
Hi James,
this patch enables 16-bit CDBs for aic7xxx and aic79xx. aic7xxx actuallys supports up to 32-bit CDBs, so it might be that aic79xx does that, too. But this would include some more hacking, so this is way easier.
Yeah, grand. That should read '16-byte CDBs', of course.
But at least I've been consistent :-)
New patch attached.Cheers,
Hannes
------------------------------------------------------------------------
Enable 16-byte CDBs for aic7xxx/aix79xx
The patch enables support for 16-byte CDBs in aic7xxx and aic79xx. aic7xxx can actually support up to 32-byte CDBs, should they ever see the light of day.
Signed-off-by Hannes Reinecke <[email protected]>drivers/scsi/aic7xxx/aic79xx_osm.c +1
-0@@ -1089,6 +1089,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa host->max_id = (ahd->features &AHD_WIDE ) ?16 :8 ; host->max_lun =AHD_NUM_LUNS ; host->max_channel =0 ; + host->max_cmd_len =MAX_CDB_LEN ; host->sg_tablesize =AHD_NSEG ;ahd_lock (ahd, &s);ahd_set_unit (ahd, ahd_linux_unit++);drivers/scsi/aic7xxx/aic7xxx_osm.c +1
-0@@ -1047,6 +1047,7 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa host->max_id = (ahc->features &AHC_WIDE ) ?16 :8 ; host->max_lun =AHC_NUM_LUNS ; host->max_channel = (ahc->features &AHC_TWIN ) ?1 :0 ; + host->max_cmd_len =32 ; host->sg_tablesize =AHC_NSEG ;ahc_lock (ahc, &s);ahc_set_unit (ahc, ahc_linux_unit++);
Quoted 25 lines · Hannes Reinecke
Hi James,
this patch enables 16-bit CDBs for aic7xxx and aic79xx. aic7xxx actuallys supports up to 32-bit CDBs, so it might be that aic79xx does that, too. But this would include some more hacking, so this is way easier.
Please apply.
Cheers,
Hannes
plain text document attachment (aic7xxx-enable-16byte-cdbs) Enable 16-bit CDBs for aic7xxx/aix79xxThe patch enables support for 16-bit CDBs in aic7xxx and aic79xx. aic7xxx can actually support up to 32-bit CDBs, should they ever see the light of day.
Signed-off-by Hannes Reinecke <[email protected]>drivers/scsi/aic7xxx/aic79xx_osm.c +0
-0
drivers/scsi/aic7xxx/aic79xx_osm.c ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa · line 1092
Quoted 4 lines
drivers/scsi/aic7xxx/aic79xx_osm.c +1
-0@@ -1089,6 +1089,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa host->max_id = (ahd->features &AHD_WIDE ) ?16 :8 ; host->max_lun =AHD_NUM_LUNS ; host->max_channel =0 ; + host->max_cmd_len =MAX_CDB_LEN ;
If aic79xx only supports 16 byte CDBs without modification, shouldn't this be set to 16? MAX_CDB_LEN could easily end up being patched to be larger and then aic79xx would be in trouble.
James