diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-04-19 11:49:51 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-04-19 11:49:51 +0200 |
commit | b0720e584f750073a4bc81c889abdaf08983e0ce (patch) | |
tree | b8778455b5f5bade9750c6db18e5704b9e42e104 | |
parent | f7920a7e96e2a1424f69ed3f5ede723c0954b185 (diff) |
interface: allow an interface to specify device configs even when there are other interfaces attached to the same device
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r-- | device.h | 3 | ||||
-rw-r--r-- | interface.c | 4 |
2 files changed, 6 insertions, 1 deletions
@@ -21,6 +21,7 @@ struct device; struct device_user; struct device_hotplug_ops; +struct interface; typedef int (*device_state_cb)(struct device *, bool up); @@ -165,6 +166,8 @@ struct device { bool default_config; bool wireless; + struct interface *config_iface; + /* set interface up or down */ device_state_cb set_state; diff --git a/interface.c b/interface.c index 3281b70..ea018ad 100644 --- a/interface.c +++ b/interface.c @@ -525,9 +525,11 @@ interface_set_device_config(struct interface *iface, struct device *dev) if (!dev || !dev->default_config) return; - if (!iface->device_config && !dev->iface_config) + if (!iface->device_config && + (!dev->iface_config || dev->config_iface != iface)) return; + dev->config_iface = iface; dev->iface_config = iface->device_config; device_apply_config(dev, dev->type, iface->config); } |