mac802154: iface: fix hrtimer cancel on ifdown

The interframe spacing timer is a per phy definition and is part of a
ieee802154_local structure. If we have possible multiple interfaces
ifdown one interface then the timer should not be cancled. First if the
last interface is down and the receive handling is stopped we should be
sure that the interframe spacing timer isn't run anymore.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Alexander Aring 2015-06-13 22:15:51 +02:00 коммит произвёл Marcel Holtmann
Родитель 1bc1754e82
Коммит b4ee194441
1 изменённых файлов: 3 добавлений и 3 удалений

Просмотреть файл

@ -302,15 +302,15 @@ static int mac802154_slave_close(struct net_device *dev)
ASSERT_RTNL();
hrtimer_cancel(&local->ifs_timer);
netif_stop_queue(dev);
local->open_count--;
clear_bit(SDATA_STATE_RUNNING, &sdata->state);
if (!local->open_count)
if (!local->open_count) {
hrtimer_cancel(&local->ifs_timer);
drv_stop(local);
}
return 0;
}