2021-05-20 20:55:23 +05:30
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Driver for Broadcom MPI3 Storage Controllers
*
2022-02-10 15:28:15 +05:30
* Copyright ( C ) 2017 - 2022 Broadcom Inc .
2021-05-20 20:55:23 +05:30
* ( mailto : mpi3mr - linuxdrv . pdl @ broadcom . com )
*
*/
# ifndef MPI3SAS_DEBUG_H_INCLUDED
# define MPI3SAS_DEBUG_H_INCLUDED
/*
* debug levels
*/
2021-12-20 19:41:35 +05:30
# 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
2021-05-20 20:55:23 +05:30
/*
* debug macros
*/
# define ioc_err(ioc, fmt, ...) \
pr_err ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ )
# define ioc_notice(ioc, fmt, ...) \
pr_notice ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ )
# define ioc_warn(ioc, fmt, ...) \
pr_warn ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ )
# define ioc_info(ioc, fmt, ...) \
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ )
2021-12-20 19:41:35 +05:30
# 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 )
2021-05-20 20:55:23 +05:30
2021-12-20 19:41:35 +05:30
# define dprint_ioctl_err(ioc, fmt, ...) \
2021-05-20 20:55:23 +05:30
do { \
2021-12-20 19:41:35 +05:30
if ( ioc - > logging_level & MPI3_DEBUG_IOCTL_ERROR ) \
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
2021-05-20 20:55:23 +05:30
} while ( 0 )
# endif /* MPT3SAS_DEBUG_H_INCLUDED */
2021-12-20 19:41:35 +05:30
/**
* 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 " ) ;
}