changeset 10281:422e069d2f7f

6793438 Direct attach tape fails to reconnect after library reboot or cable disconnect 6845887 vfs_mount panic at boot on a X4450 / snv_115
author Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
date Fri, 07 Aug 2009 15:01:35 -0700
parents e555027c59d1
children e1d9bb38fa41
files usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_els.c usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_extern.h usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h
diffstat 6 files changed, 33 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_els.c	Fri Aug 07 17:54:27 2009 -0400
+++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_els.c	Fri Aug 07 15:01:35 2009 -0700
@@ -1523,7 +1523,11 @@
 emlxs_handle_unsol_prlo(emlxs_port_t *port, RING *rp, IOCBQ *iocbq,
     MATCHMAP *mp, uint32_t size)
 {
+#ifdef ULP_PATCH4
+#ifdef ULP_PATCH6
 	emlxs_hba_t *hba = HBA;
+#endif /* ULP_PATCH6 */
+#endif /* ULP_PATCH4 */
 	IOCB *iocb;
 	uint32_t sid;
 #ifndef ULP_PATCH4
--- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c	Fri Aug 07 17:54:27 2009 -0400
+++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c	Fri Aug 07 15:01:35 2009 -0700
@@ -213,7 +213,7 @@
 
 #ifdef MODSYM_SUPPORT
 
-static int
+extern int
 emlxs_fct_modopen()
 {
 	int err;
@@ -913,10 +913,6 @@
 	if (!hba->tgt_mode) {
 		return;
 	}
-#ifdef MODSYM_SUPPORT
-	/* Open COMSTAR */
-	(void) emlxs_fct_modopen();
-#endif /* MODSYM_SUPPORT */
 
 	/* Check if COMSTAR is present */
 	if (((void *)MODSYM(stmf_alloc) == NULL) ||
--- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c	Fri Aug 07 17:54:27 2009 -0400
+++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c	Fri Aug 07 15:01:35 2009 -0700
@@ -1114,8 +1114,30 @@
 		return (ret);
 	}
 
+#ifdef MODSYM_SUPPORT
+	/* Open SFS */
+	(void) emlxs_fca_modopen();
+#ifdef SFCT_SUPPORT
+	/* Open FCT */
+	(void) emlxs_fct_modopen();
+#endif /* SFCT_SUPPORT */
+#endif /* MODSYM_SUPPORT */
+
+	/* Setup devops for SFS */
+	MODSYM(fc_fca_init)(&emlxs_ops);
+
 	if ((ret = mod_install(&emlxs_modlinkage)) != 0) {
 		(void) ddi_soft_state_fini(&emlxs_soft_state);
+#ifdef MODSYM_SUPPORT
+		/* Close SFS */
+		emlxs_fca_modclose();
+#ifdef SFCT_SUPPORT
+		/* Close FCT */
+		emlxs_fct_modclose();
+#endif /* SFCT_SUPPORT */
+#endif /* MODSYM_SUPPORT */
+
+		return (ret);
 	}
 
 #ifdef SAN_DIAG_SUPPORT
@@ -5542,10 +5564,6 @@
 	if (!hba->ini_mode) {
 		return;
 	}
-#ifdef MODSYM_SUPPORT
-	/* Open SFS */
-	(void) emlxs_fca_modopen();
-#endif /* MODSYM_SUPPORT */
 
 	/* Check if SFS present */
 	if (((void *)MODSYM(fc_fca_init) == NULL) ||
@@ -5555,9 +5573,6 @@
 		goto failed;
 	}
 
-	/* Setup devops for SFS */
-	MODSYM(fc_fca_init)(&emlxs_ops);
-
 	/* Check if our SFS driver interface matches the current SFS stack */
 	if (MODSYM(fc_fca_attach) (hba->dip, hba->fca_tran) != DDI_SUCCESS) {
 		EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_attach_debug_msg,
--- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_extern.h	Fri Aug 07 17:54:27 2009 -0400
+++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_extern.h	Fri Aug 07 15:01:35 2009 -0700
@@ -737,6 +737,7 @@
 extern int			emlxs_fct_port_initialize(emlxs_port_t *port);
 
 #ifdef MODSYM_SUPPORT
+extern int			emlxs_fct_modopen();
 extern void			emlxs_fct_modclose();
 #endif /* MODSYM_SUPPORT */
 
--- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h	Fri Aug 07 17:54:27 2009 -0400
+++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h	Fri Aug 07 15:01:35 2009 -0700
@@ -46,7 +46,7 @@
 
 /* This patch enables the driver to auto respond to unsolicited PRLO's */
 /* This is needed because ULP is known to panic sometimes */
-#define	ULP_PATCH4
+/* #define	ULP_PATCH4 -  Obsolete */
 
 /* This patch enables the driver to fail pkt abort requests */
 #define	ULP_PATCH5
--- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h	Fri Aug 07 17:54:27 2009 -0400
+++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h	Fri Aug 07 15:01:35 2009 -0700
@@ -32,11 +32,11 @@
 extern "C" {
 #endif
 
-#define	EMLXS_VERSION		"2.40r"
-#define	EMLXS_DATE_MINUTE	"50"	/* 00-59 */
+#define	EMLXS_VERSION		"2.40s"
+#define	EMLXS_DATE_MINUTE	"15"	/* 00-59 */
 #define	EMLXS_DATE_HOUR		"10"	/* 00-23 */
-#define	EMLXS_DATE_DAY		"11"	/* 00-31 */
-#define	EMLXS_DATE_MONTH	"06"	/* 01-12 */
+#define	EMLXS_DATE_DAY		"17"	/* 00-31 */
+#define	EMLXS_DATE_MONTH	"07"	/* 01-12 */
 #define	EMLXS_DATE_YEAR		"2009"	/* YYYY  */
 
 #define	EMLXS_REVISION		EMLXS_DATE_YEAR "." EMLXS_DATE_MONTH "." \