1 /* 2 * This file is provided under a CDDLv1 license. When using or 3 * redistributing this file, you may do so under this license. 4 * In redistributing this file this license must be included 5 * and no other modification of this header file is permitted. 6 * 7 * CDDL LICENSE SUMMARY 8 * 9 * Copyright(c) 1999 - 2008 Intel Corporation. All rights reserved. 10 * 11 * The contents of this file are subject to the terms of Version 12 * 1.0 of the Common Development and Distribution License (the "License"). 13 * 14 * You should have received a copy of the License with this software. 15 * You can obtain a copy of the License at 16 * http://www.opensolaris.org/os/licensing. 17 * See the License for the specific language governing permissions 18 * and limitations under the License. 19 */ 20 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms of the CDDLv1. 24 */ 25 26 #ifndef _E1000G_DEBUG_H 27 #define _E1000G_DEBUG_H 28 29 #pragma ident "%Z%%M% %I% %E% SMI" 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 /* 36 * Debug message control 37 * Debug Levels: 38 * 0x000 - (0) no messages 39 * 0x001 - (1) Errors 40 * 0x002 - (2) Warnings 41 * 0x004 - (4) Information 42 * 0x008 - (8) Subroutine calls and control flow 43 * 0x010 - (16) I/O Data (verbose!) 44 * Variables can be set with entries in the /etc/system file with 45 * "set e1000g:e1000g_debug=<value>" 46 * "set e1000g:e1000g_log_mode=<value>" 47 * The /etc/system file is read only once at boot time, if you change 48 * it you must reboot for the change to take effect. 49 * 50 * It turns on diagnostics if DEBUG is defined (DEBUG also 51 * enables other debugging code as ASSERT statements... 52 */ 53 54 #include <sys/types.h> 55 56 #ifdef DEBUG 57 #define E1000G_DEBUG 58 #endif 59 60 /* 61 * By default it will print only to log 62 */ 63 #define E1000G_LOG_DISPLAY 0x1 64 #define E1000G_LOG_PRINT 0x2 65 #define E1000G_LOG_ALL 0x3 66 67 #ifdef E1000G_DEBUG 68 69 #define E1000G_ERRS_LEVEL 0x001 /* (1) Errors */ 70 #define E1000G_WARN_LEVEL 0x002 /* (2) Warnings */ 71 #define E1000G_INFO_LEVEL 0x004 /* (4) Information */ 72 #define E1000G_TRACE_LEVEL 0x008 /* (8) Subroutine calls */ 73 #define E1000G_VERBOSE_LEVEL 0x010 /* (16) I/O Data (verbose!) */ 74 75 #define E1000G_DEBUGLOG_0(Adapter, Level, fmt) \ 76 if (e1000g_debug) e1000g_log((Adapter), (Level), (fmt)) 77 78 #define E1000G_DEBUGLOG_1(Adapter, Level, fmt, d1) \ 79 if (e1000g_debug) e1000g_log((Adapter), (Level), (fmt), (d1)) 80 81 #define E1000G_DEBUGLOG_2(Adapter, Level, fmt, d1, d2) \ 82 if (e1000g_debug) e1000g_log((Adapter), (Level), (fmt), (d1), (d2)) 83 84 #define E1000G_DEBUGLOG_3(Adapter, Level, fmt, d1, d2, d3) \ 85 if (e1000g_debug) e1000g_log((Adapter), (Level), (fmt), (d1),\ 86 (d2), (d3)) 87 88 #define E1000G_DEBUGLOG_4(Adapter, Level, fmt, d1, d2, d3, d4) \ 89 if (e1000g_debug) e1000g_log((Adapter), (Level), (fmt), (d1),\ 90 (d2), (d3), (d4)) 91 92 #define E1000G_DEBUGLOG_5(Adapter, Level, fmt, d1, d2, d3, d4, d5) \ 93 if (e1000g_debug) e1000g_log((Adapter), (Level), (fmt), (d1),\ 94 (d2), (d3), (d4), (d5)) 95 96 #define E1000G_DEBUG_STAT_COND(val, cond) if (cond) (val)++; 97 #define E1000G_DEBUG_STAT(val) (val)++; 98 99 #else 100 101 #define E1000G_DEBUGLOG_0(Adapter, Level, fmt) 102 #define E1000G_DEBUGLOG_1(Adapter, Level, fmt, d1) 103 #define E1000G_DEBUGLOG_2(Adapter, Level, fmt, d1, d2) 104 #define E1000G_DEBUGLOG_3(Adapter, Level, fmt, d1, d2, d3) 105 #define E1000G_DEBUGLOG_4(Adapter, Level, fmt, d1, d2, d3, d4) 106 #define E1000G_DEBUGLOG_5(Adapter, Level, fmt, d1, d2, d3, d4, d5) 107 108 #define E1000G_DEBUG_STAT_COND(val, cond) 109 #define E1000G_DEBUG_STAT(val) 110 111 #endif /* E1000G_DEBUG */ 112 113 #define NAMELEN 31 114 #define BUFSZ 256 115 116 #define E1000G_STAT(val) (val)++; 117 118 void e1000g_log(void *, int, char *, ...); 119 120 #ifdef E1000G_DEBUG 121 void eeprom_dump(void *); 122 void phy_dump(void *); 123 void mac_dump(void *); 124 void pciconfig_dump(void *); 125 void pciconfig_bar(void *, uint32_t, char *); 126 #endif 127 128 #ifdef E1000G_DEBUG 129 extern int e1000g_debug; 130 #endif 131 extern int e1000g_log_mode; 132 133 #ifdef __cplusplus 134 } 135 #endif 136 137 #endif /* _E1000G_DEBUG_H */ 138