Commit 9cf0666f authored by Sreekanth Reddy's avatar Sreekanth Reddy Committed by Martin K. Petersen
Browse files

scsi: mpi3mr: Add debug APIs based on logging_level bits

Add debug print functions which will print messages based on logging_level
bits enabled.

Link: https://lore.kernel.org/r/20211220141159.16117-2-sreekanth.reddy@broadcom.com


Signed-off-by: default avatarSreekanth Reddy <sreekanth.reddy@broadcom.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 657b44d6
Loading
Loading
Loading
Loading
+109 −24
Original line number Diff line number Diff line
@@ -14,27 +14,20 @@
/*
 * debug levels
 */
#define MPI3_DEBUG			0x00000001
#define MPI3_DEBUG_MSG_FRAME		0x00000002
#define MPI3_DEBUG_SG			0x00000004
#define MPI3_DEBUG_EVENTS		0x00000008
#define MPI3_DEBUG_EVENT_WORK_TASK	0x00000010
#define MPI3_DEBUG_INIT			0x00000020
#define MPI3_DEBUG_EXIT			0x00000040
#define MPI3_DEBUG_FAIL			0x00000080
#define MPI3_DEBUG_TM			0x00000100
#define MPI3_DEBUG_REPLY		0x00000200
#define MPI3_DEBUG_HANDSHAKE		0x00000400
#define MPI3_DEBUG_CONFIG		0x00000800
#define MPI3_DEBUG_DL			0x00001000
#define MPI3_DEBUG_RESET		0x00002000
#define MPI3_DEBUG_SCSI			0x00004000
#define MPI3_DEBUG_IOCTL		0x00008000
#define MPI3_DEBUG_CSMISAS		0x00010000
#define MPI3_DEBUG_SAS			0x00020000
#define MPI3_DEBUG_TRANSPORT		0x00040000
#define MPI3_DEBUG_TASK_SET_FULL	0x00080000
#define MPI3_DEBUG_TRIGGER_DIAG		0x00200000

#define MPI3_DEBUG_EVENT		0x00000001
#define MPI3_DEBUG_EVENT_WORK_TASK	0x00000002
#define MPI3_DEBUG_INIT		0x00000004
#define MPI3_DEBUG_EXIT		0x00000008
#define MPI3_DEBUG_TM			0x00000010
#define MPI3_DEBUG_RESET		0x00000020
#define MPI3_DEBUG_SCSI_ERROR		0x00000040
#define MPI3_DEBUG_REPLY		0x00000080
#define MPI3_DEBUG_IOCTL_ERROR		0x00008000
#define MPI3_DEBUG_IOCTL_INFO		0x00010000
#define MPI3_DEBUG_SCSI_INFO		0x00020000
#define MPI3_DEBUG			0x01000000
#define MPI3_DEBUG_SG			0x02000000


/*
@@ -50,11 +43,103 @@
#define ioc_info(ioc, fmt, ...) \
	pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__)

#define dprint(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_event_th(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_EVENT) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_event_bh(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_EVENT_WORK_TASK) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_init(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_INIT) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_exit(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_EXIT) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_tm(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_TM) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_reply(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_REPLY) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_reset(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_RESET) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_scsi_info(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_SCSI_INFO) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_scsi_err(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_SCSI_ERROR) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dprint_scsi_command(ioc, SCMD, LOG_LEVEL) \
	do { \
		if (ioc->logging_level & LOG_LEVEL) \
			scsi_print_command(SCMD); \
	} while (0)


#define dprint_ioctl_info(ioc, fmt, ...) \
	do { \
		if (ioc->logging_level & MPI3_DEBUG_IOCTL_INFO) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#define dbgprint(IOC, FMT, ...) \
#define dprint_ioctl_err(ioc, fmt, ...) \
	do { \
		if (IOC->logging_level & MPI3_DEBUG) \
			pr_info("%s: " FMT, (IOC)->name, ##__VA_ARGS__); \
		if (ioc->logging_level & MPI3_DEBUG_IOCTL_ERROR) \
			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
	} while (0)

#endif /* MPT3SAS_DEBUG_H_INCLUDED */

/**
 * dprint_dump_req - print message frame contents
 * @req: pointer to message frame
 * @sz: number of dwords
 */
static inline void
dprint_dump_req(void *req, int sz)
{
	int i;
	__le32 *mfp = (__le32 *)req;

	pr_info("request:\n\t");
	for (i = 0; i < sz; i++) {
		if (i && ((i % 8) == 0))
			pr_info("\n\t");
		pr_info("%08x ", le32_to_cpu(mfp[i]));
	}
	pr_info("\n");
}