Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *  linux/drivers/message/fusion/mptdebug.h
  3  *      For use with LSI PCI chip/adapter(s)
  4  *      running LSI Fusion MPT (Message Passing Technology) firmware.
  5  *
  6  *  Copyright (c) 1999-2008 LSI Corporation
  7  *  (mailto:DL-MPTFusionLinux@lsi.com)
  8  *
  9  */
 10 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 11 
 12 #ifndef MPTDEBUG_H_INCLUDED
 13 #define MPTDEBUG_H_INCLUDED
 14 
 15 /*
 16  * debug level can be programmed on the fly via SysFS (hex values)
 17  *
 18  * Example:  (programming for MPT_DEBUG_EVENTS on host 5)
 19  *
 20  * echo 8 > /sys/class/scsi_host/host5/debug_level
 21  *
 22  * --------------------------------------------------------
 23  * mpt_debug_level - command line parameter
 24  * this allow enabling debug at driver load time (for all iocs)
 25  *
 26  * Example  (programming for MPT_DEBUG_EVENTS)
 27  *
 28  * insmod mptbase.ko mpt_debug_level=8
 29  *
 30  * --------------------------------------------------------
 31  * CONFIG_FUSION_LOGGING - enables compiling debug into driver
 32  * this can be enabled in the driver Makefile
 33  *
 34  *
 35  * --------------------------------------------------------
 36  * Please note most debug prints are set to logging priority = debug
 37  * This is the lowest level, and most verbose.  Please refer to manual
 38  * pages for syslogd or syslogd-ng on how to configure this.
 39  */
 40 
 41 #define MPT_DEBUG                       0x00000001
 42 #define MPT_DEBUG_MSG_FRAME             0x00000002
 43 #define MPT_DEBUG_SG                    0x00000004
 44 #define MPT_DEBUG_EVENTS                0x00000008
 45 #define MPT_DEBUG_VERBOSE_EVENTS        0x00000010
 46 #define MPT_DEBUG_INIT                  0x00000020
 47 #define MPT_DEBUG_EXIT                  0x00000040
 48 #define MPT_DEBUG_FAIL                  0x00000080
 49 #define MPT_DEBUG_TM                    0x00000100
 50 #define MPT_DEBUG_DV                    0x00000200
 51 #define MPT_DEBUG_REPLY                 0x00000400
 52 #define MPT_DEBUG_HANDSHAKE             0x00000800
 53 #define MPT_DEBUG_CONFIG                0x00001000
 54 #define MPT_DEBUG_DL                    0x00002000
 55 #define MPT_DEBUG_RESET                 0x00008000
 56 #define MPT_DEBUG_SCSI                  0x00010000
 57 #define MPT_DEBUG_IOCTL                 0x00020000
 58 #define MPT_DEBUG_FC                    0x00080000
 59 #define MPT_DEBUG_SAS                   0x00100000
 60 #define MPT_DEBUG_SAS_WIDE              0x00200000
 61 #define MPT_DEBUG_36GB_MEM              0x00400000
 62 
 63 /*
 64  * CONFIG_FUSION_LOGGING - enabled in Kconfig
 65  */
 66 
 67 #ifdef CONFIG_FUSION_LOGGING
 68 #define MPT_CHECK_LOGGING(IOC, CMD, BITS)                       \
 69 {                                                               \
 70         if (IOC->debug_level & BITS)                            \
 71                 CMD;                                            \
 72 }
 73 #else
 74 #define MPT_CHECK_LOGGING(IOC, CMD, BITS)
 75 #endif
 76 
 77 
 78 /*
 79  * debug macros
 80  */
 81 
 82 #define dprintk(IOC, CMD)                       \
 83         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG)
 84 
 85 #define dsgprintk(IOC, CMD)                     \
 86         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SG)
 87 
 88 #define devtprintk(IOC, CMD)                    \
 89         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_EVENTS)
 90 
 91 #define devtverboseprintk(IOC, CMD)             \
 92         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_VERBOSE_EVENTS)
 93 
 94 #define dinitprintk(IOC, CMD)                   \
 95         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_INIT)
 96 
 97 #define dexitprintk(IOC, CMD)                   \
 98         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_EXIT)
 99 
100 #define dfailprintk(IOC, CMD)                   \
101         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_FAIL)
102 
103 #define dtmprintk(IOC, CMD)                     \
104         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_TM)
105 
106 #define ddvprintk(IOC, CMD)                     \
107         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_DV)
108 
109 #define dreplyprintk(IOC, CMD)                  \
110         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_REPLY)
111 
112 #define dhsprintk(IOC, CMD)                     \
113         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_HANDSHAKE)
114 
115 #define dcprintk(IOC, CMD)                      \
116         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_CONFIG)
117 
118 #define ddlprintk(IOC, CMD)                     \
119         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_DL)
120 
121 #define drsprintk(IOC, CMD)                     \
122         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_RESET)
123 
124 #define dsprintk(IOC, CMD)                      \
125         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SCSI)
126 
127 #define dctlprintk(IOC, CMD)                    \
128         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_IOCTL)
129 
130 #define dfcprintk(IOC, CMD)                     \
131         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_FC)
132 
133 #define dsasprintk(IOC, CMD)                    \
134         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SAS)
135 
136 #define dsaswideprintk(IOC, CMD)                \
137         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SAS_WIDE)
138 
139 #define d36memprintk(IOC, CMD)          \
140         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_36GB_MEM)
141 
142 
143 /*
144  * Verbose logging
145  */
146 #if defined(MPT_DEBUG_VERBOSE) && defined(CONFIG_FUSION_LOGGING)
147 static inline void
148 DBG_DUMP_FW_DOWNLOAD(MPT_ADAPTER *ioc, u32  *mfp, int numfrags)
149 {
150         int i;
151 
152         if (!(ioc->debug_level & MPT_DEBUG))
153                 return;
154         printk(KERN_DEBUG "F/W download request:\n");
155         for (i=0; i < 7+numfrags*2; i++)
156                 printk(" %08x", le32_to_cpu(mfp[i]));
157         printk("\n");
158 }
159 
160 static inline void
161 DBG_DUMP_PUT_MSG_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
162 {
163         int      ii, n;
164 
165         if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
166                 return;
167         printk(KERN_DEBUG "%s: About to Put msg frame @ %p:\n",
168                 ioc->name, mfp);
169         n = ioc->req_sz/4 - 1;
170         while (mfp[n] == 0)
171                 n--;
172         for (ii=0; ii<=n; ii++) {
173                 if (ii && ((ii%8)==0))
174                         printk("\n");
175                 printk(" %08x", le32_to_cpu(mfp[ii]));
176         }
177         printk("\n");
178 }
179 
180 static inline void
181 DBG_DUMP_FW_REQUEST_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
182 {
183         int  i, n;
184 
185         if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
186                 return;
187         n = 10;
188         printk(KERN_INFO " ");
189         for (i = 0; i < n; i++)
190                 printk(" %08x", le32_to_cpu(mfp[i]));
191         printk("\n");
192 }
193 
194 static inline void
195 DBG_DUMP_REQUEST_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
196 {
197         int  i, n;
198 
199         if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
200                 return;
201         n = 24;
202         for (i=0; i<n; i++) {
203                 if (i && ((i%8)==0))
204                         printk("\n");
205                 printk("%08x ", le32_to_cpu(mfp[i]));
206         }
207         printk("\n");
208 }
209 
210 static inline void
211 DBG_DUMP_REPLY_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
212 {
213         int  i, n;
214 
215         if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
216                 return;
217         n = (le32_to_cpu(mfp[0]) & 0x00FF0000) >> 16;
218         printk(KERN_INFO " ");
219         for (i=0; i<n; i++)
220                 printk(" %08x", le32_to_cpu(mfp[i]));
221         printk("\n");
222 }
223 
224 static inline void
225 DBG_DUMP_REQUEST_FRAME_HDR(MPT_ADAPTER *ioc, u32 *mfp)
226 {
227         int  i, n;
228 
229         if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
230                 return;
231         n = 3;
232         printk(KERN_INFO " ");
233         for (i=0; i<n; i++)
234                 printk(" %08x", le32_to_cpu(mfp[i]));
235         printk("\n");
236 }
237 
238 static inline void
239 DBG_DUMP_TM_REQUEST_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
240 {
241         int  i, n;
242 
243         if (!(ioc->debug_level & MPT_DEBUG_TM))
244                 return;
245         n = 13;
246         printk(KERN_DEBUG "TM_REQUEST:\n");
247         for (i=0; i<n; i++) {
248                 if (i && ((i%8)==0))
249                         printk("\n");
250                 printk("%08x ", le32_to_cpu(mfp[i]));
251         }
252         printk("\n");
253 }
254 
255 static inline void
256 DBG_DUMP_TM_REPLY_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
257 {
258         int  i, n;
259 
260         if (!(ioc->debug_level & MPT_DEBUG_TM))
261                 return;
262         n = (le32_to_cpu(mfp[0]) & 0x00FF0000) >> 16;
263         printk(KERN_DEBUG "TM_REPLY MessageLength=%d:\n", n);
264         for (i=0; i<n; i++) {
265                 if (i && ((i%8)==0))
266                         printk("\n");
267                 printk(" %08x", le32_to_cpu(mfp[i]));
268         }
269         printk("\n");
270 }
271 
272 #define dmfprintk(IOC, CMD)                     \
273         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_MSG_FRAME)
274 
275 # else /* ifdef MPT_DEBUG_MF */
276 
277 #define DBG_DUMP_FW_DOWNLOAD(IOC, mfp, numfrags)
278 #define DBG_DUMP_PUT_MSG_FRAME(IOC, mfp)
279 #define DBG_DUMP_FW_REQUEST_FRAME(IOC, mfp)
280 #define DBG_DUMP_REQUEST_FRAME(IOC, mfp)
281 #define DBG_DUMP_REPLY_FRAME(IOC, mfp)
282 #define DBG_DUMP_REQUEST_FRAME_HDR(IOC, mfp)
283 #define DBG_DUMP_TM_REQUEST_FRAME(IOC, mfp)
284 #define DBG_DUMP_TM_REPLY_FRAME(IOC, mfp)
285 
286 #define dmfprintk(IOC, CMD)                     \
287         MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_MSG_FRAME)
288 
289 #endif /* defined(MPT_DEBUG_VERBOSE) && defined(CONFIG_FUSION_LOGGING) */
290 
291 #endif /* ifndef MPTDEBUG_H_INCLUDED */
292 
  This page was automatically generated by the LXR engine.