summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-10-28 18:21:26 +0100
committerMarcel Holtmann <marcel@holtmann.org>2014-10-28 23:19:08 +0100
commite363eca386d0c28d8c6c4f176e1fa48b09a75315 (patch)
tree0e65a12c2987d3ef6f68d240288b1d5dfc764eab /net
parent5d65cae4bf6ffe29bba90f621e947922c5fb80db (diff)
mac802154: move local started handling
This patch removes the current handling of started boolean. This is actually dead code, because mac802154_netdev_register can't never be called before ieee802154_register_hw. This means that local->started is always be true when mac802154_netdev_register is called. Instead we using this now like mac80211 to indicate that an instance of sdata is running. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r--net/mac802154/driver-ops.h4
-rw-r--r--net/mac802154/ieee802154_i.h7
-rw-r--r--net/mac802154/main.c19
3 files changed, 4 insertions, 26 deletions
diff --git a/net/mac802154/driver-ops.h b/net/mac802154/driver-ops.h
index bf7980bbceff..bb3ee03c1669 100644
--- a/net/mac802154/driver-ops.h
+++ b/net/mac802154/driver-ops.h
@@ -29,6 +29,8 @@ static inline int drv_start(struct ieee802154_local *local)
{
might_sleep();
+ local->started = true;
+
return local->ops->start(&local->hw);
}
@@ -37,6 +39,8 @@ static inline void drv_stop(struct ieee802154_local *local)
might_sleep();
local->ops->stop(&local->hw);
+
+ local->started = false;
}
static inline int drv_set_channel(struct ieee802154_local *local,
diff --git a/net/mac802154/ieee802154_i.h b/net/mac802154/ieee802154_i.h
index f52afd4ced92..bf0b5f613c36 100644
--- a/net/mac802154/ieee802154_i.h
+++ b/net/mac802154/ieee802154_i.h
@@ -50,19 +50,12 @@ struct ieee802154_local {
*/
struct workqueue_struct *workqueue;
- /* SoftMAC device is registered and running. One can add subinterfaces.
- * This flag should be modified under slaves_mtx and RTNL, so you can
- * read them using any of protection methods.
- */
bool started;
struct tasklet_struct tasklet;
struct sk_buff_head skb_queue;
};
-#define MAC802154_DEVICE_STOPPED 0x00
-#define MAC802154_DEVICE_RUN 0x01
-
enum {
IEEE802154_RX_MSG = 1,
};
diff --git a/net/mac802154/main.c b/net/mac802154/main.c
index 7458f71c151c..21dcc56930d1 100644
--- a/net/mac802154/main.c
+++ b/net/mac802154/main.c
@@ -46,13 +46,6 @@ mac802154_netdev_register(struct wpan_phy *phy, struct net_device *dev)
SET_NETDEV_DEV(dev, &local->phy->dev);
- mutex_lock(&local->iflist_mtx);
- if (!local->started) {
- mutex_unlock(&local->iflist_mtx);
- return -ENODEV;
- }
- mutex_unlock(&local->iflist_mtx);
-
err = register_netdev(dev);
if (err < 0)
return err;
@@ -235,14 +228,6 @@ int ieee802154_register_hw(struct ieee802154_hw *hw)
if (rc < 0)
goto out_wq;
- rtnl_lock();
-
- mutex_lock(&local->iflist_mtx);
- local->started = MAC802154_DEVICE_RUN;
- mutex_unlock(&local->iflist_mtx);
-
- rtnl_unlock();
-
return 0;
out_wq:
@@ -263,10 +248,6 @@ void ieee802154_unregister_hw(struct ieee802154_hw *hw)
rtnl_lock();
- mutex_lock(&local->iflist_mtx);
- local->started = MAC802154_DEVICE_STOPPED;
- mutex_unlock(&local->iflist_mtx);
-
list_for_each_entry_safe(sdata, next, &local->interfaces, list) {
mutex_lock(&sdata->local->iflist_mtx);
list_del(&sdata->list);