]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
mac802154: add llsec address update workaround
authorAlexander Aring <alex.aring@gmail.com>
Sun, 21 Jun 2015 14:45:20 +0000 (16:45 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 23 Jul 2015 15:10:48 +0000 (17:10 +0200)
This patch adds a workaround for using the new nl802154 netlink
interface with the old ieee802154 netlink interface togehter. The
nl802154 currently supports no access for llsec layer, currently there
are users outside which are using both interfaces at the same time. This
patch adds a necessary call when addresses are updated.

Reported-by: Simon Vincent <simon.vincent@xsilon.com>
Suggested-by: Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/mac802154/cfg.c
net/mac802154/ieee802154_i.h
net/mac802154/iface.c

index 317c4662e544679ab37dcc8cfa92fc8108c4820b..44db8613812e1e9c11fa4727fa0e0b7805ba6fbc 100644 (file)
@@ -145,13 +145,18 @@ static int
 ieee802154_set_pan_id(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
                      __le16 pan_id)
 {
+       int ret;
+
        ASSERT_RTNL();
 
        if (wpan_dev->pan_id == pan_id)
                return 0;
 
-       wpan_dev->pan_id = pan_id;
-       return 0;
+       ret = mac802154_wpan_update_llsec(wpan_dev->netdev);
+       if (!ret)
+               wpan_dev->pan_id = pan_id;
+
+       return ret;
 }
 
 static int
index 34755d5751a4681c65d09cb7487e5b98350cedfe..6d4f3ccc3c1c3dd562b3185451cc488cd4b7c027 100644 (file)
@@ -167,6 +167,8 @@ void mac802154_get_table(struct net_device *dev,
                         struct ieee802154_llsec_table **t);
 void mac802154_unlock_table(struct net_device *dev);
 
+int mac802154_wpan_update_llsec(struct net_device *dev);
+
 /* interface handling */
 int ieee802154_iface_init(void);
 void ieee802154_iface_exit(void);
index 8b698246a51b6d304c209442ca0ecd0c3e652c79..4760368a34937f8fcb49b7f1ca911dae36c4c8fb 100644 (file)
@@ -30,7 +30,7 @@
 #include "ieee802154_i.h"
 #include "driver-ops.h"
 
-static int mac802154_wpan_update_llsec(struct net_device *dev)
+int mac802154_wpan_update_llsec(struct net_device *dev)
 {
        struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
        struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev);
@@ -471,6 +471,7 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
                       enum nl802154_iftype type)
 {
        struct wpan_dev *wpan_dev = &sdata->wpan_dev;
+       int ret;
        u8 tmp;
 
        /* set some type-dependent values */
@@ -505,6 +506,10 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
                mutex_init(&sdata->sec_mtx);
 
                mac802154_llsec_init(&sdata->sec);
+               ret = mac802154_wpan_update_llsec(sdata->dev);
+               if (ret < 0)
+                       return ret;
+
                break;
        case NL802154_IFTYPE_MONITOR:
                sdata->dev->destructor = free_netdev;