mac802154: util: add stop_device utility function
authorAlexander Aring <alex.aring@gmail.com>
Wed, 24 Jun 2015 09:36:34 +0000 (11:36 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 23 Jul 2015 15:10:49 +0000 (17:10 +0200)
This patch adds ieee802154_stop_device for preparing a utility function
to stop the ieee802154 device.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/mac802154/ieee802154_i.h
net/mac802154/iface.c
net/mac802154/util.c

index ed8746334befa687764fa5575bff40a7c84901e1..04077830e88c090cb7872592257659ef70959a08 100644 (file)
@@ -176,5 +176,6 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name,
                  unsigned char name_assign_type, enum nl802154_iftype type,
                  __le64 extended_addr);
 void ieee802154_remove_interfaces(struct ieee802154_local *local);
+void ieee802154_stop_device(struct ieee802154_local *local);
 
 #endif /* __IEEE802154_I_H */
index 4760368a34937f8fcb49b7f1ca911dae36c4c8fb..416de903e46757cfead3fe54106efa07ce6e6245 100644 (file)
@@ -314,11 +314,8 @@ static int mac802154_slave_close(struct net_device *dev)
 
        clear_bit(SDATA_STATE_RUNNING, &sdata->state);
 
-       if (!local->open_count) {
-               flush_workqueue(local->workqueue);
-               hrtimer_cancel(&local->ifs_timer);
-               drv_stop(local);
-       }
+       if (!local->open_count)
+               ieee802154_stop_device(local);
 
        return 0;
 }
index 583435f3893037e45d4a5879b66b4cda3bb6f27f..f9fd0957ab67f256d10e80563bb68ce88334f911 100644 (file)
@@ -14,6 +14,7 @@
  */
 
 #include "ieee802154_i.h"
+#include "driver-ops.h"
 
 /* privid for wpan_phys to determine whether they belong to us or not */
 const void *const mac802154_wpan_phy_privid = &mac802154_wpan_phy_privid;
@@ -92,3 +93,10 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb,
        dev_consume_skb_any(skb);
 }
 EXPORT_SYMBOL(ieee802154_xmit_complete);
+
+void ieee802154_stop_device(struct ieee802154_local *local)
+{
+       flush_workqueue(local->workqueue);
+       hrtimer_cancel(&local->ifs_timer);
+       drv_stop(local);
+}