Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * Common debugging macros for use with the hisax driver | |
3 | * | |
4 | * Author Frode Isaksen | |
5 | * Copyright 2001 by Frode Isaksen <fisaksen@bewan.com> | |
6 | * 2001 by Kai Germaschewski <kai.germaschewski@gmx.de> | |
475be4d8 | 7 | * |
1da177e4 LT |
8 | * This software may be used and distributed according to the terms |
9 | * of the GNU General Public License, incorporated herein by reference. | |
10 | * | |
11 | * How to use: | |
475be4d8 | 12 | * |
1da177e4 LT |
13 | * Before including this file, you need to |
14 | * #define __debug_variable my_debug | |
15 | * where my_debug is a variable in your code which | |
16 | * determines the debug bitmask. | |
17 | * | |
18 | * If CONFIG_HISAX_DEBUG is not set, all macros evaluate to nothing | |
19 | * | |
20 | */ | |
21 | ||
22 | #ifndef __HISAX_DEBUG_H__ | |
23 | #define __HISAX_DEBUG_H__ | |
24 | ||
1da177e4 LT |
25 | |
26 | #ifdef CONFIG_HISAX_DEBUG | |
27 | ||
475be4d8 JP |
28 | #define DBG(level, format, arg...) do { \ |
29 | if (level & __debug_variable) \ | |
30 | printk(KERN_DEBUG "%s: " format "\n" , __func__ , ## arg); \ | |
31 | } while (0) | |
1da177e4 | 32 | |
475be4d8 JP |
33 | #define DBG_PACKET(level, data, count) \ |
34 | if (level & __debug_variable) dump_packet(__func__, data, count) | |
1da177e4 | 35 | |
475be4d8 JP |
36 | #define DBG_SKB(level, skb) \ |
37 | if ((level & __debug_variable) && skb) dump_packet(__func__, skb->data, skb->len) | |
1da177e4 LT |
38 | |
39 | ||
40 | static void __attribute__((unused)) | |
475be4d8 | 41 | dump_packet(const char *name, const u_char *data, int pkt_len) |
1da177e4 LT |
42 | { |
43 | #define DUMP_HDR_SIZE 20 | |
44 | #define DUMP_TLR_SIZE 8 | |
45 | if (pkt_len) { | |
475be4d8 | 46 | int i, len1, len2; |
1da177e4 | 47 | |
475be4d8 | 48 | printk(KERN_DEBUG "%s: length=%d,data=", name, pkt_len); |
1da177e4 | 49 | |
475be4d8 | 50 | if (pkt_len > DUMP_HDR_SIZE + DUMP_TLR_SIZE) { |
1da177e4 LT |
51 | len1 = DUMP_HDR_SIZE; |
52 | len2 = DUMP_TLR_SIZE; | |
53 | } else { | |
54 | len1 = pkt_len > DUMP_HDR_SIZE ? DUMP_HDR_SIZE : pkt_len; | |
475be4d8 | 55 | len2 = 0; |
1da177e4 LT |
56 | } |
57 | for (i = 0; i < len1; ++i) { | |
475be4d8 | 58 | printk("%.2x", data[i]); |
1da177e4 LT |
59 | } |
60 | if (len2) { | |
475be4d8 | 61 | printk(".."); |
1da177e4 | 62 | for (i = pkt_len-DUMP_TLR_SIZE; i < pkt_len; ++i) { |
475be4d8 | 63 | printk("%.2x", data[i]); |
1da177e4 LT |
64 | } |
65 | } | |
475be4d8 | 66 | printk("\n"); |
1da177e4 LT |
67 | } |
68 | #undef DUMP_HDR_SIZE | |
69 | #undef DUMP_TLR_SIZE | |
70 | } | |
71 | ||
72 | #else | |
73 | ||
74 | #define DBG(level, format, arg...) do {} while (0) | |
475be4d8 JP |
75 | #define DBG_PACKET(level, data, count) do {} while (0) |
76 | #define DBG_SKB(level, skb) do {} while (0) | |
1da177e4 LT |
77 | |
78 | #endif | |
79 | ||
80 | #endif |