mac802154: set extended address filter on ifup

This patch moves the setting of hardware extended address filtering
inside of interface up instead doing it directly inside of netlink interface.
Also we don't need to set the sdata extended attribute in netlink. This
is already done by ndo_set_mac_address of net_device_ops.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index f7a6f83..a509a71 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -110,6 +110,7 @@
 
 static int mac802154_wpan_mac_addr(struct net_device *dev, void *p)
 {
+	struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 	struct sockaddr *addr = p;
 
 	if (netif_running(dev))
@@ -117,7 +118,8 @@
 
 	/* FIXME: validate addr */
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
-	mac802154_dev_set_ieee_addr(dev);
+	sdata->extended_addr = ieee802154_netdev_to_extended_addr(dev->dev_addr);
+
 	return mac802154_wpan_update_llsec(dev);
 }
 
@@ -202,6 +204,12 @@
 			goto out;
 	}
 
+	if (local->hw.flags & IEEE802154_HW_AFILT) {
+		rc = drv_set_extended_addr(local, sdata->extended_addr);
+		if (rc < 0)
+			goto out;
+	}
+
 	if (local->hw.flags & IEEE802154_HW_TXPOWER) {
 		rc = drv_set_tx_power(local, sdata->mac_params.transmit_power);
 		if (rc < 0)