convert fusion to SPI transport class and use generic DV
Subsystems (2)
RFC 1/1 convert fusion to SPI transport class and use generic DV
This code is more posted as an illustration of how to do things than an actual patch for submission. However, I've tested this and it does actually work:
ioc1: 53C1030: Capabilities={Initiator,Target}
scsi5 : ioc1: LSI53C1030, FwRev=01032700h, Ports=1, MaxQ=255, IRQ=56
Vendor: HP 36.4G Model: ST336607LW Rev: HPC3
Type: Direct-Access ANSI SCSI revision: 03
target5:0:1: Beginning Domain Validation
target5:0:1: Ending Domain Validation
target5:0:1: FAST-160 WIDE SCSI 320.0 MB/s DT IU QAS (6.25 ns, offset 127)
jejb@titanic> ls /sys/class/spi_transport/target5\:0\:1/
device@ iu max_width offset period rd_strm rti wr_flow dt max_offset min_period pcomp_en qas revalidate width
James
drivers/message/fusion/Kconfig +1 -0
@@ -9,6 +9,7 @@ config FUSION_SPI tristate "Fusion MPT ScsiHost drivers for SPI" depends on PCI && SCSI select FUSION + select SCSI_SPI_ATTRS ---help--- SCSI HOST support for a parallel SCSI host adapters.
drivers/message/fusion/mptscsih.c +11 -7
@@ -2507,7 +2507,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int/* 4. Renegotiate to all devices, if SCSI */ if (ioc->bus_type ==SCSI ) { -dnegoprintk (("writeSDP1: ALL_IDS USE_NVRAM\n" )); +printk ("writeSDP1: ALL_IDS USE_NVRAM\n" );mptscsih_writeSDP1 (hd,0 ,0 ,MPT_SCSICFG_ALL_IDS |MPT_SCSICFG_USE_NVRAM ); }
@@ -2766,7 +2766,7 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, i vdev->tflags |=MPT_TARGET_FLAGS_VALID_56 ; } } -mptscsih_setTargetNegoParms (hd, vdev, data_56); +//mptscsih_setTargetNegoParms(hd, vdev, data_56); }else {/* Initial Inquiry may not request enough data bytes to * obtain byte 57. DV will; if target doesn't return
@@ -2777,7 +2777,7 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, i*/ data_56 = data[56 ]; vdev->tflags |=MPT_TARGET_FLAGS_VALID_56 ; -mptscsih_setTargetNegoParms (hd, vdev, data_56); +//mptscsih_setTargetNegoParms(hd, vdev, data_56); } } }
@@ -2806,6 +2806,8 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOS target->negoFlags = pspi_data->noQas; +printk ("HERE\n" ); +/* noQas == 0 => device supports QAS. Need byte 56 of Inq to determine * support. If available, default QAS to off and allow enabling. * If not available, default QAS to on, turn off for non-disks.
@@ -3105,6 +3107,8 @@ mptscsih_writeSDP1(MPT_SCSI_HOST *hd, inu8 negoFlags;u8 maxwidth, maxoffset, maxfactor; +printk ("HERE2\n" ); +if (ioc->spi_data.sdp1length ==0 )return 0 ;
@@ -3204,8 +3208,8 @@ mptscsih_writeSDP1(MPT_SCSI_HOST *hd, inreturn -EAGAIN ; } -ddvprintk ((MYIOC_s_INFO_FMT"WriteSDP1 (mf=%p, id=%d, req=0x%x, cfg=0x%x)\n" , - hd->ioc->name, mf, id, requested, configuration)); +printk (MYIOC_s_INFO_FMT"WriteSDP1 (mf=%p, id=%d, req=0x%x, cfg=0x%x)\n" , + hd->ioc->name, mf, id, requested, configuration);/* Set the request and the data pointers.
@@ -4228,12 +4232,12 @@ mptscsih_qas_check(MPT_SCSI_HOST *hd, inif ((pTarget !=NULL ) && (!pTarget->raidVolume)) {if ((pTarget->negoFlags & hd->ioc->spi_data.noQas) ==0 ) { pTarget->negoFlags |= hd->ioc->spi_data.noQas; -dnegoprintk (("writeSDP1: id=%d flags=0\n" , id)); +printk ("writeSDP1: id=%d flags=0\n" , id);mptscsih_writeSDP1 (hd,0 , ii,0 ); } }else {if (mptscsih_is_phys_disk (hd->ioc, ii) ==1 ) { -dnegoprintk (("writeSDP1: id=%d SCSICFG_USE_NVRAM\n" , id)); +printk ("writeSDP1: id=%d SCSICFG_USE_NVRAM\n" , id);mptscsih_writeSDP1 (hd,0 , ii,MPT_SCSICFG_USE_NVRAM ); } }
drivers/message/fusion/mptscsih.h +1 -1
@@ -67,7 +67,7 @@* capabilities. */ -#define MPTSCSIH_ENABLE_DOMAIN_VALIDATION +#undef MPTSCSIH_ENABLE_DOMAIN_VALIDATION/* SCSI driver setup structure. Settings can be overridden
drivers/message/fusion/mptspi.c +376 -2
427 lines not on this page · raw message