xref: /dpdk/drivers/net/sfc/sfc_log.h (revision df47324b6022119e9ce3774795ddb40446762895)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  *
3  * Copyright(c) 2019-2021 Xilinx, Inc.
4  * Copyright(c) 2016-2019 Solarflare Communications Inc.
5  *
6  * This software was jointly developed between OKTET Labs (under contract
7  * for Solarflare) and Solarflare Communications, Inc.
8  */
9 
10 #ifndef _SFC_LOG_H_
11 #define _SFC_LOG_H_
12 
13 /** Generic driver log type */
14 extern int sfc_logtype_driver;
15 
16 /** Log PMD generic message, add a prefix and a line break */
17 #define SFC_GENERIC_LOG(level, ...) \
18 	rte_log(RTE_LOG_ ## level, sfc_logtype_driver,			\
19 		RTE_FMT("PMD: " RTE_FMT_HEAD(__VA_ARGS__ ,) "\n",	\
20 			RTE_FMT_TAIL(__VA_ARGS__ ,)))
21 
22 /** Name prefix for the per-device log type used to report basic information */
23 #define SFC_LOGTYPE_MAIN_STR	RTE_STR(RTE_LOG_DEFAULT_LOGTYPE) ".main"
24 
25 /** Device MCDI log type name prefix */
26 #define SFC_LOGTYPE_MCDI_STR	RTE_STR(RTE_LOG_DEFAULT_LOGTYPE) ".mcdi"
27 
28 #define SFC_LOG_PREFIX_MAX	32
29 
30 /* Log PMD message, automatically add prefix and \n */
31 #define SFC_LOG(sas, level, type, ...) \
32 	do {								\
33 		const struct sfc_adapter_shared *_sas = (sas);		\
34 									\
35 		rte_log(level, type,					\
36 			RTE_FMT("%s" RTE_FMT_HEAD(__VA_ARGS__ ,) "\n",	\
37 				_sas->log_prefix,			\
38 				RTE_FMT_TAIL(__VA_ARGS__,)));		\
39 	} while (0)
40 
41 #define sfc_err(sa, ...) \
42 	do {								\
43 		const struct sfc_adapter *_sa = (sa);			\
44 									\
45 		SFC_LOG(_sa->priv.shared, RTE_LOG_ERR,			\
46 			_sa->priv.logtype_main, __VA_ARGS__);		\
47 	} while (0)
48 
49 #define sfc_warn(sa, ...) \
50 	do {								\
51 		const struct sfc_adapter *_sa = (sa);			\
52 									\
53 		SFC_LOG(_sa->priv.shared, RTE_LOG_WARNING,		\
54 			_sa->priv.logtype_main, __VA_ARGS__);		\
55 	} while (0)
56 
57 #define sfc_notice(sa, ...) \
58 	do {								\
59 		const struct sfc_adapter *_sa = (sa);			\
60 									\
61 		SFC_LOG(_sa->priv.shared, RTE_LOG_NOTICE,		\
62 			_sa->priv.logtype_main, __VA_ARGS__);		\
63 	} while (0)
64 
65 #define sfc_info(sa, ...) \
66 	do {								\
67 		const struct sfc_adapter *_sa = (sa);			\
68 									\
69 		SFC_LOG(_sa->priv.shared, RTE_LOG_INFO,			\
70 			_sa->priv.logtype_main, __VA_ARGS__);		\
71 	} while (0)
72 
73 #define sfc_dbg(sa, ...) \
74 	do {								\
75 		const struct sfc_adapter *_sa = (sa);			\
76 									\
77 		SFC_LOG(_sa->priv.shared, RTE_LOG_DEBUG,		\
78 			_sa->priv.logtype_main, __VA_ARGS__);		\
79 	} while (0)
80 
81 #define sfc_log_init(sa, ...) \
82 	do {								\
83 		const struct sfc_adapter *_sa = (sa);			\
84 									\
85 		SFC_LOG(_sa->priv.shared, RTE_LOG_INFO,			\
86 			_sa->priv.logtype_main,				\
87 			RTE_FMT("%s(): "				\
88 				RTE_FMT_HEAD(__VA_ARGS__ ,),		\
89 				__func__,				\
90 				RTE_FMT_TAIL(__VA_ARGS__ ,)));		\
91 	} while (0)
92 
93 
94 #endif /* _SFC_LOG_H_ */
95