[PATCH wpan-next 00/11] ieee802154: Associations between devices

Miquel Raynal
2023-06-01T15:49:30Z

Hello,

Sorry for sending this so late I was a bit busy, but here is the next
step. I know there are a lot of patches in this series compared to the
previous ones but it was hard to make smaller. I actually split as much
as I could the commits so the review process should not be too
difficult, thanks to the relative shortness of each diff.

Now that we can discover our peer coordinators or make ourselves
dynamically discoverable, we may use the information about surrounding
devices to create PANs dynamically. This involves of course:
* Requesting an association to a coordinator, waiting for the response
* Sending a disassociation notification to a coordinator
* Receiving an association request when we are coordinator, answering
the request (for now all devices are accepted up to a limit, to be
refined)
* Sending a disassociation notification to a child
* Users may request the list of associated devices (the parent and the
children).

Here are a few example of userspace calls that can be made:
iwpan dev <dev> associate pan_id 2 coord $COORD
iwpan dev <dev> list_associations
iwpan dev <dev> disassociate ext_addr $COORD

I used a small using hwsim to scan for a coordinator, associate with
it, look at the associations on both sides, disassociate from it and
check the associations again:
./assoc-demo
*** Scan ***
PAN 0x0002 (on wpan1)
coordinator 0x060f3b35169a498f
page 0
channel 13
preamble code 0
mean prf 0
superframe spec. 0xcf11
LQI ff
*** End of scan ***
Associating wpan1 with coord0 0x060f3b35169a498f...
Dumping coord0 assoc:
child : 0x0b6f / 0xba7633ae47ccfb21
Dumping wpan1 assoc:
parent: 0xffff / 0x060f3b35169a498f
Disassociating from wpan1
Dumping coord0 assoc:
Dumping wpan1 assoc:

I could also successfully interact with a smaller device running Zephir,
using its command line interface to associate and then disassociate from
the Linux coordinator.

Thanks!
Miquèl

Miquel Raynal (11):
ieee802154: Let PAN IDs be reset
ieee802154: Internal PAN management
ieee802154: Add support for user association requests
mac802154: Handle associating
ieee802154: Add support for user disassociation requests
mac802154: Handle disassociations
mac802154: Handle association requests from peers
ieee802154: Add support for limiting the number of associated devices
mac802154: Follow the number of associated devices
mac802154: Handle disassociation notifications from peers
ieee802154: Give the user the association list

include/linux/ieee802154.h | 1 +
include/net/cfg802154.h | 70 ++++++
include/net/ieee802154_netdev.h | 60 +++++
include/net/nl802154.h | 22 +-
net/ieee802154/Makefile | 2 +-
net/ieee802154/core.c | 25 ++
net/ieee802154/nl802154.c | 229 +++++++++++++++++-
net/ieee802154/pan.c | 103 ++++++++
net/ieee802154/rdev-ops.h | 30 +++
net/ieee802154/trace.h | 38 +++
net/mac802154/cfg.c | 175 ++++++++++++++
net/mac802154/ieee802154_i.h | 27 +++
net/mac802154/main.c | 2 +
net/mac802154/rx.c | 25 ++
net/mac802154/scan.c | 400 ++++++++++++++++++++++++++++++++
15 files changed, 1196 insertions(+), 13 deletions(-)
create mode 100644 net/ieee802154/pan.c

--
2.34.1