aboutsummaryrefslogtreecommitdiff
path: root/net/ieee802154/trace.h
diff options
context:
space:
mode:
authorGravatar Miquel Raynal <miquel.raynal@bootlin.com> 2023-01-25 11:29:22 +0100
committerGravatar Stefan Schmidt <stefan@datenfreihafen.org> 2023-01-28 13:51:22 +0100
commit9bc114504b07207d671593f6f6d787d55dcf91bd (patch)
treeeb76a72a0c9d377b4e8db66e7ba64826cdc4f66a /net/ieee802154/trace.h
parentmac802154: Handle passive scanning (diff)
downloadlinux-9bc114504b07207d671593f6f6d787d55dcf91bd.tar.gz
linux-9bc114504b07207d671593f6f6d787d55dcf91bd.tar.bz2
linux-9bc114504b07207d671593f6f6d787d55dcf91bd.zip
ieee802154: Add support for user beaconing requests
Parse user requests for sending beacons, start sending beacons at a regular pace. If needed, the pace can be updated with a new request. The process can also be interrupted at any moment. The page and channel must be changed beforehands if needed. Interval orders above 14 are reserved to tell a device it must answer BEACON_REQ coming from another device as part of an active scan procedure and this is not yet supported. A netlink "beacon request" structure is created to list the requirements. Mac layers may now implement the ->send_beacons() and ->stop_beacons() hooks. Co-developed-by: David Girault <david.girault@qorvo.com> Signed-off-by: David Girault <david.girault@qorvo.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Acked-by: Alexander Aring <aahringo@redhat.com> Link: https://lore.kernel.org/r/20230125102923.135465-2-miquel.raynal@bootlin.com Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
Diffstat (limited to 'net/ieee802154/trace.h')
-rw-r--r--net/ieee802154/trace.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/net/ieee802154/trace.h b/net/ieee802154/trace.h
index e5405f737ded..e5d8439b9e45 100644
--- a/net/ieee802154/trace.h
+++ b/net/ieee802154/trace.h
@@ -315,6 +315,22 @@ TRACE_EVENT(802154_rdev_trigger_scan,
WPAN_PHY_PR_ARG, __entry->page, __entry->channels, __entry->duration)
);
+TRACE_EVENT(802154_rdev_send_beacons,
+ TP_PROTO(struct wpan_phy *wpan_phy,
+ struct cfg802154_beacon_request *request),
+ TP_ARGS(wpan_phy, request),
+ TP_STRUCT__entry(
+ WPAN_PHY_ENTRY
+ __field(u8, interval)
+ ),
+ TP_fast_assign(
+ WPAN_PHY_ASSIGN;
+ __entry->interval = request->interval;
+ ),
+ TP_printk(WPAN_PHY_PR_FMT ", sending beacons (interval order: %d)",
+ WPAN_PHY_PR_ARG, __entry->interval)
+);
+
DECLARE_EVENT_CLASS(802154_wdev_template,
TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev),
TP_ARGS(wpan_phy, wpan_dev),
@@ -335,6 +351,11 @@ DEFINE_EVENT(802154_wdev_template, 802154_rdev_abort_scan,
TP_ARGS(wpan_phy, wpan_dev)
);
+DEFINE_EVENT(802154_wdev_template, 802154_rdev_stop_beacons,
+ TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev),
+ TP_ARGS(wpan_phy, wpan_dev)
+);
+
TRACE_EVENT(802154_rdev_return_int,
TP_PROTO(struct wpan_phy *wpan_phy, int ret),
TP_ARGS(wpan_phy, ret),