1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _FCOE_LIBFCOE_H_ 3*4882a593Smuzhiyun #define _FCOE_LIBFCOE_H_ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun extern unsigned int libfcoe_debug_logging; 6*4882a593Smuzhiyun #define LIBFCOE_LOGGING 0x01 /* General logging, not categorized */ 7*4882a593Smuzhiyun #define LIBFCOE_FIP_LOGGING 0x02 /* FIP logging */ 8*4882a593Smuzhiyun #define LIBFCOE_TRANSPORT_LOGGING 0x04 /* FCoE transport logging */ 9*4882a593Smuzhiyun #define LIBFCOE_SYSFS_LOGGING 0x08 /* fcoe_sysfs logging */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #define LIBFCOE_CHECK_LOGGING(LEVEL, CMD) \ 12*4882a593Smuzhiyun do { \ 13*4882a593Smuzhiyun if (unlikely(libfcoe_debug_logging & LEVEL)) \ 14*4882a593Smuzhiyun do { \ 15*4882a593Smuzhiyun CMD; \ 16*4882a593Smuzhiyun } while (0); \ 17*4882a593Smuzhiyun } while (0) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define LIBFCOE_DBG(fmt, args...) \ 20*4882a593Smuzhiyun LIBFCOE_CHECK_LOGGING(LIBFCOE_LOGGING, \ 21*4882a593Smuzhiyun pr_info("libfcoe: " fmt, ##args);) 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define LIBFCOE_FIP_DBG(fip, fmt, args...) \ 24*4882a593Smuzhiyun LIBFCOE_CHECK_LOGGING(LIBFCOE_FIP_LOGGING, \ 25*4882a593Smuzhiyun pr_info("host%d: fip: " fmt, \ 26*4882a593Smuzhiyun (fip)->lp->host->host_no, ##args);) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define LIBFCOE_TRANSPORT_DBG(fmt, args...) \ 29*4882a593Smuzhiyun LIBFCOE_CHECK_LOGGING(LIBFCOE_TRANSPORT_LOGGING, \ 30*4882a593Smuzhiyun pr_info("%s: " fmt, __func__, ##args);) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define LIBFCOE_SYSFS_DBG(cdev, fmt, args...) \ 33*4882a593Smuzhiyun LIBFCOE_CHECK_LOGGING(LIBFCOE_SYSFS_LOGGING, \ 34*4882a593Smuzhiyun pr_info("ctlr_%d: " fmt, cdev->id, ##args);) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun #endif /* _FCOE_LIBFCOE_H_ */ 37