2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
6 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License (GPL) Version 2 as
10 * published by the Free Software Foundation
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
19 * bfa_log.h BFA log library data structure and function definition
25 #include <bfa_os_inc.h>
26 #include <defs/bfa_defs_status.h>
27 #include <defs/bfa_defs_aen.h>
30 * BFA log module definition
32 * To create a new module id:
33 * Add a #define at the end of the list below. Select a value for your
34 * definition so that it is one (1) greater than the previous
35 * definition. Modify the definition of BFA_LOG_MODULE_ID_MAX to become
36 * your new definition.
37 * Should have no gaps in between the values because this is used in arrays.
38 * IMPORTANT: AEN_IDs must be at the begining, otherwise update bfa_defs_aen.h
41 enum bfa_log_module_id
{
42 BFA_LOG_UNUSED_ID
= 0,
45 BFA_LOG_AEN_MIN
= BFA_LOG_UNUSED_ID
,
47 BFA_LOG_AEN_ID_ADAPTER
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_ADAPTER
,/* 1 */
48 BFA_LOG_AEN_ID_PORT
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_PORT
, /* 2 */
49 BFA_LOG_AEN_ID_LPORT
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_LPORT
, /* 3 */
50 BFA_LOG_AEN_ID_RPORT
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_RPORT
, /* 4 */
51 BFA_LOG_AEN_ID_ITNIM
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_ITNIM
, /* 5 */
52 BFA_LOG_AEN_ID_TIN
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_TIN
, /* 6 */
53 BFA_LOG_AEN_ID_IPFC
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_IPFC
, /* 7 */
54 BFA_LOG_AEN_ID_AUDIT
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_AUDIT
, /* 8 */
55 BFA_LOG_AEN_ID_IOC
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_IOC
, /* 9 */
56 BFA_LOG_AEN_ID_ETHPORT
= BFA_LOG_AEN_MIN
+ BFA_AEN_CAT_ETHPORT
,/* 10 */
58 BFA_LOG_AEN_MAX
= BFA_LOG_AEN_ID_ETHPORT
,
61 BFA_LOG_MODULE_ID_MIN
= BFA_LOG_AEN_MAX
,
63 BFA_LOG_FW_ID
= BFA_LOG_MODULE_ID_MIN
+ 1,
64 BFA_LOG_HAL_ID
= BFA_LOG_MODULE_ID_MIN
+ 2,
65 BFA_LOG_FCS_ID
= BFA_LOG_MODULE_ID_MIN
+ 3,
66 BFA_LOG_WDRV_ID
= BFA_LOG_MODULE_ID_MIN
+ 4,
67 BFA_LOG_LINUX_ID
= BFA_LOG_MODULE_ID_MIN
+ 5,
68 BFA_LOG_SOLARIS_ID
= BFA_LOG_MODULE_ID_MIN
+ 6,
70 BFA_LOG_MODULE_ID_MAX
= BFA_LOG_SOLARIS_ID
,
72 /* Not part of any arrays */
73 BFA_LOG_MODULE_ID_ALL
= BFA_LOG_MODULE_ID_MAX
+ 1,
74 BFA_LOG_AEN_ALL
= BFA_LOG_MODULE_ID_MAX
+ 2,
75 BFA_LOG_DRV_ALL
= BFA_LOG_MODULE_ID_MAX
+ 3,
79 * BFA log catalog name
81 #define BFA_LOG_CAT_NAME "BFA"
84 * bfa log severity values
86 enum bfa_log_severity
{
93 BFA_LOG_LEVEL_MAX
= BFA_LOG_NONE
96 #define BFA_LOG_MODID_OFFSET 16
99 struct bfa_log_msgdef_s
{
100 u32 msg_id
; /* message id */
101 int attributes
; /* attributes */
102 int severity
; /* severity level */
106 /* msg format string */
107 int arg_type
; /* argument type */
108 int arg_num
; /* number of argument */
112 * supported argument type
114 enum bfa_log_arg_type
{
115 BFA_LOG_S
= 0, /* string */
116 BFA_LOG_D
, /* decimal */
117 BFA_LOG_I
, /* integer */
118 BFA_LOG_O
, /* oct number */
119 BFA_LOG_U
, /* unsigned integer */
120 BFA_LOG_X
, /* hex number */
121 BFA_LOG_F
, /* floating */
122 BFA_LOG_C
, /* character */
123 BFA_LOG_L
, /* double */
124 BFA_LOG_P
/* pointer */
127 #define BFA_LOG_ARG_TYPE 2
128 #define BFA_LOG_ARG0 (0 * BFA_LOG_ARG_TYPE)
129 #define BFA_LOG_ARG1 (1 * BFA_LOG_ARG_TYPE)
130 #define BFA_LOG_ARG2 (2 * BFA_LOG_ARG_TYPE)
131 #define BFA_LOG_ARG3 (3 * BFA_LOG_ARG_TYPE)
133 #define BFA_LOG_GET_MOD_ID(msgid) ((msgid >> BFA_LOG_MODID_OFFSET) & 0xff)
134 #define BFA_LOG_GET_MSG_IDX(msgid) (msgid & 0xffff)
135 #define BFA_LOG_GET_MSG_ID(msgdef) ((msgdef)->msg_id)
136 #define BFA_LOG_GET_MSG_FMT_STRING(msgdef) ((msgdef)->message)
137 #define BFA_LOG_GET_SEVERITY(msgdef) ((msgdef)->severity)
142 #define BFA_LOG_ATTR_NONE 0
143 #define BFA_LOG_ATTR_AUDIT 1
144 #define BFA_LOG_ATTR_LOG 2
145 #define BFA_LOG_ATTR_FFDC 4
147 #define BFA_LOG_CREATE_ID(msw, lsw) \
148 (((u32)msw << BFA_LOG_MODID_OFFSET) | lsw)
150 struct bfa_log_mod_s
;
155 typedef void (*bfa_log_cb_t
)(struct bfa_log_mod_s
*log_mod
, u32 msg_id
,
156 const char *format
, ...);
159 struct bfa_log_mod_s
{
160 char instance_info
[BFA_STRING_32
]; /* instance info */
161 int log_level
[BFA_LOG_MODULE_ID_MAX
+ 1];
162 /* log level for modules */
163 bfa_log_cb_t cbfn
; /* callback function */
166 extern int bfa_log_init(struct bfa_log_mod_s
*log_mod
,
167 char *instance_name
, bfa_log_cb_t cbfn
);
168 extern int bfa_log(struct bfa_log_mod_s
*log_mod
, u32 msg_id
, ...);
169 extern bfa_status_t
bfa_log_set_level(struct bfa_log_mod_s
*log_mod
,
170 int mod_id
, enum bfa_log_severity log_level
);
171 extern bfa_status_t
bfa_log_set_level_all(struct bfa_log_mod_s
*log_mod
,
172 enum bfa_log_severity log_level
);
173 extern bfa_status_t
bfa_log_set_level_aen(struct bfa_log_mod_s
*log_mod
,
174 enum bfa_log_severity log_level
);
175 extern enum bfa_log_severity
bfa_log_get_level(struct bfa_log_mod_s
*log_mod
,
177 extern enum bfa_log_severity
bfa_log_get_msg_level(
178 struct bfa_log_mod_s
*log_mod
, u32 msg_id
);
180 * array of messages generated from xml files
182 extern struct bfa_log_msgdef_s bfa_log_msg_array
[];