OSDN Git Service

mac802154: move local started handling
authorAlexander Aring <alex.aring@gmail.com>
Tue, 28 Oct 2014 17:21:26 +0000 (18:21 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 28 Oct 2014 22:19:08 +0000 (23:19 +0100)
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>
net/mac802154/driver-ops.h
net/mac802154/ieee802154_i.h
net/mac802154/main.c

index bf7980b..bb3ee03 100644 (file)
@@ -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,
index f52afd4..bf0b5f6 100644 (file)
@@ -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,
 };
index 7458f71..21dcc56 100644 (file)
@@ -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);