1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* Copyright 2009 QLogic Corporation */ 23 24 /* 25 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 26 * Use is subject to license terms. 27 */ 28 29 #ifndef _QL_DEBUG_H 30 #define _QL_DEBUG_H 31 32 /* 33 * ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file. 34 * 35 * *********************************************************************** 36 * * ** 37 * * NOTICE ** 38 * * COPYRIGHT (C) 1996-2009 QLOGIC CORPORATION ** 39 * * ALL RIGHTS RESERVED ** 40 * * ** 41 * *********************************************************************** 42 * 43 */ 44 45 #ifdef __cplusplus 46 extern "C" { 47 #endif 48 49 /* 50 * Driver debug definitions in makefile. 51 * 52 * QL_DEBUG_LEVEL_1=0x1 53 * QL_DEBUG_LEVEL_2=0x2 Output error msgs. 54 * QL_DEBUG_LEVEL_3=0x4 Output function trace msgs. 55 * QL_DEBUG_LEVEL_4=0x8 Output NVRAM trace msgs. 56 * QL_DEBUG_LEVEL_5=0x10 Output ring trace msgs. 57 * QL_DEBUG_LEVEL_6=0x20 Output WATCHDOG timer trace. 58 * QL_DEBUG_LEVEL_7=0x40 59 * QL_DEBUG_LEVEL_8=0x80 Output ring staturation msgs. 60 * QL_DEBUG_LEVEL_9=0x100 Output IOCTL trace. 61 * QL_DEBUG_LEVEL_10=0x200 62 * QL_DEBUG_LEVEL_11=0x400 63 * QL_DEBUG_LEVEL_12=0x1000 64 * QL_DEBUG_LEVEL_13=0x2000 65 * QL_DEBUG_LEVEL_14=0x4000 66 * QL_DEBUG_LEVEL_15=0x8000 67 */ 68 69 void ql_dump_buffer(uint8_t *, uint8_t, uint32_t); 70 void ql_el_msg(ql_adapter_state_t *, const char *, int, ...); 71 void ql_dbg_msg(const char *, int, ...); 72 int ql_flash_errlog(ql_adapter_state_t *, uint16_t, uint16_t, uint16_t, 73 uint16_t); 74 void ql_dump_el_trace_buffer(ql_adapter_state_t *); 75 76 #if (QL_DEBUG & 0xffff) 77 #define QL_DEBUG_ROUTINES 78 #define QL_BANG 79 #define QL_QUESTION 80 #define QL_CAROT 81 #else 82 #define QL_BANG "!" 83 #define QL_QUESTION "?" 84 #define QL_CAROT "^" 85 #endif 86 87 /* 88 * Macros. 89 */ 90 #define GLOBAL_EL_LOCK() mutex_enter(&ql_global_el_mutex) 91 #define GLOBAL_EL_UNLOCK() mutex_exit(&ql_global_el_mutex) 92 93 #define TRACE_BUFFER_LOCK(ha) mutex_enter(&ha->el_trace_desc->mutex) 94 #define TRACE_BUFFER_UNLOCK(ha) mutex_exit(&ha->el_trace_desc->mutex) 95 96 #define EL(ha, ...) ql_el_msg(ha, __func__, CE_CONT, __VA_ARGS__); 97 98 #define ER(s) cmn_err(CE_CONT, QL_BANG "%s", s); 99 #define ERV(s, ...) cmn_err(CE_CONT, QL_BANG s, __VA_ARGS__); 100 101 #define EL_BUFFER_RESERVE 256 102 #define DEBUG_STK_DEPTH 24 103 104 #if QL_DEBUG & 1 105 #define QL_DEBUG_LEVEL_1 106 #define QL_PRINT_1(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 107 #define QL_DUMP_1(bp, wdsize, count) \ 108 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 109 #else 110 #define QL_PRINT_1(...) 111 #define QL_DUMP_1(bp, wdsize, count) 112 #endif 113 114 #ifdef QL_DEBUG_ROUTINES 115 #define QL_DEBUG_LEVEL_2 116 #define QL_PRINT_2(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 117 #define QL_DUMP_2(bp, wdsize, count) \ 118 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 119 #else 120 #define QL_PRINT_2(...) 121 #define QL_DUMP_2(bp, wdsize, count) 122 #endif 123 124 #if QL_DEBUG & 4 125 #define QL_DEBUG_LEVEL_3 126 #define QL_PRINT_3(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 127 #define QL_DUMP_3(bp, wdsize, count) \ 128 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 129 #else 130 #define QL_PRINT_3(...) 131 #define QL_DUMP_3(bp, wdsize, count) 132 #endif 133 134 #if QL_DEBUG & 8 135 #define QL_DEBUG_LEVEL_4 136 #define QL_PRINT_4(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 137 #define QL_DUMP_4(bp, wdsize, count) \ 138 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 139 #else 140 #define QL_PRINT_4(...) 141 #define QL_DUMP_4(bp, wdsize, count) 142 #endif 143 144 #if QL_DEBUG & 0x10 145 #define QL_DEBUG_LEVEL_5 146 #define QL_PRINT_5(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 147 #define QL_DUMP_5(bp, wdsize, count) \ 148 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 149 #else 150 #define QL_PRINT_5(...) 151 #define QL_DUMP_5(bp, wdsize, count) 152 #endif 153 154 #if QL_DEBUG & 0x20 155 #define QL_DEBUG_LEVEL_6 156 #define QL_PRINT_6(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 157 #define QL_DUMP_6(bp, wdsize, count) \ 158 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 159 #else 160 #define QL_PRINT_6(...) 161 #define QL_DUMP_6(bp, wdsize, count) 162 #endif 163 164 #if QL_DEBUG & 0x40 165 #define QL_DEBUG_LEVEL_7 166 #define QL_PRINT_7(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 167 #define QL_DUMP_7(bp, wdsize, count) \ 168 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 169 #else 170 #define QL_PRINT_7(...) 171 #define QL_DUMP_7(bp, wdsize, count) 172 #endif 173 174 #if QL_DEBUG & 0x80 175 #define QL_DEBUG_LEVEL_8 176 #define QL_PRINT_8(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 177 #define QL_DUMP_8(bp, wdsize, count) \ 178 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 179 #else 180 #define QL_PRINT_8(...) 181 #define QL_DUMP_8(bp, wdsize, count) 182 #endif 183 184 #if QL_DEBUG & 0x104 185 #define QL_PRINT_9(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 186 #define QL_DUMP_9(bp, wdsize, count) \ 187 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 188 #else 189 #define QL_PRINT_9(...) 190 #define QL_DUMP_9(bp, wdsize, count) 191 #endif 192 193 #if QL_DEBUG & 0x200 194 #define QL_DEBUG_LEVEL_10 195 #define QL_PRINT_10(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 196 #define QL_DUMP_10(bp, wdsize, count) \ 197 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 198 #else 199 #define QL_PRINT_10(...) 200 #define QL_DUMP_10(bp, wdsize, count) 201 #endif 202 203 #if QL_DEBUG & 0x400 204 #define QL_DEBUG_LEVEL_11 205 #define QL_PRINT_11(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 206 #define QL_DUMP_11(bp, wdsize, count) \ 207 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 208 #else 209 #define QL_PRINT_11(...) 210 #define QL_DUMP_11(bp, wdsize, count) 211 #endif 212 213 #if QL_DEBUG & 0x800 214 #define QL_DEBUG_LEVEL_12 215 #define QL_PRINT_12(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 216 #define QL_DUMP_12(bp, wdsize, count) \ 217 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 218 #else 219 #define QL_PRINT_12(...) 220 #define QL_DUMP_12(bp, wdsize, count) 221 #endif 222 223 #if QL_DEBUG & 0x1000 224 #define QL_DEBUG_LEVEL_13 225 #define QL_PRINT_13(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 226 #define QL_DUMP_13(bp, wdsize, count) \ 227 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 228 #else 229 #define QL_PRINT_13(...) 230 #define QL_DUMP_13(bp, wdsize, count) 231 #endif 232 233 #if QL_DEBUG & 0x2000 234 #define QL_DEBUG_LEVEL_14 235 #define QL_PRINT_14(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 236 #define QL_DUMP_14(bp, wdsize, count) \ 237 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 238 #else 239 #define QL_PRINT_14(...) 240 #define QL_DUMP_14(bp, wdsize, count) 241 #endif 242 243 #if QL_DEBUG & 0x4000 244 #define QL_DEBUG_LEVEL_15 245 #define QL_PRINT_15(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 246 #define QL_DUMP_15(bp, wdsize, count) \ 247 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 248 #else 249 #define QL_PRINT_15(...) 250 #define QL_DUMP_15(bp, wdsize, count) 251 #endif 252 253 #if QL_DEBUG & 0x8000 254 #define QL_DEBUG_LEVEL_16 255 #define QL_PRINT_16(ce, ...) ql_dbg_msg(__func__, ce, __VA_ARGS__) 256 #define QL_DUMP_16(bp, wdsize, count) \ 257 ql_dump_buffer((uint8_t *)bp, (uint8_t)wdsize, (uint32_t)count) 258 #else 259 #define QL_PRINT_16(...) 260 #define QL_DUMP_16(bp, wdsize, count) 261 #endif 262 263 #ifdef __cplusplus 264 } 265 #endif 266 267 #endif /* _QL_DEBUG_H */ 268