summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2015-06-13 22:15:51 +0200
committerMarcel Holtmann <marcel@holtmann.org>2015-06-15 01:22:19 +0200
commitb4ee194441d7e4457c7bac6c2a5da8428974db5a (patch)
tree388fdab0b5d3f6b4087aa63241dec900c6e62381
parent1bc1754e82f03c2c29b6e39ee02af48fa3bdef23 (diff)
downloadop-kernel-dev-b4ee194441d7e4457c7bac6c2a5da8428974db5a.zip
op-kernel-dev-b4ee194441d7e4457c7bac6c2a5da8428974db5a.tar.gz
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>
-rw-r--r--net/mac802154/iface.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index e3d77b0..d804337 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -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;
}
OpenPOWER on IntegriCloud