main.c (a543c5989d7711d984608f4e12a73218642ca865) main.c (5d65cae4bf6ffe29bba90f621e947922c5fb80db)
1/*
2 * Copyright (C) 2007-2012 Siemens AG
3 *
4 * Written by:
5 * Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
6 *
7 * Based on the code from 'linux-zigbee.sourceforge.net' project.
8 *

--- 33 unchanged lines hidden (view full) ---

42 sdata->dev = dev;
43 sdata->local = local;
44
45 dev->needed_headroom = local->hw.extra_tx_headroom;
46
47 SET_NETDEV_DEV(dev, &local->phy->dev);
48
49 mutex_lock(&local->iflist_mtx);
1/*
2 * Copyright (C) 2007-2012 Siemens AG
3 *
4 * Written by:
5 * Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
6 *
7 * Based on the code from 'linux-zigbee.sourceforge.net' project.
8 *

--- 33 unchanged lines hidden (view full) ---

42 sdata->dev = dev;
43 sdata->local = local;
44
45 dev->needed_headroom = local->hw.extra_tx_headroom;
46
47 SET_NETDEV_DEV(dev, &local->phy->dev);
48
49 mutex_lock(&local->iflist_mtx);
50 if (!local->running) {
50 if (!local->started) {
51 mutex_unlock(&local->iflist_mtx);
52 return -ENODEV;
53 }
54 mutex_unlock(&local->iflist_mtx);
55
56 err = register_netdev(dev);
57 if (err < 0)
58 return err;

--- 174 unchanged lines hidden (view full) ---

233
234 rc = wpan_phy_register(local->phy);
235 if (rc < 0)
236 goto out_wq;
237
238 rtnl_lock();
239
240 mutex_lock(&local->iflist_mtx);
51 mutex_unlock(&local->iflist_mtx);
52 return -ENODEV;
53 }
54 mutex_unlock(&local->iflist_mtx);
55
56 err = register_netdev(dev);
57 if (err < 0)
58 return err;

--- 174 unchanged lines hidden (view full) ---

233
234 rc = wpan_phy_register(local->phy);
235 if (rc < 0)
236 goto out_wq;
237
238 rtnl_lock();
239
240 mutex_lock(&local->iflist_mtx);
241 local->running = MAC802154_DEVICE_RUN;
241 local->started = MAC802154_DEVICE_RUN;
242 mutex_unlock(&local->iflist_mtx);
243
244 rtnl_unlock();
245
246 return 0;
247
248out_wq:
249 destroy_workqueue(local->workqueue);

--- 9 unchanged lines hidden (view full) ---

259
260 tasklet_kill(&local->tasklet);
261 flush_workqueue(local->workqueue);
262 destroy_workqueue(local->workqueue);
263
264 rtnl_lock();
265
266 mutex_lock(&local->iflist_mtx);
242 mutex_unlock(&local->iflist_mtx);
243
244 rtnl_unlock();
245
246 return 0;
247
248out_wq:
249 destroy_workqueue(local->workqueue);

--- 9 unchanged lines hidden (view full) ---

259
260 tasklet_kill(&local->tasklet);
261 flush_workqueue(local->workqueue);
262 destroy_workqueue(local->workqueue);
263
264 rtnl_lock();
265
266 mutex_lock(&local->iflist_mtx);
267 local->running = MAC802154_DEVICE_STOPPED;
267 local->started = MAC802154_DEVICE_STOPPED;
268 mutex_unlock(&local->iflist_mtx);
269
270 list_for_each_entry_safe(sdata, next, &local->interfaces, list) {
271 mutex_lock(&sdata->local->iflist_mtx);
272 list_del(&sdata->list);
273 mutex_unlock(&sdata->local->iflist_mtx);
274
275 unregister_netdevice(sdata->dev);
276 }
277
278 rtnl_unlock();
279
280 wpan_phy_unregister(local->phy);
281}
282EXPORT_SYMBOL(ieee802154_unregister_hw);
283
284MODULE_DESCRIPTION("IEEE 802.15.4 implementation");
285MODULE_LICENSE("GPL v2");
268 mutex_unlock(&local->iflist_mtx);
269
270 list_for_each_entry_safe(sdata, next, &local->interfaces, list) {
271 mutex_lock(&sdata->local->iflist_mtx);
272 list_del(&sdata->list);
273 mutex_unlock(&sdata->local->iflist_mtx);
274
275 unregister_netdevice(sdata->dev);
276 }
277
278 rtnl_unlock();
279
280 wpan_phy_unregister(local->phy);
281}
282EXPORT_SYMBOL(ieee802154_unregister_hw);
283
284MODULE_DESCRIPTION("IEEE 802.15.4 implementation");
285MODULE_LICENSE("GPL v2");