mac802154: add synchronization handling
This patch adds synchronization handling in start and stop driver ops calls. This patch is mostly grab from mac80211 which was introduced by commit ea77f12f2cc0f31168f2e0259e65a22202ac4dc2 ("mac80211: remove tasklet enable/disable"). This is to be sure that we don't run into same issues. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
e363eca386
commit
538181a879
@ -30,6 +30,7 @@ static inline int drv_start(struct ieee802154_local *local)
|
||||
might_sleep();
|
||||
|
||||
local->started = true;
|
||||
smp_mb();
|
||||
|
||||
return local->ops->start(&local->hw);
|
||||
}
|
||||
@ -40,6 +41,12 @@ static inline void drv_stop(struct ieee802154_local *local)
|
||||
|
||||
local->ops->stop(&local->hw);
|
||||
|
||||
/* sync away all work on the tasklet before clearing started */
|
||||
tasklet_disable(&local->tasklet);
|
||||
tasklet_enable(&local->tasklet);
|
||||
|
||||
barrier();
|
||||
|
||||
local->started = false;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user