Merge branch 'batman-adv/next' of git://git.open-mesh.org/ecsv/linux-merge
[linux-block.git] / net / batman-adv / hard-interface.c
index dfbfccc9fe4000152a52a18fefc4a3fd5acf1b80..abb490106f3bb0cd53dd3ff1ea245a4cd6246701 100644 (file)
@@ -46,7 +46,7 @@ void hardif_free_rcu(struct rcu_head *rcu)
        kfree(hard_iface);
 }
 
-struct hard_iface *hardif_get_by_netdev(struct net_device *net_dev)
+struct hard_iface *hardif_get_by_netdev(const struct net_device *net_dev)
 {
        struct hard_iface *hard_iface;
 
@@ -64,7 +64,7 @@ out:
        return hard_iface;
 }
 
-static int is_valid_iface(struct net_device *net_dev)
+static int is_valid_iface(const struct net_device *net_dev)
 {
        if (net_dev->flags & IFF_LOOPBACK)
                return 0;
@@ -86,7 +86,7 @@ static int is_valid_iface(struct net_device *net_dev)
        return 1;
 }
 
-static struct hard_iface *hardif_get_active(struct net_device *soft_iface)
+static struct hard_iface *hardif_get_active(const struct net_device *soft_iface)
 {
        struct hard_iface *hard_iface;
 
@@ -138,7 +138,7 @@ static void primary_if_select(struct bat_priv *bat_priv,
        if (new_hard_iface && !atomic_inc_not_zero(&new_hard_iface->refcount))
                new_hard_iface = NULL;
 
-       curr_hard_iface = bat_priv->primary_if;
+       curr_hard_iface = rcu_dereference_protected(bat_priv->primary_if, 1);
        rcu_assign_pointer(bat_priv->primary_if, new_hard_iface);
 
        if (curr_hard_iface)
@@ -160,7 +160,7 @@ static void primary_if_select(struct bat_priv *bat_priv,
        atomic_set(&bat_priv->tt_local_changed, 1);
 }
 
-static bool hardif_is_iface_up(struct hard_iface *hard_iface)
+static bool hardif_is_iface_up(const struct hard_iface *hard_iface)
 {
        if (hard_iface->net_dev->flags & IFF_UP)
                return true;
@@ -176,9 +176,9 @@ static void update_mac_addresses(struct hard_iface *hard_iface)
               hard_iface->net_dev->dev_addr, ETH_ALEN);
 }
 
-static void check_known_mac_addr(struct net_device *net_dev)
+static void check_known_mac_addr(const struct net_device *net_dev)
 {
-       struct hard_iface *hard_iface;
+       const struct hard_iface *hard_iface;
 
        rcu_read_lock();
        list_for_each_entry_rcu(hard_iface, &hardif_list, list) {
@@ -204,8 +204,8 @@ static void check_known_mac_addr(struct net_device *net_dev)
 
 int hardif_min_mtu(struct net_device *soft_iface)
 {
-       struct bat_priv *bat_priv = netdev_priv(soft_iface);
-       struct hard_iface *hard_iface;
+       const struct bat_priv *bat_priv = netdev_priv(soft_iface);
+       const struct hard_iface *hard_iface;
        /* allow big frames if all devices are capable to do so
         * (have MTU > 1500 + BAT_HEADER_LEN) */
        int min_mtu = ETH_DATA_LEN;
@@ -285,7 +285,8 @@ static void hardif_deactivate_interface(struct hard_iface *hard_iface)
        update_min_mtu(hard_iface->soft_iface);
 }
 
-int hardif_enable_interface(struct hard_iface *hard_iface, char *iface_name)
+int hardif_enable_interface(struct hard_iface *hard_iface,
+                           const char *iface_name)
 {
        struct bat_priv *bat_priv;
        struct batman_packet *batman_packet;
@@ -336,7 +337,7 @@ int hardif_enable_interface(struct hard_iface *hard_iface, char *iface_name)
        batman_packet = (struct batman_packet *)(hard_iface->packet_buff);
        batman_packet->packet_type = BAT_PACKET;
        batman_packet->version = COMPAT_VERSION;
-       batman_packet->flags = 0;
+       batman_packet->flags = NO_FLAGS;
        batman_packet->ttl = 2;
        batman_packet->tq = TQ_MAX_VALUE;
        batman_packet->num_tt = 0;
@@ -458,7 +459,7 @@ static struct hard_iface *hardif_add_interface(struct net_device *net_dev)
 
        dev_hold(net_dev);
 
-       hard_iface = kmalloc(sizeof(struct hard_iface), GFP_ATOMIC);
+       hard_iface = kmalloc(sizeof(*hard_iface), GFP_ATOMIC);
        if (!hard_iface) {
                pr_err("Can't add interface (%s): out of memory\n",
                       net_dev->name);
@@ -522,7 +523,7 @@ void hardif_remove_interfaces(void)
 static int hard_if_event(struct notifier_block *this,
                         unsigned long event, void *ptr)
 {
-       struct net_device *net_dev = (struct net_device *)ptr;
+       struct net_device *net_dev = ptr;
        struct hard_iface *hard_iface = hardif_get_by_netdev(net_dev);
        struct hard_iface *primary_if = NULL;
        struct bat_priv *bat_priv;
@@ -567,7 +568,7 @@ static int hard_if_event(struct notifier_block *this,
                break;
        default:
                break;
-       };
+       }
 
 hardif_put:
        hardif_free_ref(hard_iface);