2021-05-20 18:25:23 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Driver for Broadcom MPI3 Storage Controllers
*
2022-02-10 12:58:15 +03:00
* Copyright ( C ) 2017 - 2022 Broadcom Inc .
2021-05-20 18:25:23 +03:00
* ( mailto : mpi3mr - linuxdrv . pdl @ broadcom . com )
*
*/
# ifndef MPI3SAS_DEBUG_H_INCLUDED
# define MPI3SAS_DEBUG_H_INCLUDED
/*
* debug levels
*/
2021-12-20 17:11:35 +03:00
# 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
2022-08-04 16:12:12 +03:00
# define MPI3_DEBUG_CFG_ERROR 0x00000100
# define MPI3_DEBUG_TRANSPORT_ERROR 0x00000200
2022-04-30 00:16:35 +03:00
# define MPI3_DEBUG_BSG_ERROR 0x00008000
# define MPI3_DEBUG_BSG_INFO 0x00010000
2021-12-20 17:11:35 +03:00
# define MPI3_DEBUG_SCSI_INFO 0x00020000
2022-08-04 16:12:12 +03:00
# define MPI3_DEBUG_CFG_INFO 0x00040000
# define MPI3_DEBUG_TRANSPORT_INFO 0x00080000
2021-12-20 17:11:35 +03:00
# define MPI3_DEBUG 0x01000000
# define MPI3_DEBUG_SG 0x02000000
2021-05-20 18:25:23 +03:00
/*
* 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 17:11:35 +03:00
# 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 )
2022-04-30 00:16:35 +03:00
# define dprint_bsg_info(ioc, fmt, ...) \
2021-12-20 17:11:35 +03:00
do { \
2022-04-30 00:16:35 +03:00
if ( ioc - > logging_level & MPI3_DEBUG_BSG_INFO ) \
2021-12-20 17:11:35 +03:00
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
} while ( 0 )
2021-05-20 18:25:23 +03:00
2022-04-30 00:16:35 +03:00
# define dprint_bsg_err(ioc, fmt, ...) \
2021-05-20 18:25:23 +03:00
do { \
2022-04-30 00:16:35 +03:00
if ( ioc - > logging_level & MPI3_DEBUG_BSG_ERROR ) \
2021-12-20 17:11:35 +03:00
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
2021-05-20 18:25:23 +03:00
} while ( 0 )
2022-08-04 16:12:12 +03:00
# define dprint_cfg_info(ioc, fmt, ...) \
do { \
if ( ioc - > logging_level & MPI3_DEBUG_CFG_INFO ) \
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
} while ( 0 )
# define dprint_cfg_err(ioc, fmt, ...) \
do { \
if ( ioc - > logging_level & MPI3_DEBUG_CFG_ERROR ) \
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
} while ( 0 )
# define dprint_transport_info(ioc, fmt, ...) \
do { \
if ( ioc - > logging_level & MPI3_DEBUG_TRANSPORT_INFO ) \
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
} while ( 0 )
# define dprint_transport_err(ioc, fmt, ...) \
do { \
if ( ioc - > logging_level & MPI3_DEBUG_TRANSPORT_ERROR ) \
pr_info ( " %s: " fmt , ( ioc ) - > name , # # __VA_ARGS__ ) ; \
} while ( 0 )
2021-05-20 18:25:23 +03:00
# endif /* MPT3SAS_DEBUG_H_INCLUDED */
2021-12-20 17:11:35 +03:00
2022-04-30 00:16:37 +03:00
/**
* dprint_dump - print contents of a memory buffer
* @ req : Pointer to a memory buffer
* @ sz : Memory buffer size
* @ namestr : Name String to identify the buffer type
*/
static inline void
dprint_dump ( void * req , int sz , const char * name_string )
{
int i ;
__le32 * mfp = ( __le32 * ) req ;
sz = sz / 4 ;
if ( name_string )
pr_info ( " %s: \n \t " , name_string ) ;
else
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 " ) ;
}
2021-12-20 17:11:35 +03:00
/**
* 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 " ) ;
}