diff -uarN drivers/message/fusion-3.01.20/Kconfig drivers/message/fusion/Kconfig --- drivers/message/fusion-3.01.20/Kconfig 2005-03-15 16:47:34.000000000 -0700 +++ drivers/message/fusion/Kconfig 2005-03-24 08:36:25.000000000 -0700 @@ -1,9 +1,9 @@ menu "Fusion MPT device support" -config FUSION_SPI - tristate "Fusion MPT (base + ScsiHost) drivers for SPI" - depends on PCI && SCSI +config FUSION + tristate "Fusion MPT (base) drivers" + depends on PCI ---help--- LSI Logic Fusion(TM) Message Passing Technology (MPT) device support provides high performance SCSI host initiator, and LAN [1] interface @@ -14,22 +14,37 @@ [1] LAN is not supported on parallel SCSI medium. +config FUSION_SPI + tristate "Fusion MPT (ScsiHost) drivers for SPI" + depends on FUSION && SCSI + ---help--- + This is SCSI HOST support for a parallel SCSI host adapters. + + List of supported controllers: + + LSI53C1020 + LSI53C1020A + LSI53C1030 + LSI53C1035 + config FUSION_FC - tristate "Fusion MPT (base + ScsiHost) drivers for FC" - depends on PCI && SCSI + tristate "Fusion MPT (ScsiHost) drivers for FC" + depends on FUSION && SCSI ---help--- - LSI Logic Fusion(TM) Message Passing Technology (MPT) device support - provides high performance SCSI host initiator, and LAN [1] interface - services to a host system. The Fusion architecture is capable of - duplexing these protocols on high-speed Fibre Channel - (up to 2 GHz x 2 ports = 4 GHz) and parallel SCSI (up to Ultra-320) - physical medium. + This is SCSI HOST support for a Fiber Channel host adapters. - [1] LAN is not supported on parallel SCSI medium. + List of supported controllers: + + LSIFC909 + LSIFC919 + LSIFC919X + LSIFC929 + LSIFC929X + LSIFC929XL config FUSION_MAX_SGE int "Maximum number of scatter gather entries" - depends on FUSION_SPI || FUSION_FC + depends on FUSION default "40" help This option allows you to specify the maximum number of scatter- @@ -42,7 +57,7 @@ config FUSION_CTL tristate "Fusion MPT misc device (ioctl) driver" - depends on FUSION_SPI || FUSION_FC + depends on FUSION ---help--- The Fusion MPT misc device driver provides specialized control of MPT adapters via system ioctl calls. Use of ioctl calls to @@ -61,7 +76,7 @@ config FUSION_LAN tristate "Fusion MPT LAN driver" - depends on FUSION_FC && NET_FC + depends on FUSION && NET_FC ---help--- This module supports LAN IP traffic over Fibre Channel port(s) on Fusion MPT compatible hardware (LSIFC9xx chips). diff -uarN drivers/message/fusion-3.01.20/Makefile drivers/message/fusion/Makefile --- drivers/message/fusion-3.01.20/Makefile 2005-03-22 10:43:07.000000000 -0700 +++ drivers/message/fusion/Makefile 2005-03-24 08:22:02.000000000 -0700 @@ -1,20 +1,3 @@ -# -# Makefile for the LSI Logic Fusion MPT (Message Passing Technology) drivers. -# -# Note! If you want to turn on various debug defines for an extended period of -# time but don't want them lingering around in the Makefile when you pass it on -# to someone else, use the MPT_CFLAGS env variable (thanks Steve). -nromer - -#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-{ LSI_LOGIC - -# Architecture-specific... -# # intel -#EXTRA_CFLAGS += -g -# # sparc64 -#EXTRA_CFLAGS += -gstabs+ - -EXTRA_CFLAGS += ${MPT_CFLAGS} - # Fusion MPT drivers; recognized debug defines... # MPT general: #EXTRA_CFLAGS += -DMPT_DEBUG_SCSI @@ -29,10 +12,10 @@ #CFLAGS_mptbase.o += -DMPT_DEBUG_HANDSHAKE #CFLAGS_mptbase.o += -DMPT_DEBUG_IRQ # -# For mptscsih: -#CFLAGS_mptscsih.o += -DMPT_DEBUG_SCANDV -#CFLAGS_mptscsih.o += -DMPT_DEBUG_RESET -#CFLAGS_mptscsih.o += -DMPT_DEBUG_NEH +# For mptscsi: +#CFLAGS_mptscsi.o += -DMPT_DEBUG_SCANDV +#CFLAGS_mptscsi.o += -DMPT_DEBUG_RESET +#CFLAGS_mptscsi.o += -DMPT_DEBUG_NEH # # For mptctl: #CFLAGS_mptctl.o += -DMPT_DEBUG_IOCTL @@ -46,7 +29,11 @@ ##mptscsih-objs := scsihost.o scsiherr.o #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC +mptscsih-objs := mpt_core.o mptscsi.o +mptfch-objs := mpt_core.o mptfc.o -obj-$(CONFIG_FUSION) += mptbase.o mptscsih.o +obj-$(CONFIG_FUSION) += mptbase.o +obj-$(CONFIG_FUSION_SPI) += mptscsih.o +obj-$(CONFIG_FUSION_FC) += mptfch.o obj-$(CONFIG_FUSION_CTL) += mptctl.o -obj-$(CONFIG_FUSION_LAN) += mptlan.o +obj-$(CONFIG_FUSION_LAN) += mptlan.o \ No newline at end of file diff -uarN drivers/message/fusion-3.01.20/mptbase.c drivers/message/fusion/mptbase.c --- drivers/message/fusion-3.01.20/mptbase.c 2005-03-24 09:27:32.000000000 -0700 +++ drivers/message/fusion/mptbase.c 2005-03-24 09:25:18.000000000 -0700 @@ -1,55 +1,14 @@ /* * linux/drivers/message/fusion/mptbase.c - * High performance SCSI + LAN / Fibre Channel device drivers. * This is the Fusion MPT base driver which supports multiple * (SCSI + LAN) specialized protocol drivers. - * For use with PCI chip/adapter(s): - * LSIFC9xx/LSI409xx Fibre Channel + * For use with LSI Logic PCI chip/adapter(s) * running LSI Logic Fusion MPT (Message Passing Technology) firmware. * - * Credits: - * There are lots of people not mentioned below that deserve credit - * and thanks but won't get it here - sorry in advance that you - * got overlooked. - * - * This driver would not exist if not for Alan Cox's development - * of the linux i2o driver. - * - * A special thanks to Noah Romer (LSI Logic) for tons of work - * and tough debugging on the LAN driver, especially early on;-) - * And to Roger Hickerson (LSI Logic) for tirelessly supporting - * this driver project. - * - * A special thanks to Pamela Delaney (LSI Logic) for tons of work - * and countless enhancements while adding support for the 1030 - * chip family. Pam has been instrumental in the development of - * of the 2.xx.xx series fusion drivers, and her contributions are - * far too numerous to hope to list in one place. - * - * All manner of help from Stephen Shirron (LSI Logic): - * low-level FC analysis, debug + various fixes in FCxx firmware, - * initial port to alpha platform, various driver code optimizations, - * being a faithful sounding board on all sorts of issues & ideas, - * etc. - * - * A huge debt of gratitude is owed to David S. Miller (DaveM) - * for fixing much of the stupid and broken stuff in the early - * driver while porting to sparc64 platform. THANK YOU! - * - * Special thanks goes to the I2O LAN driver people at the - * University of Helsinki, who, unbeknownst to them, provided - * the inspiration and initial structure for this driver. - * - * A really huge debt of gratitude is owed to Eddie C. Dost - * for gobs of hard work fixing and optimizing LAN code. - * THANK YOU! - * - * Copyright (c) 1999-2004 LSI Logic Corporation - * Originally By: Steven J. Ralston - * (mailto:sjralston1@netscape.net) + * Copyright (c) 1999-2005 LSI Logic Corporation * (mailto:mpt_linux_developer@lsil.com) * - * $Id: mptbase.c,v 1.126 2002/12/16 15:28:45 pdelaney Exp $ + * $Id: mptbase.c,v 1.130 2003/05/07 14:08:30 Exp $ */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* @@ -738,6 +697,12 @@ /* call per pci device probe entry point */ list_for_each_entry(ioc, &ioc_list, list) { if(dd_cbfunc->probe) { + if((cb_idx == MPTFC_DRIVER) && (ioc->bus_type != FC)) + continue; + if((cb_idx == MPTSCSIH_DRIVER) && (ioc->bus_type != SCSI)) + continue; + if((cb_idx == MPTSAS_DRIVER) && (ioc->bus_type != SAS)) + continue; error = dd_cbfunc->probe(ioc->pcidev, ioc->pcidev->driver->id_table); if(error != 0) @@ -5130,14 +5095,14 @@ procmpt_version_read(char *buf, char **start, off_t offset, int request, int *eof, void *data) { int ii; - int scsi, lan, ctl, targ, dmp; + int scsi, fc, sas, lan, ctl, targ, dmp; char *drvname; int len; len = sprintf(buf, "%s-%s\n", "mptlinux", MPT_LINUX_VERSION_COMMON); len += sprintf(buf+len, " Fusion MPT base driver\n"); - scsi = lan = ctl = targ = dmp = 0; + scsi = fc = sas = lan = ctl = targ = dmp = 0; for (ii=MPT_MAX_PROTOCOL_DRIVERS-1; ii; ii--) { drvname = NULL; if (MptCallbacks[ii]) { @@ -5145,6 +5110,12 @@ case MPTSCSIH_DRIVER: if (!scsi++) drvname = "SCSI host"; break; + case MPTFC_DRIVER: + if (!fc++) drvname = "FC host"; + break; + case MPTSAS_DRIVER: + if (!sas++) drvname = "SAS host"; + break; case MPTLAN_DRIVER: if (!lan++) drvname = "LAN"; break; diff -uarN drivers/message/fusion-3.01.20/mptbase.h drivers/message/fusion/mptbase.h --- drivers/message/fusion-3.01.20/mptbase.h 2005-03-22 10:44:24.000000000 -0700 +++ drivers/message/fusion/mptbase.h 2005-03-24 09:34:42.000000000 -0700 @@ -5,15 +5,10 @@ * LSIFC9xx/LSI409xx Fibre Channel * running LSI Logic Fusion MPT (Message Passing Technology) firmware. * - * Credits: - * (see mptbase.c) - * - * Copyright (c) 1999-2004 LSI Logic Corporation - * Originally By: Steven J. Ralston - * (mailto:sjralston1@netscape.net) + * Copyright (c) 1999-2005 LSI Logic Corporation * (mailto:mpt_linux_developer@lsil.com) * - * $Id: mptbase.h,v 1.144 2003/01/28 21:31:56 pdelaney Exp $ + * $Id: mptbase.h,v 1.149 2003/05/07 14:08:31 Exp $ */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* @@ -83,8 +78,8 @@ #define COPYRIGHT "Copyright (c) 1999-2004 " MODULEAUTHOR #endif -#define MPT_LINUX_VERSION_COMMON "3.01.20" -#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.20" +#define MPT_LINUX_VERSION_COMMON "3.03.00" +#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.00" #define WHAT_MAGIC_STRING "@" "(" "#" ")" #define show_mptmod_ver(s,ver) \ @@ -95,7 +90,7 @@ * Fusion MPT(linux) driver configurable stuff... */ #define MPT_MAX_ADAPTERS 18 -#define MPT_MAX_PROTOCOL_DRIVERS 16 +#define MPT_MAX_PROTOCOL_DRIVERS 32 #define MPT_MAX_BUS 1 /* Do not change */ #define MPT_MAX_FC_DEVICES 255 #define MPT_MAX_SCSI_DEVICES 16 @@ -203,7 +198,9 @@ typedef enum { MPTBASE_DRIVER, /* MPT base class */ MPTCTL_DRIVER, /* MPT ioctl class */ - MPTSCSIH_DRIVER, /* MPT SCSI host (initiator) class */ + MPTSCSIH_DRIVER, /* MPT SCSI host class */ + MPTFC_DRIVER, /* MPT FC host class */ + MPTSAS_DRIVER, /* MPT SAS host class */ MPTLAN_DRIVER, /* MPT LAN class */ MPTSTM_DRIVER, /* MPT SCSI target mode class */ MPTUNKNOWN_DRIVER @@ -483,6 +480,8 @@ u8 forceDv; /* 1 to force DV scheduling */ u8 noQas; /* Disable QAS for this adapter */ u8 Saf_Te; /* 1 to force all Processors as SAF-TE if Inquiry data length is too short to check for SAF-TE */ + u8 mpt_dv; /* command line option: enhanced=1, basic=0 */ + u8 mpt_pq_filter; u8 rsvd[1]; } ScsiCfgData; @@ -576,6 +575,9 @@ u8 reload_fw; /* Force a FW Reload on next reset */ u8 NBShiftFactor; /* NB Shift Factor based on Block Size (Facts) */ u8 pad1[4]; + int DoneCtx; + int TaskCtx; + int InternalCtx; struct list_head list; struct net_device *netdev; } MPT_ADAPTER; @@ -898,6 +900,10 @@ unsigned long soft_resets; /* fw/external bus resets count */ unsigned long timeouts; /* cmd timeouts */ ushort sel_timeout[MPT_MAX_FC_DEVICES]; + char *info_kbuf; + wait_queue_head_t scandv_waitq; + int scandv_wait_done; + long last_queue_full; } MPT_SCSI_HOST; /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ diff -uarN drivers/message/fusion-3.01.20/mptctl.c drivers/message/fusion/mptctl.c --- drivers/message/fusion-3.01.20/mptctl.c 2005-03-22 10:43:07.000000000 -0700 +++ drivers/message/fusion/mptctl.c 2005-03-22 16:01:30.000000000 -0700 @@ -1,40 +1,13 @@ /* * linux/drivers/message/fusion/mptctl.c - * Fusion MPT misc device (ioctl) driver. - * For use with PCI chip/adapter(s): - * LSIFC9xx/LSI409xx Fibre Channel + * mpt Ioctl driver. + * For use with LSI Logic PCI chip/adapters * running LSI Logic Fusion MPT (Message Passing Technology) firmware. * - * Credits: - * This driver would not exist if not for Alan Cox's development - * of the linux i2o driver. - * - * A special thanks to Pamela Delaney (LSI Logic) for tons of work - * and countless enhancements while adding support for the 1030 - * chip family. Pam has been instrumental in the development of - * of the 2.xx.xx series fusion drivers, and her contributions are - * far too numerous to hope to list in one place. - * - * A huge debt of gratitude is owed to David S. Miller (DaveM) - * for fixing much of the stupid and broken stuff in the early - * driver while porting to sparc64 platform. THANK YOU! - * - * A big THANKS to Eddie C. Dost for fixing the ioctl path - * and most importantly f/w download on sparc64 platform! - * (plus Eddie's other helpful hints and insights) - * - * Thanks to Arnaldo Carvalho de Melo for finding and patching - * a potential memory leak in mptctl_do_fw_download(), - * and for some kmalloc insight:-) - * - * (see also mptbase.c) - * - * Copyright (c) 1999-2004 LSI Logic Corporation - * Originally By: Steven J. Ralston, Noah Romer - * (mailto:sjralston1@netscape.net) + * Copyright (c) 1999-2005 LSI Logic Corporation * (mailto:mpt_linux_developer@lsil.com) * - * $Id: mptctl.c,v 1.63 2002/12/03 21:26:33 pdelaney Exp $ + * $Id: mptctl.c,v 1.66 2003/05/07 14:08:32 Exp $ */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* diff -uarN drivers/message/fusion-3.01.20/mptctl.h drivers/message/fusion/mptctl.h --- drivers/message/fusion-3.01.20/mptctl.h 2005-03-22 10:43:07.000000000 -0700 +++ drivers/message/fusion/mptctl.h 2005-03-22 16:01:49.000000000 -0700 @@ -5,22 +5,10 @@ * LSIFC9xx/LSI409xx Fibre Channel * running LSI Logic Fusion MPT (Message Passing Technology) firmware. * - * Credits: - * This driver would not exist if not for Alan Cox's development - * of the linux i2o driver. - * - * A huge debt of gratitude is owed to David S. Miller (DaveM) - * for fixing much of the stupid and broken stuff in the early - * driver while porting to sparc64 platform. THANK YOU! - * - * (see also mptbase.c) - * - * Copyright (c) 1999-2004 LSI Logic Corporation - * Originally By: Steven J. Ralston - * (mailto:sjralston1@netscape.net) + * Copyright (c) 1999-2005 LSI Logic Corporation * (mailto:mpt_linux_developer@lsil.com) * - * $Id: mptctl.h,v 1.13 2002/12/03 21:26:33 pdelaney Exp $ + * $Id: mptctl.h,v 1.14 2003/03/18 22:49:51 Exp $ */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* diff -uarN drivers/message/fusion-3.01.20/mptlan.c drivers/message/fusion/mptlan.c --- drivers/message/fusion-3.01.20/mptlan.c 2005-03-22 10:43:07.000000000 -0700 +++ drivers/message/fusion/mptlan.c 2005-03-22 16:02:29.000000000 -0700 @@ -1,33 +1,12 @@ /* * linux/drivers/message/fusion/mptlan.c * IP Over Fibre Channel device driver. - * For use with PCI chip/adapter(s): - * LSIFC9xx/LSI409xx Fibre Channel + * For use with LSI Logic Fibre Channel PCI chip/adapters * running LSI Logic Fusion MPT (Message Passing Technology) firmware. * - * Credits: - * This driver would not exist if not for Alan Cox's development - * of the linux i2o driver. + * Copyright (c) 2000-2005 LSI Logic Corporation * - * Special thanks goes to the I2O LAN driver people at the - * University of Helsinki, who, unbeknownst to them, provided - * the inspiration and initial structure for this driver. - * - * A huge debt of gratitude is owed to David S. Miller (DaveM) - * for fixing much of the stupid and broken stuff in the early - * driver while porting to sparc64 platform. THANK YOU! - * - * A really huge debt of gratitude is owed to Eddie C. Dost - * for gobs of hard work fixing and optimizing LAN code. - * THANK YOU! - * - * (see also mptbase.c) - * - * Copyright (c) 2000-2004 LSI Logic Corporation - * Originally By: Noah Romer - * (mailto:mpt_linux_developer@lsil.com) - * - * $Id: mptlan.c,v 1.53 2002/10/17 20:15:58 pdelaney Exp $ + * $Id: mptlan.c,v 1.55 2003/05/07 14:08:32 Exp $ */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*