Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* Based on net/wireless/trace.h */
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  *          rdev->ops traces             *
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 /* !__RDEV_CFG802154_OPS_TRACE || TRACE_HEADER_MULTI_READ */
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>