All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2.6 ] MPT Fusion driver 3.01.01 update
@ 2004-03-11 17:32 Moore, Eric Dean
  2004-03-11 19:13 ` Marc Bevand
  0 siblings, 1 reply; 2+ messages in thread
From: Moore, Eric Dean @ 2004-03-11 17:32 UTC (permalink / raw)
  To: linux-scsi; +Cc: James.Bottomley

[-- Attachment #1: Type: text/plain, Size: 685 bytes --]

This is an update for the MPT Fusion drivers 2.6 kernel.
Version 3.01.01.

This is a fix for poor performance in RAID Volumes. 
The dvStatus was being cleared for hidden physical disks
when mptscsih_slave_destroy is called.

Also, I have fixed the warning comming from mptscsih_reset_timeouts.

You can download full source as well as the patches for this 
driver at:
ftp://ftp.lsil.com/HostAdapterDrivers/linux/FiberChannel/2.6-patches/3.01.01

This attached patch is against the 3.01.00 driver.


Eric Moore
Staff Engineer
Standard Storage Products Division
LSI Logic Corporation
4420 Arrowswest Drive
Colorado Springs, CO 80907
Email: emoore@lsil.com
Web: http://www.lsilogic.com/


[-- Attachment #2: mptlinux-3.01.01.patch --]
[-- Type: application/octet-stream, Size: 3512 bytes --]

diff -uarN b/drivers/message/fusion/mptbase.h a/drivers/message/fusion/mptbase.h
--- b/drivers/message/fusion/mptbase.h	2004-03-05 12:01:39.000000000 -0700
+++ a/drivers/message/fusion/mptbase.h	2004-03-11 08:41:17.000000000 -0700
@@ -81,8 +81,8 @@
 #define COPYRIGHT	"Copyright (c) 1999-2004 " MODULEAUTHOR
 #endif
 
-#define MPT_LINUX_VERSION_COMMON	"3.01.00"
-#define MPT_LINUX_PACKAGE_NAME		"@(#)mptlinux-3.01.00"
+#define MPT_LINUX_VERSION_COMMON	"3.01.01"
+#define MPT_LINUX_PACKAGE_NAME		"@(#)mptlinux-3.01.01"
 #define WHAT_MAGIC_STRING		"@" "(" "#" ")"
 
 #define show_mptmod_ver(s,ver)  \
diff -uarN b/drivers/message/fusion/mptscsih.c a/drivers/message/fusion/mptscsih.c
--- b/drivers/message/fusion/mptscsih.c	2004-03-05 12:01:39.000000000 -0700
+++ a/drivers/message/fusion/mptscsih.c	2004-03-11 08:55:49.000000000 -0700
@@ -199,8 +199,8 @@
 static int	mptscsih_setup(char *str);
 
 /* module entry point */
-static int  __init    mptscsih_init  (void);
-static void __exit    mptscsih_exit  (void);
+static int  __init   mptscsih_init  (void);
+static void __exit   mptscsih_exit  (void);
 
 static int  mptscsih_probe (struct pci_dev *, const struct pci_device_id *);
 static void mptscsih_remove(struct pci_dev *);
@@ -1067,10 +1067,14 @@
 	Scsi_Cmnd	*SCpnt;
 	int		 ii;
 	int		 max = hd->ioc->req_depth;
+		
 
 	for (ii= 0; ii < max; ii++) {
 		if ((SCpnt = hd->ScsiLookup[ii]) != NULL) {
-			mod_timer(&SCpnt->eh_timeout, jiffies + (HZ * 60));
+	/* calling mod_timer() panics in 2.6 kernel...
+	 * need to investigate
+	 */
+//			mod_timer(&SCpnt->eh_timeout, jiffies + (HZ * 60));
 			dtmprintk((MYIOC_s_WARN_FMT "resetting SCpnt=%p timeout + 60HZ",
 				(hd && hd->ioc) ? hd->ioc->name : "ioc?", SCpnt));
 		}
@@ -1978,8 +1982,8 @@
  *	mptscsih_exit - Unregisters MPT adapter(s)
  *
  */
-static void
-__exit mptscsih_exit(void)
+static void __exit
+mptscsih_exit(void)
 {
 	MPT_ADAPTER	*ioc;
 
@@ -3339,6 +3343,7 @@
 	struct Scsi_Host	*host = device->host;
 	MPT_SCSI_HOST		*hd;
 	VirtDevice		*vdev;
+	int 			raid_volume=0;
 
 	hd = (MPT_SCSI_HOST *)host->hostdata;
 
@@ -3361,25 +3366,33 @@
 			kfree(hd->Targets[device->id]);
 			hd->Targets[device->id] = NULL;
 
-			if (hd->is_spi) {
+			if (!hd->is_spi) 
+				return;
+
+			if((hd->ioc->spi_data.isRaid) && (hd->ioc->spi_data.pIocPg3)) {
+			int i;
+				for(i=0;i<hd->ioc->spi_data.pIocPg3->NumPhysDisks &&
+					raid_volume==0;i++)
+						
+					if(device->id == 
+					  hd->ioc->spi_data.pIocPg3->PhysDisk[i].PhysDiskNum) {
+						raid_volume=1;
+						hd->ioc->spi_data.forceDv |=
+						  MPT_SCSICFG_RELOAD_IOC_PG3;
+					}
+			}
+
+			if(!raid_volume){
 				hd->ioc->spi_data.dvStatus[device->id] =
 				MPT_SCSICFG_NEGOTIATE;
 
 				if (hd->negoNvram == 0)
 					hd->ioc->spi_data.dvStatus[device->id]
 					|= MPT_SCSICFG_DV_NOT_DONE;
-
-				/* Don't alter isRaid, not allowed to move
-				 * volumes on a running system.
-				 */
-				if (hd->ioc->spi_data.isRaid & (1 <<
-					(device->id)))
-					hd->ioc->spi_data.forceDv |=
-					MPT_SCSICFG_RELOAD_IOC_PG3;
 			}
 		}
 	}
-
+	
 	return;
 }
 
@@ -3693,12 +3706,8 @@
 		 */
 		hd->resetPending = 1;
 
-#if 0		
-		/* calling mod_timer() panics in 2.6 kernel...
-		 * need to investigate
-		 */
 		mptscsih_reset_timeouts (hd);
-#endif
+	
 	} else if (reset_phase == MPT_IOC_PRE_RESET) {
 		dtmprintk((MYIOC_s_WARN_FMT "Pre-Diag Reset\n", ioc->name));
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 2.6 ] MPT Fusion driver 3.01.01 update
  2004-03-11 17:32 [PATCH 2.6 ] MPT Fusion driver 3.01.01 update Moore, Eric Dean
@ 2004-03-11 19:13 ` Marc Bevand
  0 siblings, 0 replies; 2+ messages in thread
From: Marc Bevand @ 2004-03-11 19:13 UTC (permalink / raw)
  To: linux-scsi

Moore, Eric Dean wrote:
> This is an update for the MPT Fusion drivers 2.6 kernel.
> Version 3.01.01.
> 
> This is a fix for poor performance in RAID Volumes. 
> The dvStatus was being cleared for hidden physical disks
> when mptscsih_slave_destroy is called.

Are these poor performances related to [1] (I encounter the same problem) ?
If so, do you plan to have a fix for the 2.4 kernel ? Thanks.

[1] http://testing.lkml.org/slashdot.php?mid=432911

-- 
Marc Bevand


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-03-11 19:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-11 17:32 [PATCH 2.6 ] MPT Fusion driver 3.01.01 update Moore, Eric Dean
2004-03-11 19:13 ` Marc Bevand

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.