summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Aring2014-11-02 04:18:42 +0100
committerMarcel Holtmann2014-11-02 04:51:07 +0100
commit78b4bad16ec41e1d3d5575ff9aca29aab2f831bc (patch)
tree83eae03594371ff179fae59e589b34f923ca51e4
parentmac802154: set extended address filter on ifup (diff)
downloadkernel-qcow2-linux-78b4bad16ec41e1d3d5575ff9aca29aab2f831bc.tar.gz
kernel-qcow2-linux-78b4bad16ec41e1d3d5575ff9aca29aab2f831bc.tar.xz
kernel-qcow2-linux-78b4bad16ec41e1d3d5575ff9aca29aab2f831bc.zip
mac802154: set short address filter on ifup
This patch moves the setting of hardware short address filtering inside of interface up instead doing it it directly inside of netlink interface. The netlink call which can only be called when netif isn't running sets only the necessary short_addr value in sdata. After an interface up the address filter will be set with this value. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--net/mac802154/iface.c4
-rw-r--r--net/mac802154/mib.c6
2 files changed, 4 insertions, 6 deletions
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index a509a7151be9..1bae29dff082 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -208,6 +208,10 @@ static int mac802154_wpan_open(struct net_device *dev)
rc = drv_set_extended_addr(local, sdata->extended_addr);
if (rc < 0)
goto out;
+
+ rc = drv_set_short_addr(local, sdata->short_addr);
+ if (rc < 0)
+ goto out;
}
if (local->hw.flags & IEEE802154_HW_TXPOWER) {
diff --git a/net/mac802154/mib.c b/net/mac802154/mib.c
index cfd4f657a24e..755befde6a17 100644
--- a/net/mac802154/mib.c
+++ b/net/mac802154/mib.c
@@ -80,12 +80,6 @@ void mac802154_dev_set_short_addr(struct net_device *dev, __le16 val)
spin_lock_bh(&sdata->mib_lock);
sdata->short_addr = val;
spin_unlock_bh(&sdata->mib_lock);
-
- if ((sdata->local->ops->set_hw_addr_filt) &&
- (sdata->local->hw.hw_filt.short_addr != sdata->short_addr)) {
- sdata->local->hw.hw_filt.short_addr = sdata->short_addr;
- set_hw_addr_filt(dev, IEEE802154_AFILT_SADDR_CHANGED);
- }
}
__le16 mac802154_dev_get_short_addr(const struct net_device *dev)