Skip to content

Commit

Permalink
ieee802154: Add trace events for rdev->ops
Browse files Browse the repository at this point in the history
Enabling tracing via

 echo 1 > /sys/kernel/debug/tracing/events/cfg802154/enable

enables event tracing like

 iwpan dev wpan0 set pan_id 0xbeef
 cat /sys/kernel/debug/tracing/trace
 # tracer: nop
 #
 # entries-in-buffer/entries-written: 2/2   #P:1
 #
 #                              _-----=> irqs-off
 #                             / _----=> need-resched
 #                            | / _---=> hardirq/softirq
 #                            || / _--=> preempt-depth
 #                            ||| /     delay
 #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
 #              | |       |   ||||       |         |
            iwpan-2663  [000] ....   170.369142: 802154_rdev_set_pan_id: phy0, wpan_dev(1), pan id: 0xbeef
            iwpan-2663  [000] ....   170.369177: 802154_rdev_return_int: phy0, returned: 0

Signed-off-by: Guido Günther <[email protected]>
Signed-off-by: Alexander Aring <[email protected]>
Signed-off-by: Marcel Holtmann <[email protected]>
  • Loading branch information
agx authored and holtmann committed Apr 30, 2015
1 parent 42fb23e commit 1cc800e
Show file tree
Hide file tree
Showing 4 changed files with 322 additions and 12 deletions.
4 changes: 3 additions & 1 deletion net/ieee802154/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ obj-$(CONFIG_IEEE802154_SOCKET) += ieee802154_socket.o
obj-y += 6lowpan/

ieee802154-y := netlink.o nl-mac.o nl-phy.o nl_policy.o core.o \
header_ops.o sysfs.o nl802154.o
header_ops.o sysfs.o nl802154.o trace.o
ieee802154_socket-y := socket.o

CFLAGS_trace.o := -I$(src)

ccflags-y += -D__CHECK_ENDIAN__
77 changes: 66 additions & 11 deletions net/ieee802154/rdev-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <net/cfg802154.h>

#include "core.h"
#include "trace.h"

static inline struct net_device *
rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
Expand All @@ -24,73 +25,127 @@ static inline int
rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name,
enum nl802154_iftype type, __le64 extended_addr)
{
return rdev->ops->add_virtual_intf(&rdev->wpan_phy, name, type,
int ret;

trace_802154_rdev_add_virtual_intf(&rdev->wpan_phy, name, type,
extended_addr);
ret = rdev->ops->add_virtual_intf(&rdev->wpan_phy, name, type,
extended_addr);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_del_virtual_intf(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev)
{
return rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev);
int ret;

trace_802154_rdev_del_virtual_intf(&rdev->wpan_phy, wpan_dev);
ret = rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_channel(struct cfg802154_registered_device *rdev, u8 page, u8 channel)
{
return rdev->ops->set_channel(&rdev->wpan_phy, page, channel);
int ret;

trace_802154_rdev_set_channel(&rdev->wpan_phy, page, channel);
ret = rdev->ops->set_channel(&rdev->wpan_phy, page, channel);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_cca_mode(struct cfg802154_registered_device *rdev,
const struct wpan_phy_cca *cca)
{
return rdev->ops->set_cca_mode(&rdev->wpan_phy, cca);
int ret;

trace_802154_rdev_set_cca_mode(&rdev->wpan_phy, cca);
ret = rdev->ops->set_cca_mode(&rdev->wpan_phy, cca);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_pan_id(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev, __le16 pan_id)
{
return rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
int ret;

trace_802154_rdev_set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
ret = rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_short_addr(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev, __le16 short_addr)
{
return rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
int ret;

trace_802154_rdev_set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
ret = rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_backoff_exponent(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev, u8 min_be, u8 max_be)
{
return rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
int ret;

trace_802154_rdev_set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
min_be, max_be);
ret = rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
min_be, max_be);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_max_csma_backoffs(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev, u8 max_csma_backoffs)
{
return rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev,
max_csma_backoffs);
int ret;

trace_802154_rdev_set_csma_backoffs(&rdev->wpan_phy, wpan_dev,
max_csma_backoffs);
ret = rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev,
max_csma_backoffs);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_max_frame_retries(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev, s8 max_frame_retries)
{
return rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
int ret;

trace_802154_rdev_set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
max_frame_retries);
ret = rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
max_frame_retries);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

static inline int
rdev_set_lbt_mode(struct cfg802154_registered_device *rdev,
struct wpan_dev *wpan_dev, bool mode)
{
return rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
int ret;

trace_802154_rdev_set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
ret = rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
return ret;
}

#endif /* __CFG802154_RDEV_OPS */
7 changes: 7 additions & 0 deletions net/ieee802154/trace.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include <linux/module.h>

#ifndef __CHECKER__
#define CREATE_TRACE_POINTS
#include "trace.h"

#endif
Loading

0 comments on commit 1cc800e

Please sign in to comment.