diff options
author | Miquel Raynal <miquel.raynal@bootlin.com> | 2023-03-10 15:53:44 +0100 |
---|---|---|
committer | Stefan Schmidt <stefan@datenfreihafen.org> | 2023-03-23 21:51:13 +0100 |
commit | e2c3e6f53a7a8a00ffeed127cfd1b397c3b016f8 (patch) | |
tree | 534002dabb5ba732272d01c0fd41e10cbd0cd849 /net/ieee802154 | |
parent | b8866426411c34489b0265bf720b4d917c8d4795 (diff) | |
download | linux-e2c3e6f53a7a8a00ffeed127cfd1b397c3b016f8.tar.gz linux-e2c3e6f53a7a8a00ffeed127cfd1b397c3b016f8.tar.bz2 linux-e2c3e6f53a7a8a00ffeed127cfd1b397c3b016f8.zip |
mac802154: Handle active scanning
Active scan support is based on the current passive scan support,
cheered up with beacon requests sent after every channel change.
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/20230310145346.1397068-3-miquel.raynal@bootlin.com
Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
Diffstat (limited to 'net/ieee802154')
-rw-r--r-- | net/ieee802154/header_ops.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/net/ieee802154/header_ops.c b/net/ieee802154/header_ops.c index 35d384dfe29d..a5ff1017a4b2 100644 --- a/net/ieee802154/header_ops.c +++ b/net/ieee802154/header_ops.c @@ -120,6 +120,29 @@ ieee802154_hdr_push(struct sk_buff *skb, struct ieee802154_hdr *hdr) } EXPORT_SYMBOL_GPL(ieee802154_hdr_push); +int ieee802154_mac_cmd_push(struct sk_buff *skb, void *f, + const void *pl, unsigned int pl_len) +{ + struct ieee802154_mac_cmd_frame *frame = f; + struct ieee802154_mac_cmd_pl *mac_pl = &frame->mac_pl; + struct ieee802154_hdr *mhr = &frame->mhr; + int ret; + + skb_reserve(skb, sizeof(*mhr)); + ret = ieee802154_hdr_push(skb, mhr); + if (ret < 0) + return ret; + + skb_reset_mac_header(skb); + skb->mac_len = ret; + + skb_put_data(skb, mac_pl, sizeof(*mac_pl)); + skb_put_data(skb, pl, pl_len); + + return 0; +} +EXPORT_SYMBOL_GPL(ieee802154_mac_cmd_push); + int ieee802154_beacon_push(struct sk_buff *skb, struct ieee802154_beacon_frame *beacon) { |