0001
0002
0003
0004
0005
0006 #ifndef IOSM_IPC_TRACE_H
0007 #define IOSM_IPC_TRACE_H
0008
0009 #include <linux/debugfs.h>
0010 #include <linux/relay.h>
0011
0012 #include "iosm_ipc_chnl_cfg.h"
0013 #include "iosm_ipc_imem_ops.h"
0014
0015
0016
0017
0018
0019
0020 enum trace_ctrl_mode {
0021 TRACE_DISABLE = 0,
0022 TRACE_ENABLE,
0023 };
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 struct iosm_trace {
0038 struct rchan *ipc_rchan;
0039 struct dentry *ctrl_file;
0040 struct iosm_imem *ipc_imem;
0041 struct device *dev;
0042 struct ipc_mem_channel *channel;
0043 enum ipc_channel_id chl_id;
0044 struct mutex trc_mutex;
0045 enum trace_ctrl_mode mode;
0046 };
0047
0048 #ifdef CONFIG_WWAN_DEBUGFS
0049
0050 static inline bool ipc_is_trace_channel(struct iosm_imem *ipc_mem, u16 chl_id)
0051 {
0052 return ipc_mem->trace && ipc_mem->trace->chl_id == chl_id;
0053 }
0054
0055 struct iosm_trace *ipc_trace_init(struct iosm_imem *ipc_imem);
0056 void ipc_trace_deinit(struct iosm_trace *ipc_trace);
0057 void ipc_trace_port_rx(struct iosm_imem *ipc_imem, struct sk_buff *skb);
0058
0059 #else
0060
0061 static inline bool ipc_is_trace_channel(struct iosm_imem *ipc_mem, u16 chl_id)
0062 {
0063 return false;
0064 }
0065
0066 static inline void ipc_trace_port_rx(struct iosm_imem *ipc_imem,
0067 struct sk_buff *skb)
0068 {
0069 dev_kfree_skb(skb);
0070 }
0071
0072 #endif
0073
0074 #endif