summaryrefslogtreecommitdiffstats
path: root/net/mac802154/iface.c
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-11-02 04:18:41 +0100
committerMarcel Holtmann <marcel@holtmann.org>2014-11-02 04:51:07 +0100
commit776e59de46b5db368e1bd0a4ec5c4feaa740a3d1 (patch)
treef8ca06e1d42c5fe8848fa977ffa785086f4fdb51 /net/mac802154/iface.c
parentab24f50f2a3e3f6a38b4852530534aa99d86b4d1 (diff)
downloadlinux-776e59de46b5db368e1bd0a4ec5c4feaa740a3d1.tar.bz2
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>
Diffstat (limited to 'net/mac802154/iface.c')
-rw-r--r--net/mac802154/iface.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index f7a6f83301e2..a509a7151be9 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -110,6 +110,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
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 @@ static int mac802154_wpan_mac_addr(struct net_device *dev, void *p)
/* 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 @@ static int mac802154_wpan_open(struct net_device *dev)
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)