Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*******************************************************************
2 * This file is part of the Emulex Linux Device Driver for *
3 * Fibre Channel Host Bus Adapters. *
4 * Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
5 * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
6 * Copyright (C) 2004-2009 Emulex. All rights reserved. *
7 * EMULEX and SLI are trademarks of Emulex. *
8 * www.broadcom.com *
9 * *
10 * This program is free software; you can redistribute it and/or *
11 * modify it under the terms of version 2 of the GNU General *
12 * Public License as published by the Free Software Foundation. *
13 * This program is distributed in the hope that it will be useful. *
14 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND *
15 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, *
16 * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE *
17 * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD *
18 * TO BE LEGALLY INVALID. See the GNU General Public License for *
19 * more details, a copy of which can be found in the file COPYING *
20 * included with this package. *
21 *******************************************************************/
22
23#define LOG_ELS 0x00000001 /* ELS events */
24#define LOG_DISCOVERY 0x00000002 /* Link discovery events */
25#define LOG_MBOX 0x00000004 /* Mailbox events */
26#define LOG_INIT 0x00000008 /* Initialization events */
27#define LOG_LINK_EVENT 0x00000010 /* Link events */
28#define LOG_NODE_VERBOSE 0x00000020 /* Node verbose events */
29#define LOG_FCP 0x00000040 /* FCP traffic history */
30#define LOG_NODE 0x00000080 /* Node table events */
31#define LOG_TEMP 0x00000100 /* Temperature sensor events */
32#define LOG_BG 0x00000200 /* BlockGuard events */
33#define LOG_MISC 0x00000400 /* Miscellaneous events */
34#define LOG_SLI 0x00000800 /* SLI events */
35#define LOG_FCP_ERROR 0x00001000 /* log errors, not underruns */
36#define LOG_LIBDFC 0x00002000 /* Libdfc events */
37#define LOG_VPORT 0x00004000 /* NPIV events */
38#define LOG_LDS_EVENT 0x00008000 /* Link Degrade Signaling events */
39#define LOG_EVENT 0x00010000 /* CT,TEMP,DUMP, logging */
40#define LOG_FIP 0x00020000 /* FIP events */
41#define LOG_FCP_UNDER 0x00040000 /* FCP underruns errors */
42#define LOG_SCSI_CMD 0x00080000 /* ALL SCSI commands */
43#define LOG_NVME 0x00100000 /* NVME general events. */
44#define LOG_NVME_DISC 0x00200000 /* NVME Discovery/Connect events. */
45#define LOG_NVME_ABTS 0x00400000 /* NVME ABTS events. */
46#define LOG_NVME_IOERR 0x00800000 /* NVME IO Error events. */
47#define LOG_RSVD1 0x01000000 /* Reserved */
48#define LOG_RSVD2 0x02000000 /* Reserved */
49#define LOG_CGN_MGMT 0x04000000 /* Congestion Mgmt events */
50#define LOG_ENCRYPTION 0x40000000 /* EDIF Encryption events. */
51#define LOG_TRACE_EVENT 0x80000000 /* Dmp the DBG log on this err */
52#define LOG_ALL_MSG 0x7fffffff /* LOG all messages */
53
54void lpfc_dmp_dbg(struct lpfc_hba *phba);
55void lpfc_dbg_print(struct lpfc_hba *phba, const char *fmt, ...);
56
57/* generate message by verbose log setting or severity */
58#define lpfc_vlog_msg(vport, level, mask, fmt, arg...) \
59{ if (((mask) & (vport)->cfg_log_verbose) || (level[1] <= '5')) \
60 dev_printk(level, &((vport)->phba->pcidev)->dev, "%d:(%d):" \
61 fmt, (vport)->phba->brd_no, vport->vpi, ##arg); }
62
63#define lpfc_log_msg(phba, level, mask, fmt, arg...) \
64do { \
65 { uint32_t log_verbose = (phba)->pport ? \
66 (phba)->pport->cfg_log_verbose : \
67 (phba)->cfg_log_verbose; \
68 if (((mask) & log_verbose) || (level[1] <= '5')) \
69 dev_printk(level, &((phba)->pcidev)->dev, "%d:" \
70 fmt, phba->brd_no, ##arg); \
71 } \
72} while (0)
73
74#define lpfc_printf_vlog(vport, level, mask, fmt, arg...) \
75do { \
76 { if (((mask) & (vport)->cfg_log_verbose) || (level[1] <= '3')) { \
77 if ((mask) & LOG_TRACE_EVENT && !(vport)->cfg_log_verbose) \
78 lpfc_dmp_dbg((vport)->phba); \
79 dev_printk(level, &((vport)->phba->pcidev)->dev, "%d:(%d):" \
80 fmt, (vport)->phba->brd_no, vport->vpi, ##arg); \
81 } else if (!(vport)->cfg_log_verbose) \
82 lpfc_dbg_print((vport)->phba, "%d:(%d):" fmt, \
83 (vport)->phba->brd_no, (vport)->vpi, ##arg); \
84 } \
85} while (0)
86
87#define lpfc_printf_log(phba, level, mask, fmt, arg...) \
88do { \
89 { uint32_t log_verbose = (phba)->pport ? \
90 (phba)->pport->cfg_log_verbose : \
91 (phba)->cfg_log_verbose; \
92 if (((mask) & log_verbose) || (level[1] <= '3')) { \
93 if ((mask) & LOG_TRACE_EVENT && !log_verbose) \
94 lpfc_dmp_dbg(phba); \
95 dev_printk(level, &((phba)->pcidev)->dev, "%d:" \
96 fmt, phba->brd_no, ##arg); \
97 } else if (!log_verbose)\
98 lpfc_dbg_print(phba, "%d:" fmt, phba->brd_no, ##arg); \
99 } \
100} while (0)