* Macros use for debugging the driver.
 */
 
-#if  DEBUG_QLA2100
-#define DEBUG(x)       do {x;} while (0)
-#else
-#define DEBUG(x)       do {} while (0)
-#endif
+#define DEBUG(x)       do { if (extended_error_logging) { x; } } while (0)
 
 #if defined(QL_DEBUG_LEVEL_1)
 #define DEBUG1(x)      do {x;} while (0)
 #define DEBUG1(x)      do {} while (0)
 #endif
 
-#if defined(QL_DEBUG_LEVEL_2)
-#define DEBUG2(x)       do {x;} while (0)
-#define DEBUG2_3(x)     do {x;} while (0)
-#define DEBUG2_3_11(x)  do {x;} while (0)
-#define DEBUG2_9_10(x)    do {x;} while (0)
-#define DEBUG2_11(x)    do {x;} while (0)
-#define DEBUG2_13(x)    do {x;} while (0)
-#else
-#define DEBUG2(x)      do {} while (0)
-#endif
+#define DEBUG2(x)      do { if (extended_error_logging) { x; } } while (0)
+#define DEBUG2_3(x)    do { if (extended_error_logging) { x; } } while (0)
+#define DEBUG2_3_11(x) do { if (extended_error_logging) { x; } } while (0)
+#define DEBUG2_9_10(x) do { if (extended_error_logging) { x; } } while (0)
+#define DEBUG2_11(x)   do { if (extended_error_logging) { x; } } while (0)
+#define DEBUG2_13(x)   do { if (extended_error_logging) { x; } } while (0)
 
 #if defined(QL_DEBUG_LEVEL_3)
 #define DEBUG3(x)      do {x;} while (0)
-#define DEBUG2_3(x)    do {x;} while (0)
-#define DEBUG2_3_11(x) do {x;} while (0)
 #define DEBUG3_11(x)   do {x;} while (0)
 #else
 #define DEBUG3(x)      do {} while (0)
-  #if !defined(QL_DEBUG_LEVEL_2)
-  #define DEBUG2_3(x)  do {} while (0)
-  #endif
 #endif
 
 #if defined(QL_DEBUG_LEVEL_4)
 #if defined(QL_DEBUG_LEVEL_9)
 #define DEBUG9(x)       do {x;} while (0)
 #define DEBUG9_10(x)    do {x;} while (0)
-#define DEBUG2_9_10(x) do {x;} while (0)
 #else
 #define DEBUG9(x)      do {} while (0)
 #endif
 
 #if defined(QL_DEBUG_LEVEL_10)
 #define DEBUG10(x)      do {x;} while (0)
-#define DEBUG2_9_10(x) do {x;} while (0)
 #define DEBUG9_10(x)   do {x;} while (0)
 #else
 #define DEBUG10(x)     do {} while (0)
-  #if !defined(DEBUG2_9_10)
-  #define DEBUG2_9_10(x)       do {} while (0)
-  #endif
   #if !defined(DEBUG9_10)
   #define DEBUG9_10(x) do {} while (0)
   #endif
 
 #if defined(QL_DEBUG_LEVEL_11)
 #define DEBUG11(x)      do{x;} while(0)
-#if !defined(DEBUG2_11)
-#define DEBUG2_11(x)    do{x;} while(0)
-#endif
-#if !defined(DEBUG2_3_11)
-#define DEBUG2_3_11(x)  do{x;} while(0)
-#endif
 #if !defined(DEBUG3_11)
 #define DEBUG3_11(x)    do{x;} while(0)
 #endif
 #else
 #define DEBUG11(x)     do{} while(0)
-  #if !defined(QL_DEBUG_LEVEL_2)
-  #define DEBUG2_11(x) do{} while(0)
-    #if !defined(QL_DEBUG_LEVEL_3)
-    #define DEBUG2_3_11(x) do{} while(0)
-    #endif
-  #endif
   #if !defined(QL_DEBUG_LEVEL_3)
   #define DEBUG3_11(x) do{} while(0)
   #endif
 
 #if defined(QL_DEBUG_LEVEL_13)
 #define DEBUG13(x)      do {x;} while (0)
-#if !defined(DEBUG2_13)
-#define DEBUG2_13(x)    do {x;} while(0)
-#endif
 #else
 #define DEBUG13(x)     do {} while (0)
-#if !defined(QL_DEBUG_LEVEL_2)
-#define DEBUG2_13(x)   do {} while(0)
-#endif
 #endif
 
 #if defined(QL_DEBUG_LEVEL_14)
 
                "during HBA initialization.  Memory allocation requirements "
                "vary by ISP type.  Default is 1 - allocate memory.");
 
+int extended_error_logging;
+module_param(extended_error_logging, int, S_IRUGO|S_IRUSR);
+MODULE_PARM_DESC(extended_error_logging,
+               "Option to enable extended error logging, "
+               "Default is 0 - no logging. 1 - log errors.");
+
 static void qla2x00_free_device(scsi_qla_host_t *);
 
 static void qla2x00_config_dma_addressing(scsi_qla_host_t *ha);
 
        /* Derive version string. */
        strcpy(qla2x00_version_str, QLA2XXX_VERSION);
-#if DEBUG_QLA2100
-       strcat(qla2x00_version_str, "-debug");
-#endif
+       if (extended_error_logging)
+               strcat(qla2x00_version_str, "-debug");
+
        qla2xxx_transport_template =
            fc_attach_transport(&qla2xxx_transport_functions);
        if (!qla2xxx_transport_template)