Merge tag 'dmaengine-fix-4.5-rc1' of git://git.infradead.org/users/vkoul/slave-dma
[cascardo/linux.git] / net / batman-adv / sysfs.c
index 9de3c88..fe87777 100644 (file)
@@ -40,6 +40,7 @@
 #include "distributed-arp-table.h"
 #include "gateway_client.h"
 #include "gateway_common.h"
+#include "bridge_loop_avoidance.h"
 #include "hard-interface.h"
 #include "network-coding.h"
 #include "packet.h"
@@ -241,10 +242,13 @@ ssize_t batadv_show_vlan_##_name(struct kobject *kobj,                    \
 
 static int batadv_store_bool_attr(char *buff, size_t count,
                                  struct net_device *net_dev,
-                                 const char *attr_name, atomic_t *attr)
+                                 const char *attr_name, atomic_t *attr,
+                                 bool *changed)
 {
        int enabled = -1;
 
+       *changed = false;
+
        if (buff[count - 1] == '\n')
                buff[count - 1] = '\0';
 
@@ -271,6 +275,8 @@ static int batadv_store_bool_attr(char *buff, size_t count,
                    atomic_read(attr) == 1 ? "enabled" : "disabled",
                    enabled == 1 ? "enabled" : "disabled");
 
+       *changed = true;
+
        atomic_set(attr, (unsigned int)enabled);
        return count;
 }
@@ -281,11 +287,12 @@ __batadv_store_bool_attr(char *buff, size_t count,
                         struct attribute *attr,
                         atomic_t *attr_store, struct net_device *net_dev)
 {
+       bool changed;
        int ret;
 
        ret = batadv_store_bool_attr(buff, count, net_dev, attr->name,
-                                    attr_store);
-       if (post_func && ret)
+                                    attr_store, &changed);
+       if (post_func && changed)
                post_func(net_dev);
 
        return ret;
@@ -549,7 +556,8 @@ static ssize_t batadv_store_isolation_mark(struct kobject *kobj,
 BATADV_ATTR_SIF_BOOL(aggregated_ogms, S_IRUGO | S_IWUSR, NULL);
 BATADV_ATTR_SIF_BOOL(bonding, S_IRUGO | S_IWUSR, NULL);
 #ifdef CONFIG_BATMAN_ADV_BLA
-BATADV_ATTR_SIF_BOOL(bridge_loop_avoidance, S_IRUGO | S_IWUSR, NULL);
+BATADV_ATTR_SIF_BOOL(bridge_loop_avoidance, S_IRUGO | S_IWUSR,
+                    batadv_bla_status_update);
 #endif
 #ifdef CONFIG_BATMAN_ADV_DAT
 BATADV_ATTR_SIF_BOOL(distributed_arp_table, S_IRUGO | S_IWUSR,