Staging: batman-adv: Introduce update_primary_addr to update mac address
authorMarek Lindner <lindner_marek@yahoo.de>
Sat, 18 Sep 2010 19:01:22 +0000 (21:01 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 20 Sep 2010 23:29:51 +0000 (16:29 -0700)
set_primary_if is currently misused to update the mac address in vis
packets. This unneeded and introduces overhead due to other operations
which must be done when updating the primary interface.

Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/batman-adv/hard-interface.c

index a9d6f1d3a6b42f9a3365aca6a0a250b5f4f4b2ef..7b77cf2c1bbdb965fa3c9615b516b16db04f94a7 100644 (file)
@@ -106,11 +106,22 @@ out:
        return batman_if;
 }
 
+static void update_primary_addr(struct bat_priv *bat_priv)
+{
+       struct vis_packet *vis_packet;
+
+       vis_packet = (struct vis_packet *)
+                               bat_priv->my_vis_info->skb_packet->data;
+       memcpy(vis_packet->vis_orig,
+              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
+       memcpy(vis_packet->sender_orig,
+              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
+}
+
 static void set_primary_if(struct bat_priv *bat_priv,
                           struct batman_if *batman_if)
 {
        struct batman_packet *batman_packet;
-       struct vis_packet *vis_packet;
        struct batman_if *old_if;
 
        if (batman_if)
@@ -129,12 +140,7 @@ static void set_primary_if(struct bat_priv *bat_priv,
        batman_packet->flags = PRIMARIES_FIRST_HOP;
        batman_packet->ttl = TTL;
 
-       vis_packet = (struct vis_packet *)
-                               bat_priv->my_vis_info->skb_packet->data;
-       memcpy(vis_packet->vis_orig,
-              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
-       memcpy(vis_packet->sender_orig,
-              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
+       update_primary_addr(bat_priv);
 
        /***
         * hacky trick to make sure that we send the HNA information via
@@ -516,7 +522,7 @@ static int hard_if_event(struct notifier_block *this,
 
                bat_priv = netdev_priv(batman_if->soft_iface);
                if (batman_if == bat_priv->primary_if)
-                       set_primary_if(bat_priv, batman_if);
+                       update_primary_addr(bat_priv);
                break;
        default:
                break;