netifd: fix WPA3 enterprise ciphers
[project/netifd.git] / vlandev.c
index 2f861922d791c9887f0600227f9c91d8e1df75ae..31b82b18335a26ef90d2cbf5f161d457a5fa043d 100644 (file)
--- a/vlandev.c
+++ b/vlandev.c
@@ -61,7 +61,7 @@ struct vlandev_device {
 };
 
 static int
-vlandev_hotplug_add(struct device *dev, struct device *member, struct blob_attr *vlan)
+__vlandev_hotplug_op(struct device *dev, struct device *member, struct blob_attr *vlan, bool add)
 {
        struct vlandev_device *mvdev = container_of(dev, struct vlandev_device, dev);
        void *a;
@@ -75,19 +75,22 @@ vlandev_hotplug_add(struct device *dev, struct device *member, struct blob_attr
        blobmsg_printf(&b, NULL, "%d", mvdev->config.vid);
        blobmsg_close_array(&b, a);
 
-       return dev->hotplug_ops->add(dev, member, blobmsg_data(b.head));
+       if (add)
+               return dev->hotplug_ops->add(dev, member, blobmsg_data(b.head));
+       else
+               return dev->hotplug_ops->del(dev, member, blobmsg_data(b.head));
 }
 
 static int
-vlandev_hotplug_del(struct device *dev, struct device *member)
+vlandev_hotplug_add(struct device *dev, struct device *member, struct blob_attr *vlan)
 {
-       struct vlandev_device *mvdev = container_of(dev, struct vlandev_device, dev);
-
-       dev = mvdev->parent.dev;
-       if (!dev || !dev->hotplug_ops)
-               return UBUS_STATUS_NOT_SUPPORTED;
+       return __vlandev_hotplug_op(dev, member, vlan, true);
+}
 
-       return dev->hotplug_ops->del(dev, member);
+static int
+vlandev_hotplug_del(struct device *dev, struct device *member, struct blob_attr *vlan)
+{
+       return __vlandev_hotplug_op(dev, member, vlan, false);
 }
 
 static int
@@ -112,7 +115,7 @@ static void vlandev_hotplug_check(struct vlandev_device *mvdev)
        struct device *dev = mvdev->parent.dev;
 
        if (!dev || !dev->hotplug_ops || avl_is_empty(&dev->vlans.avl) ||
-               dev->type != &vlan8021q_device_type) {
+               mvdev->dev.type != &vlan8021q_device_type) {
                mvdev->dev.hotplug_ops = NULL;
                return;
        }