|
@@ -206,9 +206,13 @@ static inline void lowpan_netlink_fini(void)
|
|
static int lowpan_device_event(struct notifier_block *unused,
|
|
static int lowpan_device_event(struct notifier_block *unused,
|
|
unsigned long event, void *ptr)
|
|
unsigned long event, void *ptr)
|
|
{
|
|
{
|
|
- struct net_device *wdev = netdev_notifier_info_to_dev(ptr);
|
|
|
|
|
|
+ struct net_device *ndev = netdev_notifier_info_to_dev(ptr);
|
|
|
|
+ struct wpan_dev *wpan_dev;
|
|
|
|
|
|
- if (wdev->type != ARPHRD_IEEE802154)
|
|
|
|
|
|
+ if (ndev->type != ARPHRD_IEEE802154)
|
|
|
|
+ return NOTIFY_DONE;
|
|
|
|
+ wpan_dev = ndev->ieee802154_ptr;
|
|
|
|
+ if (!wpan_dev)
|
|
return NOTIFY_DONE;
|
|
return NOTIFY_DONE;
|
|
|
|
|
|
switch (event) {
|
|
switch (event) {
|
|
@@ -217,8 +221,8 @@ static int lowpan_device_event(struct notifier_block *unused,
|
|
* also delete possible lowpan interfaces which belongs
|
|
* also delete possible lowpan interfaces which belongs
|
|
* to the wpan interface.
|
|
* to the wpan interface.
|
|
*/
|
|
*/
|
|
- if (wdev->ieee802154_ptr->lowpan_dev)
|
|
|
|
- lowpan_dellink(wdev->ieee802154_ptr->lowpan_dev, NULL);
|
|
|
|
|
|
+ if (wpan_dev->lowpan_dev)
|
|
|
|
+ lowpan_dellink(wpan_dev->lowpan_dev, NULL);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
return NOTIFY_DONE;
|
|
return NOTIFY_DONE;
|