0001
0002
0003
0004 #undef TRACE_SYSTEM
0005 #define TRACE_SYSTEM cfg802154
0006
0007 #if !defined(__RDEV_CFG802154_OPS_TRACE) || defined(TRACE_HEADER_MULTI_READ)
0008 #define __RDEV_CFG802154_OPS_TRACE
0009
0010 #include <linux/tracepoint.h>
0011
0012 #include <net/cfg802154.h>
0013
0014 #define MAXNAME 32
0015 #define WPAN_PHY_ENTRY __array(char, wpan_phy_name, MAXNAME)
0016 #define WPAN_PHY_ASSIGN strlcpy(__entry->wpan_phy_name, \
0017 wpan_phy_name(wpan_phy), \
0018 MAXNAME)
0019 #define WPAN_PHY_PR_FMT "%s"
0020 #define WPAN_PHY_PR_ARG __entry->wpan_phy_name
0021
0022 #define WPAN_DEV_ENTRY __field(u32, identifier)
0023 #define WPAN_DEV_ASSIGN (__entry->identifier) = (!IS_ERR_OR_NULL(wpan_dev) \
0024 ? wpan_dev->identifier : 0)
0025 #define WPAN_DEV_PR_FMT "wpan_dev(%u)"
0026 #define WPAN_DEV_PR_ARG (__entry->identifier)
0027
0028 #define WPAN_CCA_ENTRY __field(enum nl802154_cca_modes, cca_mode) \
0029 __field(enum nl802154_cca_opts, cca_opt)
0030 #define WPAN_CCA_ASSIGN \
0031 do { \
0032 (__entry->cca_mode) = cca->mode; \
0033 (__entry->cca_opt) = cca->opt; \
0034 } while (0)
0035 #define WPAN_CCA_PR_FMT "cca_mode: %d, cca_opt: %d"
0036 #define WPAN_CCA_PR_ARG __entry->cca_mode, __entry->cca_opt
0037
0038 #define BOOL_TO_STR(bo) (bo) ? "true" : "false"
0039
0040
0041
0042
0043
0044 DECLARE_EVENT_CLASS(wpan_phy_only_evt,
0045 TP_PROTO(struct wpan_phy *wpan_phy),
0046 TP_ARGS(wpan_phy),
0047 TP_STRUCT__entry(
0048 WPAN_PHY_ENTRY
0049 ),
0050 TP_fast_assign(
0051 WPAN_PHY_ASSIGN;
0052 ),
0053 TP_printk(WPAN_PHY_PR_FMT, WPAN_PHY_PR_ARG)
0054 );
0055
0056 DEFINE_EVENT(wpan_phy_only_evt, 802154_rdev_suspend,
0057 TP_PROTO(struct wpan_phy *wpan_phy),
0058 TP_ARGS(wpan_phy)
0059 );
0060
0061 DEFINE_EVENT(wpan_phy_only_evt, 802154_rdev_resume,
0062 TP_PROTO(struct wpan_phy *wpan_phy),
0063 TP_ARGS(wpan_phy)
0064 );
0065
0066 TRACE_EVENT(802154_rdev_add_virtual_intf,
0067 TP_PROTO(struct wpan_phy *wpan_phy, char *name,
0068 enum nl802154_iftype type, __le64 extended_addr),
0069 TP_ARGS(wpan_phy, name, type, extended_addr),
0070 TP_STRUCT__entry(
0071 WPAN_PHY_ENTRY
0072 __string(vir_intf_name, name ? name : "<noname>")
0073 __field(enum nl802154_iftype, type)
0074 __field(__le64, extended_addr)
0075 ),
0076 TP_fast_assign(
0077 WPAN_PHY_ASSIGN;
0078 __assign_str(vir_intf_name, name ? name : "<noname>");
0079 __entry->type = type;
0080 __entry->extended_addr = extended_addr;
0081 ),
0082 TP_printk(WPAN_PHY_PR_FMT ", virtual intf name: %s, type: %d, extended addr: 0x%llx",
0083 WPAN_PHY_PR_ARG, __get_str(vir_intf_name), __entry->type,
0084 __le64_to_cpu(__entry->extended_addr))
0085 );
0086
0087 TRACE_EVENT(802154_rdev_del_virtual_intf,
0088 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev),
0089 TP_ARGS(wpan_phy, wpan_dev),
0090 TP_STRUCT__entry(
0091 WPAN_PHY_ENTRY
0092 WPAN_DEV_ENTRY
0093 ),
0094 TP_fast_assign(
0095 WPAN_PHY_ASSIGN;
0096 WPAN_DEV_ASSIGN;
0097 ),
0098 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT, WPAN_PHY_PR_ARG,
0099 WPAN_DEV_PR_ARG)
0100 );
0101
0102 TRACE_EVENT(802154_rdev_set_channel,
0103 TP_PROTO(struct wpan_phy *wpan_phy, u8 page, u8 channel),
0104 TP_ARGS(wpan_phy, page, channel),
0105 TP_STRUCT__entry(
0106 WPAN_PHY_ENTRY
0107 __field(u8, page)
0108 __field(u8, channel)
0109 ),
0110 TP_fast_assign(
0111 WPAN_PHY_ASSIGN;
0112 __entry->page = page;
0113 __entry->channel = channel;
0114 ),
0115 TP_printk(WPAN_PHY_PR_FMT ", page: %d, channel: %d", WPAN_PHY_PR_ARG,
0116 __entry->page, __entry->channel)
0117 );
0118
0119 TRACE_EVENT(802154_rdev_set_tx_power,
0120 TP_PROTO(struct wpan_phy *wpan_phy, s32 power),
0121 TP_ARGS(wpan_phy, power),
0122 TP_STRUCT__entry(
0123 WPAN_PHY_ENTRY
0124 __field(s32, power)
0125 ),
0126 TP_fast_assign(
0127 WPAN_PHY_ASSIGN;
0128 __entry->power = power;
0129 ),
0130 TP_printk(WPAN_PHY_PR_FMT ", mbm: %d", WPAN_PHY_PR_ARG,
0131 __entry->power)
0132 );
0133
0134 TRACE_EVENT(802154_rdev_set_cca_mode,
0135 TP_PROTO(struct wpan_phy *wpan_phy, const struct wpan_phy_cca *cca),
0136 TP_ARGS(wpan_phy, cca),
0137 TP_STRUCT__entry(
0138 WPAN_PHY_ENTRY
0139 WPAN_CCA_ENTRY
0140 ),
0141 TP_fast_assign(
0142 WPAN_PHY_ASSIGN;
0143 WPAN_CCA_ASSIGN;
0144 ),
0145 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_CCA_PR_FMT, WPAN_PHY_PR_ARG,
0146 WPAN_CCA_PR_ARG)
0147 );
0148
0149 TRACE_EVENT(802154_rdev_set_cca_ed_level,
0150 TP_PROTO(struct wpan_phy *wpan_phy, s32 ed_level),
0151 TP_ARGS(wpan_phy, ed_level),
0152 TP_STRUCT__entry(
0153 WPAN_PHY_ENTRY
0154 __field(s32, ed_level)
0155 ),
0156 TP_fast_assign(
0157 WPAN_PHY_ASSIGN;
0158 __entry->ed_level = ed_level;
0159 ),
0160 TP_printk(WPAN_PHY_PR_FMT ", ed level: %d", WPAN_PHY_PR_ARG,
0161 __entry->ed_level)
0162 );
0163
0164 DECLARE_EVENT_CLASS(802154_le16_template,
0165 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0166 __le16 le16arg),
0167 TP_ARGS(wpan_phy, wpan_dev, le16arg),
0168 TP_STRUCT__entry(
0169 WPAN_PHY_ENTRY
0170 WPAN_DEV_ENTRY
0171 __field(__le16, le16arg)
0172 ),
0173 TP_fast_assign(
0174 WPAN_PHY_ASSIGN;
0175 WPAN_DEV_ASSIGN;
0176 __entry->le16arg = le16arg;
0177 ),
0178 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT ", pan id: 0x%04x",
0179 WPAN_PHY_PR_ARG, WPAN_DEV_PR_ARG,
0180 __le16_to_cpu(__entry->le16arg))
0181 );
0182
0183 DEFINE_EVENT(802154_le16_template, 802154_rdev_set_pan_id,
0184 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0185 __le16 le16arg),
0186 TP_ARGS(wpan_phy, wpan_dev, le16arg)
0187 );
0188
0189 DEFINE_EVENT_PRINT(802154_le16_template, 802154_rdev_set_short_addr,
0190 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0191 __le16 le16arg),
0192 TP_ARGS(wpan_phy, wpan_dev, le16arg),
0193 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT ", short addr: 0x%04x",
0194 WPAN_PHY_PR_ARG, WPAN_DEV_PR_ARG,
0195 __le16_to_cpu(__entry->le16arg))
0196 );
0197
0198 TRACE_EVENT(802154_rdev_set_backoff_exponent,
0199 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0200 u8 min_be, u8 max_be),
0201 TP_ARGS(wpan_phy, wpan_dev, min_be, max_be),
0202 TP_STRUCT__entry(
0203 WPAN_PHY_ENTRY
0204 WPAN_DEV_ENTRY
0205 __field(u8, min_be)
0206 __field(u8, max_be)
0207 ),
0208 TP_fast_assign(
0209 WPAN_PHY_ASSIGN;
0210 WPAN_DEV_ASSIGN;
0211 __entry->min_be = min_be;
0212 __entry->max_be = max_be;
0213 ),
0214
0215 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
0216 ", min be: %d, max be: %d", WPAN_PHY_PR_ARG,
0217 WPAN_DEV_PR_ARG, __entry->min_be, __entry->max_be)
0218 );
0219
0220 TRACE_EVENT(802154_rdev_set_csma_backoffs,
0221 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0222 u8 max_csma_backoffs),
0223 TP_ARGS(wpan_phy, wpan_dev, max_csma_backoffs),
0224 TP_STRUCT__entry(
0225 WPAN_PHY_ENTRY
0226 WPAN_DEV_ENTRY
0227 __field(u8, max_csma_backoffs)
0228 ),
0229 TP_fast_assign(
0230 WPAN_PHY_ASSIGN;
0231 WPAN_DEV_ASSIGN;
0232 __entry->max_csma_backoffs = max_csma_backoffs;
0233 ),
0234
0235 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
0236 ", max csma backoffs: %d", WPAN_PHY_PR_ARG,
0237 WPAN_DEV_PR_ARG, __entry->max_csma_backoffs)
0238 );
0239
0240 TRACE_EVENT(802154_rdev_set_max_frame_retries,
0241 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0242 s8 max_frame_retries),
0243 TP_ARGS(wpan_phy, wpan_dev, max_frame_retries),
0244 TP_STRUCT__entry(
0245 WPAN_PHY_ENTRY
0246 WPAN_DEV_ENTRY
0247 __field(s8, max_frame_retries)
0248 ),
0249 TP_fast_assign(
0250 WPAN_PHY_ASSIGN;
0251 WPAN_DEV_ASSIGN;
0252 __entry->max_frame_retries = max_frame_retries;
0253 ),
0254
0255 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
0256 ", max frame retries: %d", WPAN_PHY_PR_ARG,
0257 WPAN_DEV_PR_ARG, __entry->max_frame_retries)
0258 );
0259
0260 TRACE_EVENT(802154_rdev_set_lbt_mode,
0261 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0262 bool mode),
0263 TP_ARGS(wpan_phy, wpan_dev, mode),
0264 TP_STRUCT__entry(
0265 WPAN_PHY_ENTRY
0266 WPAN_DEV_ENTRY
0267 __field(bool, mode)
0268 ),
0269 TP_fast_assign(
0270 WPAN_PHY_ASSIGN;
0271 WPAN_DEV_ASSIGN;
0272 __entry->mode = mode;
0273 ),
0274 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
0275 ", lbt mode: %s", WPAN_PHY_PR_ARG,
0276 WPAN_DEV_PR_ARG, BOOL_TO_STR(__entry->mode))
0277 );
0278
0279 TRACE_EVENT(802154_rdev_set_ackreq_default,
0280 TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
0281 bool ackreq),
0282 TP_ARGS(wpan_phy, wpan_dev, ackreq),
0283 TP_STRUCT__entry(
0284 WPAN_PHY_ENTRY
0285 WPAN_DEV_ENTRY
0286 __field(bool, ackreq)
0287 ),
0288 TP_fast_assign(
0289 WPAN_PHY_ASSIGN;
0290 WPAN_DEV_ASSIGN;
0291 __entry->ackreq = ackreq;
0292 ),
0293 TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
0294 ", ackreq default: %s", WPAN_PHY_PR_ARG,
0295 WPAN_DEV_PR_ARG, BOOL_TO_STR(__entry->ackreq))
0296 );
0297
0298 TRACE_EVENT(802154_rdev_return_int,
0299 TP_PROTO(struct wpan_phy *wpan_phy, int ret),
0300 TP_ARGS(wpan_phy, ret),
0301 TP_STRUCT__entry(
0302 WPAN_PHY_ENTRY
0303 __field(int, ret)
0304 ),
0305 TP_fast_assign(
0306 WPAN_PHY_ASSIGN;
0307 __entry->ret = ret;
0308 ),
0309 TP_printk(WPAN_PHY_PR_FMT ", returned: %d", WPAN_PHY_PR_ARG,
0310 __entry->ret)
0311 );
0312
0313 #endif
0314
0315 #undef TRACE_INCLUDE_PATH
0316 #define TRACE_INCLUDE_PATH .
0317 #undef TRACE_INCLUDE_FILE
0318 #define TRACE_INCLUDE_FILE trace
0319 #include <trace/define_trace.h>