Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 037dafa8 authored by Marek Lindner's avatar Marek Lindner Committed by Greg Kroah-Hartman
Browse files

Staging: batman-adv: Introduce update_primary_addr to update mac address



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: default avatarMarek Lindner <lindner_marek@yahoo.de>
Signed-off-by: default avatarSven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 7e8158b3
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -106,11 +106,22 @@ static struct batman_if *get_active_batman_if(struct net_device *soft_iface)
	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;