Message ID | 20230922155029.592018-2-miquel.raynal@bootlin.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ieee802154: Associations between devices | expand |
Hi, On Fri, Sep 22, 2023 at 11:50 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > Soon association and disassociation will be implemented, which will > require to be able to either change the PAN ID from 0xFFFF to a real > value when association succeeded, or to reset the PAN ID to 0xFFFF upon > disassociation. Let's allow to do that manually for now. > ok. But keep in mind what happens when a device is associated and the user sets a short address manually to 0xFFFF? It should be a kind of forced mode of disassociation? - Alex
Hi Alexander, aahringo@redhat.com wrote on Sun, 24 Sep 2023 16:42:31 -0400: > Hi, > > On Fri, Sep 22, 2023 at 11:50 AM Miquel Raynal > <miquel.raynal@bootlin.com> wrote: > > > > Soon association and disassociation will be implemented, which will > > require to be able to either change the PAN ID from 0xFFFF to a real > > value when association succeeded, or to reset the PAN ID to 0xFFFF upon > > disassociation. Let's allow to do that manually for now. > > > > ok. But keep in mind what happens when a device is associated and the > user sets a short address manually to 0xFFFF? > > It should be a kind of forced mode of disassociation? I believe once you start interacting with other devices with proper associations, random user requests cannot all be addressed, in particular once you are officially associated with another device, you cannot change your own short address or PAN ID like that. So in the right next series (after this one) I have a couple of small additions through the tree to handle this kind of corner case. Here is how it will look like in nl802154.c: nl802154_set_short_addr(): /* The short address only has a meaning when part of a PAN, after a * proper association procedure. However, we want to still offer the * possibility to create static networks so changing the short address * is only allowed when not already associated to other devices with * the official handshake. */ if (cfg802154_device_is_associated(wpan_dev)) { NL_SET_ERR_MSG(info->extack, "Existing associations, changing short address forbidden"); return -EINVAL; } nl802154_set_pan_id(): /* Only allow changing the PAN ID when the device has no more * associations ongoing to avoid confusing peers. */ if (cfg802154_device_is_associated(wpan_dev)) { NL_SET_ERR_MSG(info->extack, "Existing associations, changing PAN ID forbidden"); return -EINVAL; } I did not want to bloat this series with too much corner case handling, so there are a couple of "misc additions" in the next series to handle exactly that. Thanks, Miquèl
diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c index d610c1886160..46ac6f599fe1 100644 --- a/net/ieee802154/nl802154.c +++ b/net/ieee802154/nl802154.c @@ -1087,16 +1087,6 @@ static int nl802154_set_pan_id(struct sk_buff *skb, struct genl_info *info) pan_id = nla_get_le16(info->attrs[NL802154_ATTR_PAN_ID]); - /* TODO - * I am not sure about to check here on broadcast pan_id. - * Broadcast is a valid setting, comment from 802.15.4: - * If this value is 0xffff, the device is not associated. - * - * This could useful to simple deassociate an device. - */ - if (pan_id == cpu_to_le16(IEEE802154_PAN_ID_BROADCAST)) - return -EINVAL; - return rdev_set_pan_id(rdev, wpan_dev, pan_id); }
Soon association and disassociation will be implemented, which will require to be able to either change the PAN ID from 0xFFFF to a real value when association succeeded, or to reset the PAN ID to 0xFFFF upon disassociation. Let's allow to do that manually for now. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- net/ieee802154/nl802154.c | 10 ---------- 1 file changed, 10 deletions(-)