Path: blob/main/sys/ofed/drivers/infiniband/ulp/sdp/sdp_dbg.h
39566 views
#ifndef _SDP_DBG_H_1#define _SDP_DBG_H_23#define SDPSTATS_ON45//#define GETNSTIMEODAY_SUPPORTED67#define _sdp_printk(func, line, level, sk, format, arg...) \8do { \9printk(level "%s:%d %p sdp_sock(%d:%d %d:%d): " format "\n", \10func, line, sk ? sdp_sk(sk) : NULL, \11curproc->p_pid, PCPU_GET(cpuid), \12(sk) && sdp_sk(sk) ? ntohs(sdp_sk(sk)->lport) : -1, \13(sk) && sdp_sk(sk) ? ntohs(sdp_sk(sk)->fport) : -1, ## arg); \14} while (0)15#define sdp_printk(level, sk, format, arg...) \16_sdp_printk(__func__, __LINE__, level, sk, format, ## arg)17#define sdp_warn(sk, format, arg...) \18sdp_printk(KERN_WARNING, sk, format , ## arg)1920#define SDP_MODPARAM_SINT(var, def_val, msg) \21static int var = def_val; \22module_param_named(var, var, int, 0644); \23MODULE_PARM_DESC(var, msg " [" #def_val "]"); \2425#define SDP_MODPARAM_INT(var, def_val, msg) \26int var = def_val; \27module_param_named(var, var, int, 0644); \28MODULE_PARM_DESC(var, msg " [" #def_val "]"); \2930#ifdef SDP_PROFILING31struct mbuf;32struct sdpprf_log {33int idx;34int pid;35int cpu;36int sk_num;37int sk_dport;38struct mbuf *mb;39char msg[256];4041unsigned long long time;4243const char *func;44int line;45};4647#define SDPPRF_LOG_SIZE 0x20000 /* must be a power of 2 */4849extern struct sdpprf_log sdpprf_log[SDPPRF_LOG_SIZE];50extern int sdpprf_log_count;5152#ifdef GETNSTIMEODAY_SUPPORTED53static inline unsigned long long current_nsec(void)54{55struct timespec tv;56getnstimeofday(&tv);57return tv.tv_sec * NSEC_PER_SEC + tv.tv_nsec;58}59#else60#define current_nsec() jiffies_to_usecs(jiffies)61#endif6263#define sdp_prf1(sk, s, format, arg...) ({ \64struct sdpprf_log *l = \65&sdpprf_log[sdpprf_log_count++ & (SDPPRF_LOG_SIZE - 1)]; \66preempt_disable(); \67l->idx = sdpprf_log_count - 1; \68l->pid = current->pid; \69l->sk_num = (sk) ? inet_sk(sk)->num : -1; \70l->sk_dport = (sk) ? ntohs(inet_sk(sk)->dport) : -1; \71l->cpu = smp_processor_id(); \72l->mb = s; \73snprintf(l->msg, sizeof(l->msg) - 1, format, ## arg); \74l->time = current_nsec(); \75l->func = __func__; \76l->line = __LINE__; \77preempt_enable(); \781; \79})80//#define sdp_prf(sk, s, format, arg...)81#define sdp_prf(sk, s, format, arg...) sdp_prf1(sk, s, format, ## arg)8283#else84#define sdp_prf1(sk, s, format, arg...)85#define sdp_prf(sk, s, format, arg...)86#endif8788#ifdef CONFIG_INFINIBAND_SDP_DEBUG89extern int sdp_debug_level;9091#define sdp_dbg(sk, format, arg...) \92do { \93if (sdp_debug_level > 0) \94sdp_printk(KERN_WARNING, sk, format , ## arg); \95} while (0)9697#else /* CONFIG_INFINIBAND_SDP_DEBUG */98#define sdp_dbg(priv, format, arg...) \99do { (void) (priv); } while (0)100#define sock_ref(sk, msg, sock_op) sock_op(sk)101#endif /* CONFIG_INFINIBAND_SDP_DEBUG */102103#ifdef CONFIG_INFINIBAND_SDP_DEBUG_DATA104105extern int sdp_data_debug_level;106#define sdp_dbg_data(sk, format, arg...) \107do { \108if (sdp_data_debug_level & 0x2) \109sdp_printk(KERN_WARNING, sk, format , ## arg); \110} while (0)111#define SDP_DUMP_PACKET(sk, str, mb, h) \112do { \113if (sdp_data_debug_level & 0x1) \114dump_packet(sk, str, mb, h); \115} while (0)116#else117#define sdp_dbg_data(priv, format, arg...)118#define SDP_DUMP_PACKET(sk, str, mb, h)119#endif120121#define SOCK_REF_RESET "RESET"122#define SOCK_REF_ALIVE "ALIVE" /* sock_alloc -> destruct_sock */123#define SOCK_REF_CLONE "CLONE"124#define SOCK_REF_CMA "CMA" /* sdp_cma_handler() is expected to be invoked */125#define SOCK_REF_SEQ "SEQ" /* during proc read */126#define SOCK_REF_DREQ_TO "DREQ_TO" /* dreq timeout is pending */127#define SOCK_REF_ZCOPY "ZCOPY" /* zcopy send in process */128#define SOCK_REF_RDMA_RD "RDMA_RD" /* RDMA read in process */129130#define sock_hold(sk, msg) sock_ref(sk, msg, sock_hold)131#define sock_put(sk, msg) sock_ref(sk, msg, sock_put)132#define __sock_put(sk, msg) sock_ref(sk, msg, __sock_put)133134#define ENUM2STR(e) [e] = #e135136static inline char *sdp_state_str(int state)137{138static char *state2str[] = {139ENUM2STR(TCPS_ESTABLISHED),140ENUM2STR(TCPS_SYN_SENT),141ENUM2STR(TCPS_SYN_RECEIVED),142ENUM2STR(TCPS_FIN_WAIT_1),143ENUM2STR(TCPS_FIN_WAIT_2),144ENUM2STR(TCPS_TIME_WAIT),145ENUM2STR(TCPS_CLOSED),146ENUM2STR(TCPS_CLOSE_WAIT),147ENUM2STR(TCPS_LAST_ACK),148ENUM2STR(TCPS_LISTEN),149ENUM2STR(TCPS_CLOSING),150};151152if (state < 0 || state >= ARRAY_SIZE(state2str))153return "unknown";154155return state2str[state];156}157158struct sdp_bsdh;159#ifdef CONFIG_INFINIBAND_SDP_DEBUG_DATA160void _dump_packet(const char *func, int line, struct socket *sk, char *str,161struct mbuf *mb, const struct sdp_bsdh *h);162#define dump_packet(sk, str, mb, h) \163_dump_packet(__func__, __LINE__, sk, str, mb, h)164#endif165166#endif167168169