Skip to contentSkip to conversation

Enable 16-bit CDBs for aic7xxx/aic79xxx

PATCH In review Hannes Reinecke 3 participants 4 messages Jul 23, 2007 – Jul 24, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
index 286ab83..8502085 100644
@@ -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
index 1803ab6..a6b3071 100644
@@ -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++);
#1 lore raw
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
index 286ab83..8502085 100644
@@ -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
index 1803ab6..a6b3071 100644
@@ -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++);
#2 lore raw

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.

drivers/scsi/aic7xxx/aic79xx_osm.c +1 -0
index 286ab83..8502085 100644
@@ -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
index 1803ab6..a6b3071 100644
@@ -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++);
#3 lore raw
In reply to Hannes Reinecke
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/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 +0 -0
index 286ab83..8502085 100644

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